summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjsorg71 <jsorg71>2006-08-12 02:17:14 +0000
committerjsorg71 <jsorg71>2006-08-12 02:17:14 +0000
commitc88940c54f99b13dc96f7b669d0680e7d2e7d69c (patch)
tree54abc5835fa2b00d995e4a6d4277c63620f16a7f
parent8e72d684c65fd7113594467a97ed1ba39ce9f498 (diff)
downloadxrdp-proprietary-c88940c54f99b13dc96f7b669d0680e7d2e7d69c.tar.gz
xrdp-proprietary-c88940c54f99b13dc96f7b669d0680e7d2e7d69c.zip
fb changes
-rw-r--r--uirdesktop/fb.c58
-rw-r--r--uirdesktop/makefile_fb1
2 files changed, 58 insertions, 1 deletions
diff --git a/uirdesktop/fb.c b/uirdesktop/fb.c
index 752b69da..f45b1b14 100644
--- a/uirdesktop/fb.c
+++ b/uirdesktop/fb.c
@@ -170,6 +170,10 @@ mi_update_screen(void)
int g;
int b;
+ if (g_no_draw)
+ {
+ return;
+ }
endi = UI_MIN(g_rect.y + g_rect.h, g_clip_bottom);
endj = UI_MIN(g_rect.x + g_rect.w, g_clip_right);
x = UI_MAX(g_rect.x, g_clip_left);
@@ -491,6 +495,21 @@ mi_begin_update(void)
void
mi_end_update(void)
{
+ int pixel;
+
+ if (g_show_wfp)
+ {
+ printf(" %d\r\n", bs_get_pixel(g_wfpx, g_wfpy));
+ }
+ if (g_no_draw)
+ {
+ pixel = bs_get_pixel(g_wfpx, g_wfpy);
+ if ((pixel & 0xffffff) == (g_wfpv & 0xffffff))
+ {
+ g_no_draw = 0;
+ mi_invalidate(0, 0, g_width, g_height);
+ }
+ }
}
/*****************************************************************************/
@@ -1063,7 +1082,44 @@ main(int in_argc, char ** in_argv)
int
librdesktop_init(long obj1, long obj2, long obj3, int in_argc, char ** in_argv)
{
- return 1;
+ int screensize;
+ struct termios new_termios;
+
+ g_server_depth = 24;
+ memset(&g_mcursor, 0, sizeof(struct cursor));
+ get_username_and_hostname();
+ /* read command line options */
+ if (!parse_parameters(in_argc, in_argv))
+ {
+ return 0;
+ }
+ /* Open the file for reading and writing */
+ //g_fbfd = open("/dev/fb0", O_RDWR);
+ g_fbfd = obj1;
+ /* Get fixed screen information */
+ if (ioctl(g_fbfd, FBIOGET_FSCREENINFO, &g_finfo))
+ {
+ printf("Error reading fixed information.\n");
+ return 1;
+ }
+ /* Get variable screen information */
+ if (ioctl(g_fbfd, FBIOGET_VSCREENINFO, &g_vinfo))
+ {
+ printf("Error reading variable information.\n");
+ return 1;
+ }
+ g_bpp = g_vinfo.bits_per_pixel;
+ g_Bpp = (g_bpp + 7) / 8;
+ g_width = g_vinfo.xres;
+ g_height = g_vinfo.yres;
+ g_clip_right = g_width;
+ g_clip_bottom = g_height;
+ printf("%dx%d, %dbpp\n", g_vinfo.xres, g_vinfo.yres, g_vinfo.bits_per_pixel);
+ /* Figure out the size of the screen in bytes */
+ screensize = g_vinfo.xres * g_vinfo.yres * 4;
+ g_sdata = (char*)obj2;
+ g_bs = malloc(screensize);
+ return 0;
}
/*****************************************************************************/
diff --git a/uirdesktop/makefile_fb b/uirdesktop/makefile_fb
index 42d877c8..26f420c5 100644
--- a/uirdesktop/makefile_fb
+++ b/uirdesktop/makefile_fb
@@ -12,6 +12,7 @@ UIOBJS = uimain.o bsops.o fb.o
CFLAGS = -O2 -Wall
+#-DWITH_DEBUG
# -I$(INCDIR)
# -DWITH_DEBUG