summaryrefslogtreecommitdiffstats
path: root/freerdp/xrdp-freerdp.c
diff options
context:
space:
mode:
Diffstat (limited to 'freerdp/xrdp-freerdp.c')
-rw-r--r--freerdp/xrdp-freerdp.c1349
1 files changed, 689 insertions, 660 deletions
diff --git a/freerdp/xrdp-freerdp.c b/freerdp/xrdp-freerdp.c
index f7e7fd5e..5ee58800 100644
--- a/freerdp/xrdp-freerdp.c
+++ b/freerdp/xrdp-freerdp.c
@@ -1,24 +1,22 @@
-/*
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
- xrdp: A Remote Desktop Protocol server.
- Copyright (C) Jay Sorg 2010
-
- freerdp wrapper
-
-*/
+/**
+ * xrdp: A Remote Desktop Protocol server.
+ *
+ * Copyright (C) Jay Sorg 2004-2012
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * freerdp wrapper
+ */
#include "xrdp-freerdp.h"
#include "xrdp-color.h"
@@ -28,723 +26,744 @@
struct my_bitmap
{
- char* data;
- int width;
- int height;
- int bpp;
+ char *data;
+ int width;
+ int height;
+ int bpp;
};
struct my_cursor
{
- char* andmask;
- int andbpp;
- char* xormask;
- int xorbpp;
- int width;
- int height;
- int hotx;
- int hoty;
+ char *andmask;
+ int andbpp;
+ char *xormask;
+ int xorbpp;
+ int width;
+ int height;
+ int hotx;
+ int hoty;
};
/*****************************************************************************/
/* return error */
static int DEFAULT_CC
-lib_mod_start(struct mod* mod, int w, int h, int bpp)
-{
- LIB_DEBUG(mod, "in lib_mod_start");
- g_writeln("lib_mod_start: w %d h %d bpp %d", w, h, bpp);
- mod->width = w;
- mod->height = h;
- mod->bpp = bpp;
- if (bpp == 24)
- {
- mod->settings->server_depth = 32;
- }
- else
- {
- mod->settings->server_depth = mod->bpp;
- }
- mod->settings->width = mod->width;
- mod->settings->height = mod->height;
- LIB_DEBUG(mod, "out lib_mod_start");
- return 0;
+lib_mod_start(struct mod *mod, int w, int h, int bpp)
+{
+ LIB_DEBUG(mod, "in lib_mod_start");
+ g_writeln("lib_mod_start: w %d h %d bpp %d", w, h, bpp);
+ mod->width = w;
+ mod->height = h;
+ mod->bpp = bpp;
+
+ if (bpp == 24)
+ {
+ mod->settings->server_depth = 32;
+ }
+ else
+ {
+ mod->settings->server_depth = mod->bpp;
+ }
+
+ mod->settings->width = mod->width;
+ mod->settings->height = mod->height;
+ LIB_DEBUG(mod, "out lib_mod_start");
+ return 0;
}
/******************************************************************************/
/* return error */
static int DEFAULT_CC
-lib_mod_connect(struct mod* mod)
+lib_mod_connect(struct mod *mod)
{
- int code;
+ int code;
- LIB_DEBUG(mod, "in lib_mod_connect");
- code = mod->inst->rdp_connect(mod->inst);
- g_writeln("lib_mod_connect: code %d", code);
- LIB_DEBUG(mod, "out lib_mod_connect");
- return code;
+ LIB_DEBUG(mod, "in lib_mod_connect");
+ code = mod->inst->rdp_connect(mod->inst);
+ g_writeln("lib_mod_connect: code %d", code);
+ LIB_DEBUG(mod, "out lib_mod_connect");
+ return code;
}
/******************************************************************************/
/* return error */
static int DEFAULT_CC
-lib_mod_event(struct mod* mod, int msg, long param1, long param2,
+lib_mod_event(struct mod *mod, int msg, long param1, long param2,
long param3, long param4)
{
- LIB_DEBUG(mod, "in lib_mod_event");
- int ext;
-
- //g_writeln("%d %d %d %d %d", msg, param1, param2, param3, param4);
- switch (msg)
- {
- case 15:
- ext = param4 & 0x100 ? 1 : 0;
- mod->inst->rdp_send_input_scancode(mod->inst, 0, ext, param3);
- break;
- case 16:
- ext = param4 & 0x100 ? 1 : 0;
- mod->inst->rdp_send_input_scancode(mod->inst, 1, ext, param3);
- break;
- case 17:
- mod->inst->rdp_sync_input(mod->inst, param4);
- break;
- case 100:
- mod->inst->rdp_send_input_mouse(mod->inst, PTRFLAGS_MOVE,
- param1, param2);
- break;
- case 101:
- mod->inst->rdp_send_input_mouse(mod->inst, PTRFLAGS_BUTTON1,
- param1, param2);
- break;
- case 102:
- mod->inst->rdp_send_input_mouse(mod->inst,
- PTRFLAGS_BUTTON1 | PTRFLAGS_DOWN,
- param1, param2);
- break;
- case 103:
- mod->inst->rdp_send_input_mouse(mod->inst,
- PTRFLAGS_BUTTON2, param1, param2);
- break;
- case 104:
- mod->inst->rdp_send_input_mouse(mod->inst,
- PTRFLAGS_BUTTON2 | PTRFLAGS_DOWN,
- param1, param2);
- break;
- case 105:
- mod->inst->rdp_send_input_mouse(mod->inst,
- PTRFLAGS_BUTTON3, param1, param2);
- break;
- case 106:
- mod->inst->rdp_send_input_mouse(mod->inst,
- PTRFLAGS_BUTTON3 | PTRFLAGS_DOWN,
- param1, param2);
- break;
- case 107:
- mod->inst->rdp_send_input_mouse(mod->inst,
- PTRFLAGS_WHEEL | 0x0078, 0, 0);
- break;
- case 108:
- break;
- case 109:
- mod->inst->rdp_send_input_mouse(mod->inst,
- PTRFLAGS_WHEEL |
- PTRFLAGS_WHEEL_NEGATIVE | 0x0088, 0, 0);
- break;
- case 110:
- break;
- }
- LIB_DEBUG(mod, "out lib_mod_event");
- return 0;
+ LIB_DEBUG(mod, "in lib_mod_event");
+ int ext;
+
+ //g_writeln("%d %d %d %d %d", msg, param1, param2, param3, param4);
+ switch (msg)
+ {
+ case 15:
+ ext = param4 & 0x100 ? 1 : 0;
+ mod->inst->rdp_send_input_scancode(mod->inst, 0, ext, param3);
+ break;
+ case 16:
+ ext = param4 & 0x100 ? 1 : 0;
+ mod->inst->rdp_send_input_scancode(mod->inst, 1, ext, param3);
+ break;
+ case 17:
+ mod->inst->rdp_sync_input(mod->inst, param4);
+ break;
+ case 100:
+ mod->inst->rdp_send_input_mouse(mod->inst, PTRFLAGS_MOVE,
+ param1, param2);
+ break;
+ case 101:
+ mod->inst->rdp_send_input_mouse(mod->inst, PTRFLAGS_BUTTON1,
+ param1, param2);
+ break;
+ case 102:
+ mod->inst->rdp_send_input_mouse(mod->inst,
+ PTRFLAGS_BUTTON1 | PTRFLAGS_DOWN,
+ param1, param2);
+ break;
+ case 103:
+ mod->inst->rdp_send_input_mouse(mod->inst,
+ PTRFLAGS_BUTTON2, param1, param2);
+ break;
+ case 104:
+ mod->inst->rdp_send_input_mouse(mod->inst,
+ PTRFLAGS_BUTTON2 | PTRFLAGS_DOWN,
+ param1, param2);
+ break;
+ case 105:
+ mod->inst->rdp_send_input_mouse(mod->inst,
+ PTRFLAGS_BUTTON3, param1, param2);
+ break;
+ case 106:
+ mod->inst->rdp_send_input_mouse(mod->inst,
+ PTRFLAGS_BUTTON3 | PTRFLAGS_DOWN,
+ param1, param2);
+ break;
+ case 107:
+ mod->inst->rdp_send_input_mouse(mod->inst,
+ PTRFLAGS_WHEEL | 0x0078, 0, 0);
+ break;
+ case 108:
+ break;
+ case 109:
+ mod->inst->rdp_send_input_mouse(mod->inst,
+ PTRFLAGS_WHEEL |
+ PTRFLAGS_WHEEL_NEGATIVE | 0x0088, 0, 0);
+ break;
+ case 110:
+ break;
+ }
+
+ LIB_DEBUG(mod, "out lib_mod_event");
+ return 0;
}
/******************************************************************************/
/* return error */
static int DEFAULT_CC
-lib_mod_signal(struct mod* mod)
+lib_mod_signal(struct mod *mod)
{
- LIB_DEBUG(mod, "in lib_mod_signal");
- g_writeln("lib_mod_signal:");
- LIB_DEBUG(mod, "out lib_mod_signal");
- return 0;
+ LIB_DEBUG(mod, "in lib_mod_signal");
+ g_writeln("lib_mod_signal:");
+ LIB_DEBUG(mod, "out lib_mod_signal");
+ return 0;
}
/******************************************************************************/
/* return error */
static int DEFAULT_CC
-lib_mod_end(struct mod* mod)
+lib_mod_end(struct mod *mod)
{
- g_writeln("lib_mod_end:");
- return 0;
+ g_writeln("lib_mod_end:");
+ return 0;
}
/******************************************************************************/
/* return error */
static int DEFAULT_CC
-lib_mod_set_param(struct mod* mod, char* name, char* value)
-{
- g_writeln("lib_mod_set_param: name [%s] value [%s]", name, value);
- if (g_strcmp(name, "hostname") == 0)
- {
- g_strncpy(mod->settings->hostname, value, sizeof(mod->settings->hostname));
- }
- else if (g_strcmp(name, "ip") == 0)
- {
- g_strncpy(mod->settings->server, value, sizeof(mod->settings->server));
- }
- else if (g_strcmp(name, "port") == 0)
- {
- mod->settings->tcp_port_rdp = g_atoi(value);
- }
- else if (g_strcmp(name, "keylayout") == 0)
- {
- mod->settings->keyboard_layout = g_atoi(value);
- }
- else if (g_strcmp(name, "name") == 0)
- {
- }
- else if (g_strcmp(name, "lib") == 0)
- {
- }
- else
- {
- g_writeln("lib_mod_set_param: unknown name [%s] value [%s]", name, value);
- }
- return 0;
+lib_mod_set_param(struct mod *mod, char *name, char *value)
+{
+ g_writeln("lib_mod_set_param: name [%s] value [%s]", name, value);
+
+ if (g_strcmp(name, "hostname") == 0)
+ {
+ g_strncpy(mod->settings->hostname, value, sizeof(mod->settings->hostname));
+ }
+ else if (g_strcmp(name, "ip") == 0)
+ {
+ g_strncpy(mod->settings->server, value, sizeof(mod->settings->server));
+ }
+ else if (g_strcmp(name, "port") == 0)
+ {
+ mod->settings->tcp_port_rdp = g_atoi(value);
+ }
+ else if (g_strcmp(name, "keylayout") == 0)
+ {
+ mod->settings->keyboard_layout = g_atoi(value);
+ }
+ else if (g_strcmp(name, "name") == 0)
+ {
+ }
+ else if (g_strcmp(name, "lib") == 0)
+ {
+ }
+ else
+ {
+ g_writeln("lib_mod_set_param: unknown name [%s] value [%s]", name, value);
+ }
+
+ return 0;
}
/******************************************************************************/
static int DEFAULT_CC
-mod_session_change(struct mod* v, int a, int b)
+mod_session_change(struct mod *v, int a, int b)
{
- g_writeln("mod_session_change:");
- return 0;
+ g_writeln("mod_session_change:");
+ return 0;
}
/******************************************************************************/
static int DEFAULT_CC
-mod_get_wait_objs(struct mod* v, tbus* read_objs, int* rcount,
- tbus* write_objs, int* wcount, int* timeout)
+mod_get_wait_objs(struct mod *v, tbus *read_objs, int *rcount,
+ tbus *write_objs, int *wcount, int *timeout)
{
- void** rfds;
- void** wfds;
+ void **rfds;
+ void **wfds;
- rfds = (void**)read_objs;
- wfds = (void**)write_objs;
- return v->inst->rdp_get_fds(v->inst, rfds, rcount, wfds, wcount);
+ rfds = (void **)read_objs;
+ wfds = (void **)write_objs;
+ return v->inst->rdp_get_fds(v->inst, rfds, rcount, wfds, wcount);
}
/******************************************************************************/
static int DEFAULT_CC
-mod_check_wait_objs(struct mod* v)
+mod_check_wait_objs(struct mod *v)
{
- return v->inst->rdp_check_fds(v->inst);
+ return v->inst->rdp_check_fds(v->inst);
}
/******************************************************************************/
static void DEFAULT_CC
-ui_error(rdpInst* inst, const char* text)
+ui_error(rdpInst *inst, const char *text)
{
- g_writeln("ui_error: %s", text);
+ g_writeln("ui_error: %s", text);
}
/******************************************************************************/
static void DEFAULT_CC
-ui_warning(rdpInst* inst, const char* text)
+ui_warning(rdpInst *inst, const char *text)
{
- g_writeln("ui_warning: %s", text);
+ g_writeln("ui_warning: %s", text);
}
/******************************************************************************/
static void DEFAULT_CC
-ui_unimpl(rdpInst* inst, const char* text)
+ui_unimpl(rdpInst *inst, const char *text)
{
- g_writeln("ui_unimpl: %s", text);
+ g_writeln("ui_unimpl: %s", text);
}
/******************************************************************************/
static void DEFAULT_CC
-ui_begin_update(rdpInst* inst)
+ui_begin_update(rdpInst *inst)
{
- struct mod* mod;
+ struct mod *mod;
- mod = GET_MOD(inst);
- mod->server_begin_update(mod);
+ mod = GET_MOD(inst);
+ mod->server_begin_update(mod);
}
/******************************************************************************/
static void DEFAULT_CC
-ui_end_update(rdpInst* inst)
+ui_end_update(rdpInst *inst)
{
- struct mod* mod;
+ struct mod *mod;
- mod = GET_MOD(inst);
- mod->server_end_update(mod);
+ mod = GET_MOD(inst);
+ mod->server_end_update(mod);
}
/******************************************************************************/
static void DEFAULT_CC
-ui_desktop_save(rdpInst* inst, int offset, int x, int y,
+ui_desktop_save(rdpInst *inst, int offset, int x, int y,
int cx, int cy)
{
- g_writeln("ui_desktop_save:");
+ g_writeln("ui_desktop_save:");
}
/******************************************************************************/
static void DEFAULT_CC
-ui_desktop_restore(rdpInst* inst, int offset, int x, int y,
- int cx, int cy)
+ui_desktop_restore(rdpInst *inst, int offset, int x, int y,
+ int cx, int cy)
{
- g_writeln("ui_desktop_restore:");
+ g_writeln("ui_desktop_restore:");
}
/******************************************************************************/
static RD_HBITMAP DEFAULT_CC
-ui_create_bitmap(rdpInst* inst, int width, int height, uint8* data)
+ui_create_bitmap(rdpInst *inst, int width, int height, uint8 *data)
{
- struct my_bitmap* bm;
- struct mod* mod;
- int size;
- int bpp;
- char* bmpdata;
+ struct my_bitmap *bm;
+ struct mod *mod;
+ int size;
+ int bpp;
+ char *bmpdata;
+
+ mod = GET_MOD(inst);
+ bpp = mod->bpp == 24 ? 32 : mod->bpp;
+ bm = (struct my_bitmap *)g_malloc(sizeof(struct my_bitmap), 1);
+ bm->width = width;
+ bm->height = height;
+ bm->bpp = bpp;
+ bmpdata = convert_bitmap(mod->settings->server_depth, bpp,
+ data, width, height, mod->cmap);
+
+ if (bmpdata == (char *)data)
+ {
+ size = width * height * ((bpp + 7) / 8);
+ bm->data = (char *)g_malloc(size, 0);
+ g_memcpy(bm->data, bmpdata, size);
+ }
+ else
+ {
+ bm->data = bmpdata;
+ }
- mod = GET_MOD(inst);
- bpp = mod->bpp == 24 ? 32 : mod->bpp;
- bm = (struct my_bitmap*)g_malloc(sizeof(struct my_bitmap), 1);
- bm->width = width;
- bm->height = height;
- bm->bpp = bpp;
- bmpdata = convert_bitmap(mod->settings->server_depth, bpp,
- data, width, height, mod->cmap);
- if (bmpdata == (char*)data)
- {
- size = width * height * ((bpp + 7) / 8);
- bm->data = (char*)g_malloc(size, 0);
- g_memcpy(bm->data, bmpdata, size);
- }
- else
- {
- bm->data = bmpdata;
- }
- return bm;
+ return bm;
}
/******************************************************************************/
static void DEFAULT_CC
-ui_paint_bitmap(rdpInst* inst, int x, int y, int cx, int cy, int width,
- int height, uint8* data)
+ui_paint_bitmap(rdpInst *inst, int x, int y, int cx, int cy, int width,
+ int height, uint8 *data)
{
- struct mod* mod;
- char* bmpdata;
+ struct mod *mod;
+ char *bmpdata;
- mod = GET_MOD(inst);
- bmpdata = convert_bitmap(mod->settings->server_depth, mod->bpp,
- data, width, height, mod->cmap);
- if (bmpdata != 0)
- {
- mod->server_paint_rect(mod, x, y, cx, cy, bmpdata, width, height, 0, 0);
- }
- if (bmpdata != (char*)data)
- {
- g_free(bmpdata);
- }
+ mod = GET_MOD(inst);
+ bmpdata = convert_bitmap(mod->settings->server_depth, mod->bpp,
+ data, width, height, mod->cmap);
+
+ if (bmpdata != 0)
+ {
+ mod->server_paint_rect(mod, x, y, cx, cy, bmpdata, width, height, 0, 0);
+ }
+
+ if (bmpdata != (char *)data)
+ {
+ g_free(bmpdata);
+ }
}
/******************************************************************************/
static void DEFAULT_CC
-ui_destroy_bitmap(rdpInst* inst, RD_HBITMAP bmp)
+ui_destroy_bitmap(rdpInst *inst, RD_HBITMAP bmp)
{
- struct my_bitmap* bm;
+ struct my_bitmap *bm;
- bm = (struct my_bitmap*)bmp;
- g_free(bm->data);
- g_free(bm);
+ bm = (struct my_bitmap *)bmp;
+ g_free(bm->data);
+ g_free(bm);
}
/******************************************************************************/
static void DEFAULT_CC
-ui_line(rdpInst* inst, uint8 opcode, int startx, int starty, int endx,
- int endy, RD_PEN* pen)
+ui_line(rdpInst *inst, uint8 opcode, int startx, int starty, int endx,
+ int endy, RD_PEN *pen)
{
- g_writeln("ui_line:");
+ g_writeln("ui_line:");
}
/******************************************************************************/
static void DEFAULT_CC
-ui_rect(rdpInst* inst, int x, int y, int cx, int cy, uint32 color)
+ui_rect(rdpInst *inst, int x, int y, int cx, int cy, uint32 color)
{
- struct mod* mod;
+ struct mod *mod;
- mod = GET_MOD(inst);
- color = convert_color(mod->settings->server_depth, mod->bpp,
- color, mod->cmap);
- mod->server_set_fgcolor(mod, color);
- mod->server_fill_rect(mod, x, y, cx, cy);
+ mod = GET_MOD(inst);
+ color = convert_color(mod->settings->server_depth, mod->bpp,
+ color, mod->cmap);
+ mod->server_set_fgcolor(mod, color);
+ mod->server_fill_rect(mod, x, y, cx, cy);
}
/******************************************************************************/
static void DEFAULT_CC
-ui_polygon(rdpInst* inst, uint8 opcode, uint8 fillmode, RD_POINT* point,
- int npoints, RD_BRUSH* brush, uint32 bgcolor, uint32 fgcolor)
+ui_polygon(rdpInst *inst, uint8 opcode, uint8 fillmode, RD_POINT *point,
+ int npoints, RD_BRUSH *brush, uint32 bgcolor, uint32 fgcolor)
{
- g_writeln("ui_polygon:");
+ g_writeln("ui_polygon:");
}
/******************************************************************************/
static void DEFAULT_CC
-ui_polyline(rdpInst* inst, uint8 opcode, RD_POINT* points, int npoints,
- RD_PEN* pen)
+ui_polyline(rdpInst *inst, uint8 opcode, RD_POINT *points, int npoints,
+ RD_PEN *pen)
{
- g_writeln("ui_polyline:");
+ g_writeln("ui_polyline:");
}
/******************************************************************************/
static void DEFAULT_CC
-ui_ellipse(rdpInst* inst, uint8 opcode, uint8 fillmode, int x, int y,
- int cx, int cy, RD_BRUSH* brush, uint32 bgcolor, uint32 fgcolor)
+ui_ellipse(rdpInst *inst, uint8 opcode, uint8 fillmode, int x, int y,
+ int cx, int cy, RD_BRUSH *brush, uint32 bgcolor, uint32 fgcolor)
{
- g_writeln("ui_ellipse:");
+ g_writeln("ui_ellipse:");
}
/******************************************************************************/
static void DEFAULT_CC
-ui_add_char(rdpInst * inst, uint8 font, uint16 character, sint16 offset,
- sint16 baseline, uint16 width, uint16 height, uint8 * data)
+ui_add_char(rdpInst *inst, uint8 font, uint16 character, sint16 offset,
+ sint16 baseline, uint16 width, uint16 height, uint8 *data)
{
- struct mod* mod;
+ struct mod *mod;
- //g_writeln("ui_add_char:");
- mod = GET_MOD(inst);
- mod->server_add_char(mod, font, character, offset, baseline,
- width, height, (char*)data);
+ //g_writeln("ui_add_char:");
+ mod = GET_MOD(inst);
+ mod->server_add_char(mod, font, character, offset, baseline,
+ width, height, (char *)data);
}
/******************************************************************************/
static void DEFAULT_CC
-ui_draw_text(rdpInst* inst, uint8 font, uint8 flags,
+ui_draw_text(rdpInst *inst, uint8 font, uint8 flags,
uint8 opcode, int mixmode,
int x, int y, int clipx, int clipy, int clipcx, int clipcy,
- int boxx, int boxy, int boxcx, int boxcy, RD_BRUSH * brush,
- uint32 bgcolor, uint32 fgcolor, uint8 * text, uint8 length)
+ int boxx, int boxy, int boxcx, int boxcy, RD_BRUSH *brush,
+ uint32 bgcolor, uint32 fgcolor, uint8 *text, uint8 length)
{
- struct mod* mod;
-
- //g_writeln("ui_draw_text: flags %d mixmode %d x %d y %d", flags, mixmode, x, y);
- //g_writeln("%d %d %d %d %d %d %d %d", clipx, clipy, clipcx, clipcy, boxx, boxy, boxcx, boxcy);
- mod = GET_MOD(inst);
- fgcolor = convert_color(mod->settings->server_depth, mod->bpp,
- fgcolor, mod->cmap);
- mod->server_set_fgcolor(mod, fgcolor);
- bgcolor = convert_color(mod->settings->server_depth, mod->bpp,
- bgcolor, mod->cmap);
- mod->server_set_bgcolor(mod, bgcolor);
- mod->server_draw_text(mod, font, flags, mixmode,
- clipx, clipy, clipx + clipcx, clipy + clipcy,
- boxx, boxy, boxx + boxcx, boxy + boxcy, x, y,
- (char*)text, length);
+ struct mod *mod;
+
+ //g_writeln("ui_draw_text: flags %d mixmode %d x %d y %d", flags, mixmode, x, y);
+ //g_writeln("%d %d %d %d %d %d %d %d", clipx, clipy, clipcx, clipcy, boxx, boxy, boxcx, boxcy);
+ mod = GET_MOD(inst);
+ fgcolor = convert_color(mod->settings->server_depth, mod->bpp,
+ fgcolor, mod->cmap);
+ mod->server_set_fgcolor(mod, fgcolor);
+ bgcolor = convert_color(mod->settings->server_depth, mod->bpp,
+ bgcolor, mod->cmap);
+ mod->server_set_bgcolor(mod, bgcolor);
+ mod->server_draw_text(mod, font, flags, mixmode,
+ clipx, clipy, clipx + clipcx, clipy + clipcy,
+ boxx, boxy, boxx + boxcx, boxy + boxcy, x, y,
+ (char *)text, length);
}
/******************************************************************************/
static void DEFAULT_CC
-ui_start_draw_glyphs(rdpInst* inst, uint32 bgcolor, uint32 fgcolor)
+ui_start_draw_glyphs(rdpInst *inst, uint32 bgcolor, uint32 fgcolor)
{
- g_writeln("ui_start_draw_glyphs:");
+ g_writeln("ui_start_draw_glyphs:");
}
/******************************************************************************/
static void DEFAULT_CC
-ui_draw_glyph(rdpInst* inst, int x, int y, int cx, int cy,
- RD_HGLYPH glyph)
+ui_draw_glyph(rdpInst *inst, int x, int y, int cx, int cy,
+ RD_HGLYPH glyph)
{
- g_writeln("ui_draw_glyph:");
+ g_writeln("ui_draw_glyph:");
}
/******************************************************************************/
static void DEFAULT_CC
-ui_end_draw_glyphs(rdpInst* inst, int x, int y, int cx, int cy)
+ui_end_draw_glyphs(rdpInst *inst, int x, int y, int cx, int cy)
{
- g_writeln("ui_end_draw_glyphs:");
+ g_writeln("ui_end_draw_glyphs:");
}
/******************************************************************************/
static uint32 DEFAULT_CC
-ui_get_toggle_keys_state(rdpInst* inst)
+ui_get_toggle_keys_state(rdpInst *inst)
{
- g_writeln("ui_get_toggle_keys_state:");
- return 0;
+ g_writeln("ui_get_toggle_keys_state:");
+ return 0;
}
/******************************************************************************/
static void DEFAULT_CC
-ui_bell(rdpInst* inst)
+ui_bell(rdpInst *inst)
{
- g_writeln("ui_bell:");
+ g_writeln("ui_bell:");
}
/******************************************************************************/
static void DEFAULT_CC
-ui_destblt(rdpInst* inst, uint8 opcode, int x, int y, int cx, int cy)
+ui_destblt(rdpInst *inst, uint8 opcode, int x, int y, int cx, int cy)
{
- struct mod* mod;
+ struct mod *mod;
- g_writeln("ui_destblt:");
- mod = GET_MOD(inst);
- mod->server_set_opcode(mod, opcode);
- mod->server_fill_rect(mod, x, y, cx, cy);
- mod->server_set_opcode(mod, 0xcc);
+ g_writeln("ui_destblt:");
+ mod = GET_MOD(inst);
+ mod->server_set_opcode(mod, opcode);
+ mod->server_fill_rect(mod, x, y, cx, cy);
+ mod->server_set_opcode(mod, 0xcc);
}
/******************************************************************************/
static void DEFAULT_CC
-ui_patblt(rdpInst* inst, uint8 opcode, int x, int y, int cx, int cy,
- RD_BRUSH* brush, uint32 bgcolor, uint32 fgcolor)
+ui_patblt(rdpInst *inst, uint8 opcode, int x, int y, int cx, int cy,
+ RD_BRUSH *brush, uint32 bgcolor, uint32 fgcolor)
{
- struct mod* mod;
- uint8 idata[8];
- int index;
-
- mod = GET_MOD(inst);
- mod->server_set_opcode(mod, opcode);
- fgcolor = convert_color(mod->settings->server_depth, mod->bpp,
- fgcolor, mod->cmap);
- mod->server_set_fgcolor(mod, fgcolor);
- bgcolor = convert_color(mod->settings->server_depth, mod->bpp,
- bgcolor, mod->cmap);
- mod->server_set_bgcolor(mod, bgcolor);
- mod->server_set_mixmode(mod, 1);
- if (brush->bd != 0)
- {
- if (brush->bd->color_code == 1) /* 8x8 1 bpp */
+ struct mod *mod;
+ uint8 idata[8];
+ int index;
+
+ mod = GET_MOD(inst);
+ mod->server_set_opcode(mod, opcode);
+ fgcolor = convert_color(mod->settings->server_depth, mod->bpp,
+ fgcolor, mod->cmap);
+ mod->server_set_fgcolor(mod, fgcolor);
+ bgcolor = convert_color(mod->settings->server_depth, mod->bpp,
+ bgcolor, mod->cmap);
+ mod->server_set_bgcolor(mod, bgcolor);
+ mod->server_set_mixmode(mod, 1);
+
+ if (brush->bd != 0)
{
- for (index = 0; index < 8; index++)
- {
- idata[index] = ~(brush->bd->data[index]);
- }
- mod->server_set_brush(mod, brush->xorigin, brush->yorigin,
- brush->style, idata);
+ if (brush->bd->color_code == 1) /* 8x8 1 bpp */
+ {
+ for (index = 0; index < 8; index++)
+ {
+ idata[index] = ~(brush->bd->data[index]);
+ }
+
+ mod->server_set_brush(mod, brush->xorigin, brush->yorigin,
+ brush->style, idata);
+ }
+ else
+ {
+ g_writeln("ui_patblt: error color_code %d", brush->bd->color_code);
+ }
}
else
{
- g_writeln("ui_patblt: error color_code %d", brush->bd->color_code);
- }
- }
- else
- {
- for (index = 0; index < 8; index++)
- {
- idata[index] = ~(brush->pattern[index]);
+ for (index = 0; index < 8; index++)
+ {
+ idata[index] = ~(brush->pattern[index]);
+ }
+
+ mod->server_set_brush(mod, brush->xorigin, brush->yorigin,
+ brush->style, idata);
}
- mod->server_set_brush(mod, brush->xorigin, brush->yorigin,
- brush->style, idata);
- }
- mod->server_fill_rect(mod, x, y, cx, cy);
- mod->server_set_opcode(mod, 0xcc);
- mod->server_set_mixmode(mod, 0);
+
+ mod->server_fill_rect(mod, x, y, cx, cy);
+ mod->server_set_opcode(mod, 0xcc);
+ mod->server_set_mixmode(mod, 0);
}
/******************************************************************************/
static void DEFAULT_CC
-ui_screenblt(rdpInst* inst, uint8 opcode, int x, int y, int cx, int cy,
+ui_screenblt(rdpInst *inst, uint8 opcode, int x, int y, int cx, int cy,
int srcx, int srcy)
{
- struct mod* mod;
+ struct mod *mod;
- mod = GET_MOD(inst);
- mod->server_set_opcode(mod, opcode);
- mod->server_screen_blt(mod, x, y, cx, cy, srcx, srcy);
- mod->server_set_opcode(mod, 0xcc);
+ mod = GET_MOD(inst);
+ mod->server_set_opcode(mod, opcode);
+ mod->server_screen_blt(mod, x, y, cx, cy, srcx, srcy);
+ mod->server_set_opcode(mod, 0xcc);
}
/******************************************************************************/
static void DEFAULT_CC
-ui_memblt(rdpInst* inst, uint8 opcode, int x, int y, int cx, int cy,
+ui_memblt(rdpInst *inst, uint8 opcode, int x, int y, int cx, int cy,
RD_HBITMAP src, int srcx, int srcy)
{
- struct my_bitmap* bitmap;
- struct mod* mod;
- char* bmpdata;
-
- mod = GET_MOD(inst);
- bitmap = (struct my_bitmap*)src;
- mod->server_set_opcode(mod, opcode);
- mod->server_paint_rect(mod, x, y, cx, cy, bitmap->data,
- bitmap->width, bitmap->height, srcx, srcy);
- mod->server_set_opcode(mod, 0xcc);
+ struct my_bitmap *bitmap;
+ struct mod *mod;
+ char *bmpdata;
+
+ mod = GET_MOD(inst);
+ bitmap = (struct my_bitmap *)src;
+ mod->server_set_opcode(mod, opcode);
+ mod->server_paint_rect(mod, x, y, cx, cy, bitmap->data,
+ bitmap->width, bitmap->height, srcx, srcy);
+ mod->server_set_opcode(mod, 0xcc);
}
/******************************************************************************/
static void DEFAULT_CC
-ui_triblt(rdpInst* inst, uint8 opcode, int x, int y, int cx, int cy,
- RD_HBITMAP src, int srcx, int srcy, RD_BRUSH* brush,
+ui_triblt(rdpInst *inst, uint8 opcode, int x, int y, int cx, int cy,
+ RD_HBITMAP src, int srcx, int srcy, RD_BRUSH *brush,
uint32 bgcolor, uint32 fgcolor)
{
- g_writeln("ui_triblt:");
+ g_writeln("ui_triblt:");
}
/******************************************************************************/
static RD_HGLYPH DEFAULT_CC
-ui_create_glyph(rdpInst* inst, int width, int height, uint8* data)
+ui_create_glyph(rdpInst *inst, int width, int height, uint8 *data)
{
- g_writeln("ui_create_glyph:");
- return 0;
+ g_writeln("ui_create_glyph:");
+ return 0;
}
/******************************************************************************/
static void DEFAULT_CC
-ui_destroy_glyph(rdpInst* inst, RD_HGLYPH glyph)
+ui_destroy_glyph(rdpInst *inst, RD_HGLYPH glyph)
{
- g_writeln("ui_destroy_glyph:");
+ g_writeln("ui_destroy_glyph:");
}
/******************************************************************************/
static int DEFAULT_CC
-ui_select(rdpInst* inst, int rdp_socket)
+ui_select(rdpInst *inst, int rdp_socket)
{
- return 1;
+ return 1;
}
/******************************************************************************/
static void DEFAULT_CC
-ui_set_clip(rdpInst* inst, int x, int y, int cx, int cy)
+ui_set_clip(rdpInst *inst, int x, int y, int cx, int cy)
{
- struct mod* mod;
+ struct mod *mod;
- mod = GET_MOD(inst);
- mod->server_set_clip(mod, x, y, cx, cy);
+ mod = GET_MOD(inst);
+ mod->server_set_clip(mod, x, y, cx, cy);
}
/******************************************************************************/
static void DEFAULT_CC
-ui_reset_clip(rdpInst* inst)
+ui_reset_clip(rdpInst *inst)
{
- struct mod* mod;
+ struct mod *mod;
- mod = GET_MOD(inst);
- mod->server_reset_clip(mod);
+ mod = GET_MOD(inst);
+ mod->server_reset_clip(mod);
}
/******************************************************************************/
static void DEFAULT_CC
-ui_resize_window(rdpInst* inst)
+ui_resize_window(rdpInst *inst)
{
- g_writeln("ui_resize_window:");
+ g_writeln("ui_resize_window:");
}
/******************************************************************************/
static void DEFAULT_CC
-ui_set_cursor(rdpInst* inst, RD_HCURSOR cursor)
+ui_set_cursor(rdpInst *inst, RD_HCURSOR cursor)
{
- struct mod* mod;
- struct my_cursor* cur;
+ struct mod *mod;
+ struct my_cursor *cur;
+
+ //g_writeln("ui_set_cursor:");
+ mod = GET_MOD(inst);
+ cur = (struct my_cursor *)cursor;
- //g_writeln("ui_set_cursor:");
- mod = GET_MOD(inst);
- cur = (struct my_cursor*)cursor;
- if (cur != 0)
- {
- mod->server_set_cursor(mod, cur->hotx, cur->hoty,
- cur->xormask, cur->andmask);
- }
- else
- {
- g_writeln("ui_set_cursor: nil cursor");
- }
+ if (cur != 0)
+ {
+ mod->server_set_cursor(mod, cur->hotx, cur->hoty,
+ cur->xormask, cur->andmask);
+ }
+ else
+ {
+ g_writeln("ui_set_cursor: nil cursor");
+ }
}
/******************************************************************************/
static void DEFAULT_CC
-ui_destroy_cursor(rdpInst* inst, RD_HCURSOR cursor)
+ui_destroy_cursor(rdpInst *inst, RD_HCURSOR cursor)
{
- struct my_cursor* cur;
+ struct my_cursor *cur;
- //g_writeln("ui_destroy_cursor:");
- cur = (struct my_cursor*)cursor;
- if (cur != 0)
- {
- g_free(cur->andmask);
- g_free(cur->xormask);
- }
- g_free(cur);
+ //g_writeln("ui_destroy_cursor:");
+ cur = (struct my_cursor *)cursor;
+
+ if (cur != 0)
+ {
+ g_free(cur->andmask);
+ g_free(cur->xormask);
+ }
+
+ g_free(cur);
}
#define RGB24(_r, _g, _b) \
- (_r << 16) | (_g << 8) | _b;
+ (_r << 16) | (_g << 8) | _b;
/******************************************************************************/
static int
-l_get_pixel(tui8* data, int x, int y, int width, int height, int bpp)
-{
- int start;
- int shift;
- tui16* src16;
- tui32* src32;
- int red, green, blue;
-
- switch (bpp)
- {
- case 1:
- width = (width + 7) / 8;
- start = (y * width) + x / 8;
- shift = x % 8;
- return (data[start] & (0x80 >> shift)) != 0;
- case 8:
- return data[y * width + x];
- case 15:
- case 16:
- src16 = (uint16*) data;
- return src16[y * width + x];
- case 24:
- data += y * width * 3;
- data += x * 3;
- red = data[0];
- green = data[1];
- blue = data[2];
- return RGB24(red, green, blue);
- case 32:
- src32 = (uint32*) data;
- return src32[y * width + x];
- default:
- g_writeln("l_get_pixel: unknown bpp %d", bpp);
- break;
- }
-
- return 0;
+l_get_pixel(tui8 *data, int x, int y, int width, int height, int bpp)
+{
+ int start;
+ int shift;
+ tui16 *src16;
+ tui32 *src32;
+ int red, green, blue;
+
+ switch (bpp)
+ {
+ case 1:
+ width = (width + 7) / 8;
+ start = (y * width) + x / 8;
+ shift = x % 8;
+ return (data[start] & (0x80 >> shift)) != 0;
+ case 8:
+ return data[y * width + x];
+ case 15:
+ case 16:
+ src16 = (uint16 *) data;
+ return src16[y * width + x];
+ case 24:
+ data += y * width * 3;
+ data += x * 3;
+ red = data[0];
+ green = data[1];
+ blue = data[2];
+ return RGB24(red, green, blue);
+ case 32:
+ src32 = (uint32 *) data;
+ return src32[y * width + x];
+ default:
+ g_writeln("l_get_pixel: unknown bpp %d", bpp);
+ break;
+ }
+
+ return 0;
}
/******************************************************************************/
static void
-l_set_pixel(tui8* data, int x, int y, int width, int height,
+l_set_pixel(tui8 *data, int x, int y, int width, int height,
int bpp, int pixel)
{
- int start;
- int shift;
- int* dst32;
- tui8* dst8;
-
- if (bpp == 1)
- {
- width = (width + 7) / 8;
- start = (y * width) + x / 8;
- shift = x % 8;
- if (pixel)
- data[start] = data[start] | (0x80 >> shift);
+ int start;
+ int shift;
+ int *dst32;
+ tui8 *dst8;
+
+ if (bpp == 1)
+ {
+ width = (width + 7) / 8;
+ start = (y * width) + x / 8;
+ shift = x % 8;
+
+ if (pixel)
+ {
+ data[start] = data[start] | (0x80 >> shift);
+ }
+ else
+ {
+ data[start] = data[start] & ~(0x80 >> shift);
+ }
+ }
+ else if (bpp == 24)
+ {
+ dst8 = data + (y * width + x) * 3;
+ *(dst8++) = (pixel >> 16) & 0xff;
+ *(dst8++) = (pixel >> 8) & 0xff;
+ *(dst8++) = (pixel >> 0) & 0xff;
+ }
+ else if (bpp == 32)
+ {
+ dst32 = (int *) data;
+ dst32[y * width + x] = pixel;
+ }
else
- data[start] = data[start] & ~(0x80 >> shift);
- }
- else if (bpp == 24)
- {
- dst8 = data + (y * width + x) * 3;
- *(dst8++) = (pixel >> 16) & 0xff;
- *(dst8++) = (pixel >> 8) & 0xff;
- *(dst8++) = (pixel >> 0) & 0xff;
- }
- else if (bpp == 32)
- {
- dst32 = (int*) data;
- dst32[y * width + x] = pixel;
- }
- else
- {
- g_writeln("l_set_pixel: unknown bpp %d", bpp);
- }
+ {
+ g_writeln("l_set_pixel: unknown bpp %d", bpp);
+ }
}
@@ -752,269 +771,279 @@ l_set_pixel(tui8* data, int x, int y, int width, int height,
/* andmask = mask = 32 * 32 / 8
xormask = data = 32 * 32 * 3 */
static RD_HCURSOR DEFAULT_CC
-ui_create_cursor(rdpInst* inst, unsigned int x, unsigned int y,
- int width, int height, uint8* andmask,
- uint8* xormask, int bpp)
-{
- struct mod* mod;
- struct my_cursor* cur;
- int i;
- int j;
- int jj;
- int apixel;
- int xpixel;
- char* dst;
-
- mod = GET_MOD(inst);
- g_writeln("ui_create_cursor: x %d y %d width %d height %d bpp %d",
- x, y, width, height, bpp);
- cur = (struct my_cursor*)g_malloc(sizeof(struct my_cursor), 1);
- cur->width = width;
- cur->height = height;
- cur->hotx = x;
- cur->hoty = y;
- cur->andmask = g_malloc(32 * 32 * 4, 1);
- cur->xormask = g_malloc(32 * 32 * 4, 1);
- for (j = 0; j < height; j++)
- {
- jj = (bpp != 1) ? j : (height - 1) - j;
- for (i = 0; i < width; i++)
+ui_create_cursor(rdpInst *inst, unsigned int x, unsigned int y,
+ int width, int height, uint8 *andmask,
+ uint8 *xormask, int bpp)
+{
+ struct mod *mod;
+ struct my_cursor *cur;
+ int i;
+ int j;
+ int jj;
+ int apixel;
+ int xpixel;
+ char *dst;
+
+ mod = GET_MOD(inst);
+ g_writeln("ui_create_cursor: x %d y %d width %d height %d bpp %d",
+ x, y, width, height, bpp);
+ cur = (struct my_cursor *)g_malloc(sizeof(struct my_cursor), 1);
+ cur->width = width;
+ cur->height = height;
+ cur->hotx = x;
+ cur->hoty = y;
+ cur->andmask = g_malloc(32 * 32 * 4, 1);
+ cur->xormask = g_malloc(32 * 32 * 4, 1);
+
+ for (j = 0; j < height; j++)
{
- apixel = l_get_pixel(andmask, i, jj, width, height, 1);
- xpixel = l_get_pixel(xormask, i, jj, width, height, bpp);
- xpixel = convert_color(bpp, 24, xpixel, mod->cmap);
- l_set_pixel(cur->andmask, i, j, width, height, 1, apixel);
- l_set_pixel(cur->xormask, i, j, width, height, 24, xpixel);
+ jj = (bpp != 1) ? j : (height - 1) - j;
+
+ for (i = 0; i < width; i++)
+ {
+ apixel = l_get_pixel(andmask, i, jj, width, height, 1);
+ xpixel = l_get_pixel(xormask, i, jj, width, height, bpp);
+ xpixel = convert_color(bpp, 24, xpixel, mod->cmap);
+ l_set_pixel(cur->andmask, i, j, width, height, 1, apixel);
+ l_set_pixel(cur->xormask, i, j, width, height, 24, xpixel);
+ }
}
- }
- return (RD_HCURSOR)cur;
+
+ return (RD_HCURSOR)cur;
}
/******************************************************************************/
static void DEFAULT_CC
-ui_set_null_cursor(rdpInst* inst)
+ui_set_null_cursor(rdpInst *inst)
{
- g_writeln("ui_set_null_cursor:");
+ g_writeln("ui_set_null_cursor:");
}
/******************************************************************************/
static void DEFAULT_CC
-ui_set_default_cursor(rdpInst* inst)
+ui_set_default_cursor(rdpInst *inst)
{
- g_writeln("ui_set_default_cursor:");
+ g_writeln("ui_set_default_cursor:");
}
/******************************************************************************/
static RD_HPALETTE DEFAULT_CC
-ui_create_palette(rdpInst* inst, RD_PALETTE* colors)
+ui_create_palette(rdpInst *inst, RD_PALETTE *colors)
{
- struct mod* mod;
- int index;
- int red;
- int green;
- int blue;
- int pixel;
- int count;
- int* cmap;
+ struct mod *mod;
+ int index;
+ int red;
+ int green;
+ int blue;
+ int pixel;
+ int count;
+ int *cmap;
+
+ mod = GET_MOD(inst);
+ g_writeln("ui_create_palette:");
+ count = 256;
+
+ if (count > colors->count)
+ {
+ count = colors->count;
+ }
+
+ cmap = (int *)g_malloc(256 * 4, 1);
- mod = GET_MOD(inst);
- g_writeln("ui_create_palette:");
- count = 256;
- if (count > colors->count)
- {
- count = colors->count;
- }
- cmap = (int*)g_malloc(256 * 4, 1);
- for (index = 0; index < count; index++)
- {
- red = colors->entries[index].red;
- green = colors->entries[index].green;
- blue = colors->entries[index].blue;
- pixel = COLOR24RGB(red, green, blue);
- cmap[index] = pixel;
- }
- return (RD_HPALETTE)cmap;
+ for (index = 0; index < count; index++)
+ {
+ red = colors->entries[index].red;
+ green = colors->entries[index].green;
+ blue = colors->entries[index].blue;
+ pixel = COLOR24RGB(red, green, blue);
+ cmap[index] = pixel;
+ }
+
+ return (RD_HPALETTE)cmap;
}
/******************************************************************************/
static void DEFAULT_CC
-ui_move_pointer(rdpInst* inst, int x, int y)
+ui_move_pointer(rdpInst *inst, int x, int y)
{
- g_writeln("ui_move_pointer:");
+ g_writeln("ui_move_pointer:");
}
/******************************************************************************/
static void DEFAULT_CC
-ui_set_palette(rdpInst* inst, RD_HPALETTE map)
+ui_set_palette(rdpInst *inst, RD_HPALETTE map)
{
- struct mod* mod;
+ struct mod *mod;
- mod = GET_MOD(inst);
- g_writeln("ui_set_palette:");
- g_memcpy(mod->cmap, map, 256 * 4);
- g_free(map);
+ mod = GET_MOD(inst);
+ g_writeln("ui_set_palette:");
+ g_memcpy(mod->cmap, map, 256 * 4);
+ g_free(map);
}
/******************************************************************************/
static RD_HBITMAP DEFAULT_CC
-ui_create_surface(rdpInst* inst, int width, int height, RD_HBITMAP old)
+ui_create_surface(rdpInst *inst, int width, int height, RD_HBITMAP old)
{
- g_writeln("ui_create_surface:");
- return 0;
+ g_writeln("ui_create_surface:");
+ return 0;
}
/******************************************************************************/
static void DEFAULT_CC
-ui_set_surface(rdpInst* inst, RD_HBITMAP surface)
+ui_set_surface(rdpInst *inst, RD_HBITMAP surface)
{
- g_writeln("ui_set_surface:");
+ g_writeln("ui_set_surface:");
}
/******************************************************************************/
static void DEFAULT_CC
-ui_destroy_surface(rdpInst* inst, RD_HBITMAP surface)
+ui_destroy_surface(rdpInst *inst, RD_HBITMAP surface)
{
- g_writeln("ui_destroy_surface:");
+ g_writeln("ui_destroy_surface:");
}
/******************************************************************************/
static void DEFAULT_CC
-ui_channel_data(rdpInst* inst, int chan_id, char* data, int data_size,
- int flags, int total_size)
+ui_channel_data(rdpInst *inst, int chan_id, char *data, int data_size,
+ int flags, int total_size)
{
- g_writeln("ui_channel_data:");
+ g_writeln("ui_channel_data:");
}
/******************************************************************************/
static RD_BOOL DEFAULT_CC
-ui_authenticate(rdpInst * inst)
+ui_authenticate(rdpInst *inst)
{
- return 1;
+ return 1;
}
/******************************************************************************/
static int DEFAULT_CC
-ui_decode(rdpInst * inst, uint8 * data, int data_size)
+ui_decode(rdpInst *inst, uint8 *data, int data_size)
{
- return 0;
+ return 0;
}
/******************************************************************************/
static RD_BOOL DEFAULT_CC
-ui_check_certificate(rdpInst * inst, const char * fingerprint,
- const char * subject, const char * issuer, RD_BOOL verified)
+ui_check_certificate(rdpInst *inst, const char *fingerprint,
+ const char *subject, const char *issuer, RD_BOOL verified)
{
- return 1;
+ return 1;
}
/******************************************************************************/
-struct mod* EXPORT_CC
+struct mod *EXPORT_CC
mod_init(void)
{
- struct mod* mod;
-
- //g_writeln("1");
- //freerdp_global_init();
- //g_writeln("2");
- mod = (struct mod*)g_malloc(sizeof(struct mod), 1);
- mod->size = sizeof(struct mod);
- mod->version = CURRENT_MOD_VER;
- mod->handle = (tbus)mod;
- mod->mod_connect = lib_mod_connect;
- mod->mod_start = lib_mod_start;
- mod->mod_event = lib_mod_event;
- mod->mod_signal = lib_mod_signal;
- mod->mod_end = lib_mod_end;
- mod->mod_set_param = lib_mod_set_param;
- mod->mod_session_change = mod_session_change;
- mod->mod_get_wait_objs = mod_get_wait_objs;
- mod->mod_check_wait_objs = mod_check_wait_objs;
- mod->settings = (struct rdp_set*)g_malloc(sizeof(struct rdp_set), 1);
-
- mod->settings->width = 1280;
- mod->settings->height = 1024;
- mod->settings->encryption = 1;
- mod->settings->rdp_security = 1;
- mod->settings->tls_security = 1;
- mod->settings->server_depth = 16;
- mod->settings->bitmap_cache = 1;
- mod->settings->bitmap_compression = 1;
- mod->settings->performanceflags =
- PERF_DISABLE_WALLPAPER | PERF_DISABLE_FULLWINDOWDRAG | PERF_DISABLE_MENUANIMATIONS;
- mod->settings->new_cursors = 1;
- mod->settings->rdp_version = 5;
- mod->settings->text_flags = 1;
-
- mod->inst = freerdp_new(mod->settings);
- if (mod->inst == 0)
- {
- return 0;
- }
- SET_MOD(mod->inst, mod);
- mod->inst->ui_error = ui_error;
- mod->inst->ui_warning = ui_warning;
- mod->inst->ui_unimpl = ui_unimpl;
- mod->inst->ui_begin_update = ui_begin_update;
- mod->inst->ui_end_update = ui_end_update;
- mod->inst->ui_desktop_save = ui_desktop_save;
- mod->inst->ui_desktop_restore = ui_desktop_restore;
- mod->inst->ui_create_bitmap = ui_create_bitmap;
- mod->inst->ui_paint_bitmap = ui_paint_bitmap;
- mod->inst->ui_destroy_bitmap = ui_destroy_bitmap;
- mod->inst->ui_line = ui_line;
- mod->inst->ui_rect = ui_rect;
- mod->inst->ui_polygon = ui_polygon;
- mod->inst->ui_polyline = ui_polyline;
- mod->inst->ui_ellipse = ui_ellipse;
- mod->inst->ui_add_char = ui_add_char;
- mod->inst->ui_draw_text = ui_draw_text;
- mod->inst->ui_start_draw_glyphs = ui_start_draw_glyphs;
- mod->inst->ui_draw_glyph = ui_draw_glyph;
- mod->inst->ui_end_draw_glyphs = ui_end_draw_glyphs;
- mod->inst->ui_get_toggle_keys_state = ui_get_toggle_keys_state;
- mod->inst->ui_bell = ui_bell;
- mod->inst->ui_destblt = ui_destblt;
- mod->inst->ui_patblt = ui_patblt;
- mod->inst->ui_screenblt = ui_screenblt;
- mod->inst->ui_memblt = ui_memblt;
- mod->inst->ui_triblt = ui_triblt;
- mod->inst->ui_create_glyph = ui_create_glyph;
- mod->inst->ui_destroy_glyph = ui_destroy_glyph;
- mod->inst->ui_select = ui_select;
- mod->inst->ui_set_clip = ui_set_clip;
- mod->inst->ui_reset_clip = ui_reset_clip;
- mod->inst->ui_resize_window = ui_resize_window;
- mod->inst->ui_set_cursor = ui_set_cursor;
- mod->inst->ui_destroy_cursor = ui_destroy_cursor;
- mod->inst->ui_create_cursor = ui_create_cursor;
- mod->inst->ui_set_null_cursor = ui_set_null_cursor;
- mod->inst->ui_set_default_cursor = ui_set_default_cursor;
- mod->inst->ui_create_palette = ui_create_palette;
- mod->inst->ui_move_pointer = ui_move_pointer;
- mod->inst->ui_set_palette = ui_set_palette;
- mod->inst->ui_create_surface = ui_create_surface;
- mod->inst->ui_set_surface = ui_set_surface;
- mod->inst->ui_destroy_surface = ui_destroy_surface;
- mod->inst->ui_channel_data = ui_channel_data;
-
- mod->inst->ui_authenticate = ui_authenticate;
- mod->inst->ui_decode = ui_decode;
- mod->inst->ui_check_certificate = ui_check_certificate;
-
- return mod;
+ struct mod *mod;
+
+ //g_writeln("1");
+ //freerdp_global_init();
+ //g_writeln("2");
+ mod = (struct mod *)g_malloc(sizeof(struct mod), 1);
+ mod->size = sizeof(struct mod);
+ mod->version = CURRENT_MOD_VER;
+ mod->handle = (tbus)mod;
+ mod->mod_connect = lib_mod_connect;
+ mod->mod_start = lib_mod_start;
+ mod->mod_event = lib_mod_event;
+ mod->mod_signal = lib_mod_signal;
+ mod->mod_end = lib_mod_end;
+ mod->mod_set_param = lib_mod_set_param;
+ mod->mod_session_change = mod_session_change;
+ mod->mod_get_wait_objs = mod_get_wait_objs;
+ mod->mod_check_wait_objs = mod_check_wait_objs;
+ mod->settings = (struct rdp_set *)g_malloc(sizeof(struct rdp_set), 1);
+
+ mod->settings->width = 1280;
+ mod->settings->height = 1024;
+ mod->settings->encryption = 1;
+ mod->settings->rdp_security = 1;
+ mod->settings->tls_security = 1;
+ mod->settings->server_depth = 16;
+ mod->settings->bitmap_cache = 1;
+ mod->settings->bitmap_compression = 1;
+ mod->settings->performanceflags =
+ PERF_DISABLE_WALLPAPER | PERF_DISABLE_FULLWINDOWDRAG | PERF_DISABLE_MENUANIMATIONS;
+ mod->settings->new_cursors = 1;
+ mod->settings->rdp_version = 5;
+ mod->settings->text_flags = 1;
+
+ mod->inst = freerdp_new(mod->settings);
+
+ if (mod->inst == 0)
+ {
+ return 0;
+ }
+
+ SET_MOD(mod->inst, mod);
+ mod->inst->ui_error = ui_error;
+ mod->inst->ui_warning = ui_warning;
+ mod->inst->ui_unimpl = ui_unimpl;
+ mod->inst->ui_begin_update = ui_begin_update;
+ mod->inst->ui_end_update = ui_end_update;
+ mod->inst->ui_desktop_save = ui_desktop_save;
+ mod->inst->ui_desktop_restore = ui_desktop_restore;
+ mod->inst->ui_create_bitmap = ui_create_bitmap;
+ mod->inst->ui_paint_bitmap = ui_paint_bitmap;
+ mod->inst->ui_destroy_bitmap = ui_destroy_bitmap;
+ mod->inst->ui_line = ui_line;
+ mod->inst->ui_rect = ui_rect;
+ mod->inst->ui_polygon = ui_polygon;
+ mod->inst->ui_polyline = ui_polyline;
+ mod->inst->ui_ellipse = ui_ellipse;
+ mod->inst->ui_add_char = ui_add_char;
+ mod->inst->ui_draw_text = ui_draw_text;
+ mod->inst->ui_start_draw_glyphs = ui_start_draw_glyphs;
+ mod->inst->ui_draw_glyph = ui_draw_glyph;
+ mod->inst->ui_end_draw_glyphs = ui_end_draw_glyphs;
+ mod->inst->ui_get_toggle_keys_state = ui_get_toggle_keys_state;
+ mod->inst->ui_bell = ui_bell;
+ mod->inst->ui_destblt = ui_destblt;
+ mod->inst->ui_patblt = ui_patblt;
+ mod->inst->ui_screenblt = ui_screenblt;
+ mod->inst->ui_memblt = ui_memblt;
+ mod->inst->ui_triblt = ui_triblt;
+ mod->inst->ui_create_glyph = ui_create_glyph;
+ mod->inst->ui_destroy_glyph = ui_destroy_glyph;
+ mod->inst->ui_select = ui_select;
+ mod->inst->ui_set_clip = ui_set_clip;
+ mod->inst->ui_reset_clip = ui_reset_clip;
+ mod->inst->ui_resize_window = ui_resize_window;
+ mod->inst->ui_set_cursor = ui_set_cursor;
+ mod->inst->ui_destroy_cursor = ui_destroy_cursor;
+ mod->inst->ui_create_cursor = ui_create_cursor;
+ mod->inst->ui_set_null_cursor = ui_set_null_cursor;
+ mod->inst->ui_set_default_cursor = ui_set_default_cursor;
+ mod->inst->ui_create_palette = ui_create_palette;
+ mod->inst->ui_move_pointer = ui_move_pointer;
+ mod->inst->ui_set_palette = ui_set_palette;
+ mod->inst->ui_create_surface = ui_create_surface;
+ mod->inst->ui_set_surface = ui_set_surface;
+ mod->inst->ui_destroy_surface = ui_destroy_surface;
+ mod->inst->ui_channel_data = ui_channel_data;
+
+ mod->inst->ui_authenticate = ui_authenticate;
+ mod->inst->ui_decode = ui_decode;
+ mod->inst->ui_check_certificate = ui_check_certificate;
+
+ return mod;
}
/******************************************************************************/
int EXPORT_CC
-mod_exit(struct mod* mod)
+mod_exit(struct mod *mod)
{
- if (mod == 0)
- {
+ if (mod == 0)
+ {
+ return 0;
+ }
+
+ freerdp_free(mod->inst);
+ g_free(mod->settings);
+ g_free(mod);
+ //freerdp_global_finish();
return 0;
- }
- freerdp_free(mod->inst);
- g_free(mod->settings);
- g_free(mod);
- //freerdp_global_finish();
- return 0;
}