work on freerdp module

ulab-original
Jay Sorg 14 years ago
parent 4530ef248f
commit 5ec2de96c5

@ -22,62 +22,152 @@
#include "xrdp-freerdp.h" #include "xrdp-freerdp.h"
#define GET_MOD(_inst) ((struct mod*)((_inst)->param1))
#define SET_MOD(_inst, _mod) ((_inst)->param1) = _mod
struct my_bitmap
{
char* data;
int width;
int height;
int bpp;
};
struct my_glyph
{
char* data;
int width;
int height;
};
/*****************************************************************************/ /*****************************************************************************/
/* return error */ /* return error */
int DEFAULT_CC static int DEFAULT_CC
lib_mod_start(struct mod* mod, int w, int h, int bpp) lib_mod_start(struct mod* mod, int w, int h, int bpp)
{ {
LIB_DEBUG(mod, "in lib_mod_start"); 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->width = w;
mod->height = h; mod->height = h;
mod->bpp = bpp; mod->bpp = bpp;
mod->settings->server_depth = mod->bpp;
mod->settings->width = mod->width;
mod->settings->height = mod->height;
LIB_DEBUG(mod, "out lib_mod_start"); LIB_DEBUG(mod, "out lib_mod_start");
return 0; return 0;
} }
/******************************************************************************/ /******************************************************************************/
/* return error */ /* return error */
int DEFAULT_CC static int DEFAULT_CC
lib_mod_connect(struct mod* mod) lib_mod_connect(struct mod* mod)
{ {
int code;
LIB_DEBUG(mod, "in lib_mod_connect"); LIB_DEBUG(mod, "in lib_mod_connect");
mod->inst->rdp_connect(mod->inst); code = mod->inst->rdp_connect(mod->inst);
g_writeln("lib_mod_connect: code %d", code);
LIB_DEBUG(mod, "out lib_mod_connect"); LIB_DEBUG(mod, "out lib_mod_connect");
return 0; return code;
} }
/******************************************************************************/ /******************************************************************************/
/* return error */ /* return error */
int DEFAULT_CC 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) long param3, long param4)
{ {
LIB_DEBUG(mod, "in lib_mod_event"); LIB_DEBUG(mod, "in lib_mod_event");
switch (msg)
{
case 15:
mod->inst->rdp_send_input(mod->inst, RDP_INPUT_SCANCODE,
param4, param3, 0);
break;
case 16:
mod->inst->rdp_send_input(mod->inst, RDP_INPUT_SCANCODE,
param4, param3, 0);
break;
case 17:
mod->inst->rdp_sync_input(mod->inst, param4);
break;
case 100:
mod->inst->rdp_send_input(mod->inst, RDP_INPUT_MOUSE, MOUSE_FLAG_MOVE,
param1, param2);
break;
case 101:
mod->inst->rdp_send_input(mod->inst, RDP_INPUT_MOUSE,
MOUSE_FLAG_BUTTON1, param1, param2);
break;
case 102:
mod->inst->rdp_send_input(mod->inst, RDP_INPUT_MOUSE,
MOUSE_FLAG_BUTTON1 | MOUSE_FLAG_DOWN,
param1, param2);
break;
case 103:
mod->inst->rdp_send_input(mod->inst, RDP_INPUT_MOUSE,
MOUSE_FLAG_BUTTON2, param1, param2);
break;
case 104:
mod->inst->rdp_send_input(mod->inst, RDP_INPUT_MOUSE,
MOUSE_FLAG_BUTTON2 | MOUSE_FLAG_DOWN,
param1, param2);
break;
case 105:
mod->inst->rdp_send_input(mod->inst, RDP_INPUT_MOUSE,
MOUSE_FLAG_BUTTON3, param1, param2);
break;
case 106:
mod->inst->rdp_send_input(mod->inst, RDP_INPUT_MOUSE,
MOUSE_FLAG_BUTTON3 | MOUSE_FLAG_DOWN,
param1, param2);
break;
case 107:
mod->inst->rdp_send_input(mod->inst, RDP_INPUT_MOUSE,
MOUSE_FLAG_BUTTON4, param1, param2);
break;
case 108:
mod->inst->rdp_send_input(mod->inst, RDP_INPUT_MOUSE,
MOUSE_FLAG_BUTTON4 | MOUSE_FLAG_DOWN,
param1, param2);
break;
case 109:
mod->inst->rdp_send_input(mod->inst, RDP_INPUT_MOUSE,
MOUSE_FLAG_BUTTON5, param1, param2);
break;
case 110:
mod->inst->rdp_send_input(mod->inst, RDP_INPUT_MOUSE,
MOUSE_FLAG_BUTTON5 | MOUSE_FLAG_DOWN,
param1, param2);
break;
}
LIB_DEBUG(mod, "out lib_mod_event"); LIB_DEBUG(mod, "out lib_mod_event");
return 0; return 0;
} }
/******************************************************************************/ /******************************************************************************/
/* return error */ /* return error */
int DEFAULT_CC static int DEFAULT_CC
lib_mod_signal(struct mod* mod) lib_mod_signal(struct mod* mod)
{ {
LIB_DEBUG(mod, "in lib_mod_signal"); LIB_DEBUG(mod, "in lib_mod_signal");
g_writeln("lib_mod_signal:");
LIB_DEBUG(mod, "out lib_mod_signal"); LIB_DEBUG(mod, "out lib_mod_signal");
return 0; return 0;
} }
/******************************************************************************/ /******************************************************************************/
/* return error */ /* return error */
int DEFAULT_CC static int DEFAULT_CC
lib_mod_end(struct mod* mod) lib_mod_end(struct mod* mod)
{ {
g_writeln("lib_mod_end:");
return 0; return 0;
} }
/******************************************************************************/ /******************************************************************************/
/* return error */ /* return error */
int DEFAULT_CC static int DEFAULT_CC
lib_mod_set_param(struct mod* mod, char* name, char* value) lib_mod_set_param(struct mod* mod, char* name, char* value)
{ {
g_writeln("lib_mod_set_param: name [%s] value [%s]", name, value); g_writeln("lib_mod_set_param: name [%s] value [%s]", name, value);
@ -111,322 +201,442 @@ lib_mod_set_param(struct mod* mod, char* name, char* value)
} }
/******************************************************************************/ /******************************************************************************/
void DEFAULT_CC static int DEFAULT_CC
ui_error(rdpInst * inst, const char * text) mod_session_change(struct mod* v, int a, int b)
{ {
g_writeln("ui_error:"); g_writeln("mod_session_change:");
return 0;
} }
/******************************************************************************/ /******************************************************************************/
void DEFAULT_CC static int DEFAULT_CC
ui_warning(rdpInst * inst, const char * text) mod_get_wait_objs(struct mod* v, tbus* read_objs, int* rcount,
tbus* write_objs, int* wcount, int* timeout)
{ {
g_writeln("ui_warning:"); void** rfds;
void** wfds;
rfds = (void**)read_objs;
wfds = (void**)write_objs;
return v->inst->rdp_get_fds(v->inst, rfds, rcount, wfds, wcount);
} }
/******************************************************************************/ /******************************************************************************/
void DEFAULT_CC static int DEFAULT_CC
ui_unimpl(rdpInst * inst, const char * text) mod_check_wait_objs(struct mod* v)
{ {
g_writeln("ui_unimpl:"); return v->inst->rdp_check_fds(v->inst);
} }
/******************************************************************************/ /******************************************************************************/
void DEFAULT_CC static void DEFAULT_CC
ui_begin_update(rdpInst * inst) ui_error(rdpInst* inst, const char* text)
{ {
g_writeln("ui_begin_update:"); g_writeln("ui_error: %s", text);
} }
/******************************************************************************/ /******************************************************************************/
void DEFAULT_CC static void DEFAULT_CC
ui_end_update(rdpInst * inst) ui_warning(rdpInst* inst, const char* text)
{ {
g_writeln("ui_end_update:"); g_writeln("ui_warning: %s", text);
} }
/******************************************************************************/ /******************************************************************************/
void DEFAULT_CC static void DEFAULT_CC
ui_desktop_save(rdpInst * inst, int offset, int x, int y, ui_unimpl(rdpInst* inst, const char* text)
int cx, int cy) {
g_writeln("ui_unimpl: %s", text);
}
/******************************************************************************/
static void DEFAULT_CC
ui_begin_update(rdpInst* inst)
{
struct mod* mod;
mod = GET_MOD(inst);
mod->server_begin_update(mod);
}
/******************************************************************************/
static void DEFAULT_CC
ui_end_update(rdpInst* inst)
{
struct mod* 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,
int cx, int cy)
{ {
g_writeln("ui_desktop_save:"); g_writeln("ui_desktop_save:");
} }
/******************************************************************************/ /******************************************************************************/
void DEFAULT_CC static void DEFAULT_CC
ui_desktop_restore(rdpInst * inst, int offset, int x, int y, ui_desktop_restore(rdpInst* inst, int offset, int x, int y,
int cx, int cy) int cx, int cy)
{ {
g_writeln("ui_desktop_restore:"); g_writeln("ui_desktop_restore:");
} }
/******************************************************************************/ /******************************************************************************/
RD_HBITMAP DEFAULT_CC 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)
{ {
g_writeln("ui_create_bitmap:"); struct my_bitmap* bm;
return 0; struct mod* mod;
int size;
mod = GET_MOD(inst);
bm = (struct my_bitmap*)g_malloc(sizeof(struct my_bitmap), 1);
bm->width = width;
bm->height = height;
bm->bpp = mod->bpp;
size = width * height * (bm->bpp / 8);
bm->data = (char*)g_malloc(size, 0);
g_memcpy(bm->data, data, size);
return bm;
} }
/******************************************************************************/ /******************************************************************************/
void DEFAULT_CC static void DEFAULT_CC
ui_paint_bitmap(rdpInst * inst, int x, int y, int cx, int cy, int width, ui_paint_bitmap(rdpInst* inst, int x, int y, int cx, int cy, int width,
int height, uint8 * data) int height, uint8* data)
{ {
g_writeln("ui_paint_bitmap:"); struct mod* mod;
mod = GET_MOD(inst);
mod->server_paint_rect(mod, x, y, cx, cy, data, width, height, 0, 0);
} }
/******************************************************************************/ /******************************************************************************/
void DEFAULT_CC static void DEFAULT_CC
ui_destroy_bitmap(rdpInst * inst, RD_HBITMAP bmp) ui_destroy_bitmap(rdpInst* inst, RD_HBITMAP bmp)
{ {
g_writeln("ui_destroy_bitmap:"); struct my_bitmap* bm;
bm = (struct my_bitmap*)bmp;
g_free(bm->data);
g_free(bm);
} }
/******************************************************************************/ /******************************************************************************/
void DEFAULT_CC static void DEFAULT_CC
ui_line(rdpInst * inst, uint8 opcode, int startx, int starty, int endx, ui_line(rdpInst* inst, uint8 opcode, int startx, int starty, int endx,
int endy, RD_PEN * pen) int endy, RD_PEN* pen)
{ {
g_writeln("ui_line:"); g_writeln("ui_line:");
} }
/******************************************************************************/ /******************************************************************************/
void DEFAULT_CC static void DEFAULT_CC
ui_rect(rdpInst * inst, int x, int y, int cx, int cy, int color) ui_rect(rdpInst* inst, int x, int y, int cx, int cy, int color)
{ {
g_writeln("ui_rect:"); struct mod* mod;
mod = GET_MOD(inst);
mod->server_set_fgcolor(mod, color);
mod->server_fill_rect(mod, x, y, cx, cy);
} }
/******************************************************************************/ /******************************************************************************/
void DEFAULT_CC static void DEFAULT_CC
ui_polygon(rdpInst * inst, uint8 opcode, uint8 fillmode, RD_POINT * point, ui_polygon(rdpInst* inst, uint8 opcode, uint8 fillmode, RD_POINT* point,
int npoints, RD_BRUSH * brush, int bgcolor, int fgcolor) int npoints, RD_BRUSH* brush, int bgcolor, int fgcolor)
{ {
g_writeln("ui_polygon:"); g_writeln("ui_polygon:");
} }
/******************************************************************************/ /******************************************************************************/
void DEFAULT_CC static void DEFAULT_CC
ui_polyline(rdpInst * inst, uint8 opcode, RD_POINT * points, int npoints, ui_polyline(rdpInst* inst, uint8 opcode, RD_POINT* points, int npoints,
RD_PEN * pen) RD_PEN* pen)
{ {
g_writeln("ui_polyline:"); g_writeln("ui_polyline:");
} }
/******************************************************************************/ /******************************************************************************/
void DEFAULT_CC static void DEFAULT_CC
ui_ellipse(rdpInst * inst, uint8 opcode, uint8 fillmode, int x, int y, ui_ellipse(rdpInst* inst, uint8 opcode, uint8 fillmode, int x, int y,
int cx, int cy, RD_BRUSH * brush, int bgcolor, int fgcolor) int cx, int cy, RD_BRUSH* brush, int bgcolor, int fgcolor)
{ {
g_writeln("ui_ellipse:"); g_writeln("ui_ellipse:");
} }
/******************************************************************************/ /******************************************************************************/
void DEFAULT_CC static void DEFAULT_CC
ui_start_draw_glyphs(rdpInst * inst, int bgcolor, int fgcolor) ui_start_draw_glyphs(rdpInst* inst, int bgcolor, int fgcolor)
{ {
g_writeln("ui_start_draw_glyphs:"); g_writeln("ui_start_draw_glyphs:");
} }
/******************************************************************************/ /******************************************************************************/
void DEFAULT_CC static void DEFAULT_CC
ui_draw_glyph(rdpInst * inst, int x, int y, int cx, int cy, ui_draw_glyph(rdpInst* inst, int x, int y, int cx, int cy,
RD_HGLYPH glyph) RD_HGLYPH glyph)
{ {
g_writeln("ui_draw_glyph:"); g_writeln("ui_draw_glyph:");
} }
/******************************************************************************/ /******************************************************************************/
void DEFAULT_CC 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:");
} }
/******************************************************************************/ /******************************************************************************/
uint32 DEFAULT_CC 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:"); g_writeln("ui_get_toggle_keys_state:");
return 0; return 0;
} }
/******************************************************************************/ /******************************************************************************/
void DEFAULT_CC static void DEFAULT_CC
ui_bell(rdpInst * inst) ui_bell(rdpInst* inst)
{ {
g_writeln("ui_bell:"); g_writeln("ui_bell:");
} }
/******************************************************************************/ /******************************************************************************/
void DEFAULT_CC 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;
g_writeln("ui_destblt:"); 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);
} }
/******************************************************************************/ /******************************************************************************/
void DEFAULT_CC static void DEFAULT_CC
ui_patblt(rdpInst * inst, uint8 opcode, int x, int y, int cx, int cy, ui_patblt(rdpInst* inst, uint8 opcode, int x, int y, int cx, int cy,
RD_BRUSH * brush, int bgcolor, int fgcolor) RD_BRUSH* brush, int bgcolor, int fgcolor)
{ {
g_writeln("ui_patblt:"); struct mod* mod;
mod = GET_MOD(inst);
mod->server_set_opcode(mod, opcode);
mod->server_set_fgcolor(mod, fgcolor);
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 */
{
mod->server_set_brush(mod, brush->xorigin, brush->yorigin,
brush->style, brush->bd->data);
}
else
{
g_writeln("ui_patblt: error color_code %d", brush->bd->color_code);
}
}
else
{
mod->server_set_brush(mod, brush->xorigin, brush->yorigin,
brush->style, brush->pattern);
}
mod->server_fill_rect(mod, x, y, cx, cy);
mod->server_set_opcode(mod, 0xcc);
mod->server_set_mixmode(mod, 0);
} }
/******************************************************************************/ /******************************************************************************/
void DEFAULT_CC 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) int srcx, int srcy)
{ {
g_writeln("ui_screenblt:"); 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);
} }
/******************************************************************************/ /******************************************************************************/
void DEFAULT_CC 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) RD_HBITMAP src, int srcx, int srcy)
{ {
g_writeln("ui_memblt:"); struct my_bitmap* bm;
struct mod* mod;
mod = GET_MOD(inst);
bm = (struct my_bitmap*)src;
mod->server_paint_rect(mod, x, y, cx, cy, bm->data,
bm->width, bm->height, srcx, srcy);
} }
/******************************************************************************/ /******************************************************************************/
void DEFAULT_CC static void DEFAULT_CC
ui_triblt(rdpInst * inst, uint8 opcode, int x, int y, int cx, int cy, ui_triblt(rdpInst* inst, uint8 opcode, int x, int y, int cx, int cy,
RD_HBITMAP src, int srcx, int srcy, RD_BRUSH * brush, int bgcolor, int fgcolor) RD_HBITMAP src, int srcx, int srcy, RD_BRUSH* brush,
int bgcolor, int fgcolor)
{ {
g_writeln("ui_triblt:"); g_writeln("ui_triblt:");
} }
/******************************************************************************/ /******************************************************************************/
RD_HGLYPH DEFAULT_CC 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)
{ {
struct my_glyph* gg;
int size;
g_writeln("ui_create_glyph:"); g_writeln("ui_create_glyph:");
return 0; gg = (struct my_glyph*)g_malloc(sizeof(struct my_glyph), 1);
gg->width = width;
gg->height = height;
size = ((height * ((width + 7) / 8)) + 3) & (~3);
gg->data = (char*)g_malloc(size, 0);
g_memcpy(gg->data, data, size);
return gg;
} }
/******************************************************************************/ /******************************************************************************/
void DEFAULT_CC static void DEFAULT_CC
ui_destroy_glyph(rdpInst * inst, RD_HGLYPH glyph) ui_destroy_glyph(rdpInst* inst, RD_HGLYPH glyph)
{ {
struct my_glyph* gg;
g_writeln("ui_destroy_glyph:"); g_writeln("ui_destroy_glyph:");
gg = (struct my_glyph*)glyph;
g_free(gg->data);
g_free(gg);
} }
/******************************************************************************/ /******************************************************************************/
int DEFAULT_CC static int DEFAULT_CC
ui_select(rdpInst * inst, int rdp_socket) ui_select(rdpInst* inst, int rdp_socket)
{ {
g_writeln("ui_select:");
return 1; return 1;
} }
/******************************************************************************/ /******************************************************************************/
void DEFAULT_CC 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)
{ {
g_writeln("ui_set_clip:"); struct mod* mod;
mod = GET_MOD(inst);
mod->server_set_clip(mod, x, y, cx, cy);
} }
/******************************************************************************/ /******************************************************************************/
void DEFAULT_CC static void DEFAULT_CC
ui_reset_clip(rdpInst * inst) ui_reset_clip(rdpInst* inst)
{ {
g_writeln("ui_reset_clip:"); struct mod* mod;
mod = GET_MOD(inst);
mod->server_reset_clip(mod);
} }
/******************************************************************************/ /******************************************************************************/
void DEFAULT_CC static void DEFAULT_CC
ui_resize_window(rdpInst * inst) ui_resize_window(rdpInst* inst)
{ {
g_writeln("ui_resize_window:"); g_writeln("ui_resize_window:");
} }
/******************************************************************************/ /******************************************************************************/
void DEFAULT_CC static void DEFAULT_CC
ui_set_cursor(rdpInst * inst, RD_HCURSOR cursor) ui_set_cursor(rdpInst* inst, RD_HCURSOR cursor)
{ {
g_writeln("ui_set_cursor:"); g_writeln("ui_set_cursor:");
} }
/******************************************************************************/ /******************************************************************************/
void DEFAULT_CC static void DEFAULT_CC
ui_destroy_cursor(rdpInst * inst, RD_HCURSOR cursor) ui_destroy_cursor(rdpInst* inst, RD_HCURSOR cursor)
{ {
g_writeln("ui_destroy_cursor:"); g_writeln("ui_destroy_cursor:");
} }
/******************************************************************************/ /******************************************************************************/
RD_HCURSOR DEFAULT_CC static RD_HCURSOR DEFAULT_CC
ui_create_cursor(rdpInst * inst, unsigned int x, unsigned int y, ui_create_cursor(rdpInst* inst, unsigned int x, unsigned int y,
int width, int height, uint8 * andmask, uint8 * xormask, int bpp) int width, int height, uint8* andmask,
uint8* xormask, int bpp)
{ {
g_writeln("ui_create_cursor:"); g_writeln("ui_create_cursor:");
return 0; return 0;
} }
/******************************************************************************/ /******************************************************************************/
void DEFAULT_CC 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:");
} }
/******************************************************************************/ /******************************************************************************/
void DEFAULT_CC 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:");
} }
/******************************************************************************/ /******************************************************************************/
RD_HPALETTE DEFAULT_CC static RD_HPALETTE DEFAULT_CC
ui_create_colormap(rdpInst * inst, RD_PALETTE * colors) ui_create_colormap(rdpInst* inst, RD_PALETTE* colors)
{ {
g_writeln("ui_create_colormap:"); g_writeln("ui_create_colormap:");
return 0; return 0;
} }
/******************************************************************************/ /******************************************************************************/
void DEFAULT_CC 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:");
} }
/******************************************************************************/ /******************************************************************************/
void DEFAULT_CC static void DEFAULT_CC
ui_set_colormap(rdpInst * inst, RD_HPALETTE map) ui_set_colormap(rdpInst* inst, RD_HPALETTE map)
{ {
g_writeln("ui_set_colormap:"); g_writeln("ui_set_colormap:");
} }
/******************************************************************************/ /******************************************************************************/
RD_HBITMAP DEFAULT_CC 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:"); g_writeln("ui_create_surface:");
return 0; return 0;
} }
/******************************************************************************/ /******************************************************************************/
void DEFAULT_CC 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:");
} }
/******************************************************************************/ /******************************************************************************/
void DEFAULT_CC 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:");
} }
/******************************************************************************/ /******************************************************************************/
void DEFAULT_CC static void DEFAULT_CC
ui_channel_data(rdpInst * inst, int chan_id, char * data, int data_size, ui_channel_data(rdpInst* inst, int chan_id, char* data, int data_size,
int flags, int total_size) int flags, int total_size)
{ {
g_writeln("ui_channel_data:"); g_writeln("ui_channel_data:");
@ -449,18 +659,31 @@ mod_init(void)
mod->mod_signal = lib_mod_signal; mod->mod_signal = lib_mod_signal;
mod->mod_end = lib_mod_end; mod->mod_end = lib_mod_end;
mod->mod_set_param = lib_mod_set_param; 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 = (struct rdp_set*)g_malloc(sizeof(struct rdp_set), 1);
mod->settings->encryption = 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->inst = freerdp_new(mod->settings); mod->inst = freerdp_new(mod->settings);
if (mod->inst == 0) if (mod->inst == 0)
{ {
return 0; return 0;
} }
SET_MOD(mod->inst, mod);
mod->inst->ui_error = ui_error; mod->inst->ui_error = ui_error;
mod->inst->ui_warning = ui_warning; mod->inst->ui_warning = ui_warning;
mod->inst->ui_unimpl = ui_unimpl; mod->inst->ui_unimpl = ui_unimpl;
mod->inst->ui_begin_update = ui_begin_update; mod->inst->ui_begin_update = ui_begin_update;
mod->inst->ui_end_update = ui_end_update; mod->inst->ui_end_update = ui_end_update;
mod->inst->ui_desktop_save = ui_desktop_save; mod->inst->ui_desktop_save = ui_desktop_save;
mod->inst->ui_desktop_restore = ui_desktop_restore; mod->inst->ui_desktop_restore = ui_desktop_restore;
mod->inst->ui_create_bitmap = ui_create_bitmap; mod->inst->ui_create_bitmap = ui_create_bitmap;
@ -499,7 +722,6 @@ mod_init(void)
mod->inst->ui_set_surface = ui_set_surface; mod->inst->ui_set_surface = ui_set_surface;
mod->inst->ui_destroy_surface = ui_destroy_surface; mod->inst->ui_destroy_surface = ui_destroy_surface;
mod->inst->ui_channel_data = ui_channel_data; mod->inst->ui_channel_data = ui_channel_data;
return mod; return mod;
} }

@ -43,7 +43,11 @@ struct mod
int (*mod_signal)(struct mod* v); int (*mod_signal)(struct mod* v);
int (*mod_end)(struct mod* v); int (*mod_end)(struct mod* v);
int (*mod_set_param)(struct mod* v, char* name, char* value); int (*mod_set_param)(struct mod* v, char* name, char* value);
long mod_dumby[100 - 6]; /* align, 100 minus the number of mod int (*mod_session_change)(struct mod* v, int, int);
int (*mod_get_wait_objs)(struct mod* v, tbus* read_objs, int* rcount,
tbus* write_objs, int* wcount, int* timeout);
int (*mod_check_wait_objs)(struct mod* v);
long mod_dumby[100 - 9]; /* align, 100 minus the number of mod
functions above */ functions above */
/* server functions */ /* server functions */
int (*server_begin_update)(struct mod* v); int (*server_begin_update)(struct mod* v);
@ -89,9 +93,9 @@ struct mod
long server_dumby[100 - 25]; /* align, 100 minus the number of server long server_dumby[100 - 25]; /* align, 100 minus the number of server
functions above */ functions above */
/* common */ /* common */
long handle; /* pointer to self as long */ tbus handle; /* pointer to self as long */
long wm; tbus wm;
long painter; tbus painter;
int sck; int sck;
/* mod data */ /* mod data */
int width; int width;

Loading…
Cancel
Save