From: Daniel Caujolle-B. <f1...@us...> - 2002-03-15 21:53:29
|
Update of /cvsroot/xine/xine-ui/src/xitk In directory usw-pr-cvs1:/tmp/cvs-serv26957/src/xitk Modified Files: event.c videowin.c videowin.h Log Message: Fixed root window using. Root window isn't use now, so background polution is gone. Index: event.c =================================================================== RCS file: /cvsroot/xine/xine-ui/src/xitk/event.c,v retrieving revision 1.79 retrieving revision 1.80 diff -u -r1.79 -r1.80 --- event.c 10 Mar 2002 17:02:23 -0000 1.79 +++ event.c 15 Mar 2002 21:53:26 -0000 1.80 @@ -1121,9 +1121,6 @@ gGui->running = 0; - if(gGui->use_root_window) - video_window_restore_background(); - kbindings_save_kbinding(gGui->kbindings); kbindings_free_kbinding(&gGui->kbindings); Index: videowin.c =================================================================== RCS file: /cvsroot/xine/xine-ui/src/xitk/videowin.c,v retrieving revision 1.69 retrieving revision 1.70 diff -u -r1.69 -r1.70 --- videowin.c 10 Mar 2002 17:02:24 -0000 1.69 +++ videowin.c 15 Mar 2002 21:53:26 -0000 1.70 @@ -106,10 +106,6 @@ int XF86_modelines_count; #endif - Pixmap root_bg; - XImage *root_image; - GC root_gc; - } gVw_t; static gVw_t *gVw; @@ -121,61 +117,6 @@ static void video_window_handle_event (XEvent *event, void *data); /* - * Store/restore window background (used when using root window for vo) - */ -void video_window_backup_background(void) { - - XLockDisplay (gGui->display); - -#if 0 /* This is buggy */ - - gVw->root_bg = XCreatePixmap(gGui->display, - (XRootWindow(gGui->display, XDefaultScreen(gGui->display))), - gVw->fullscreen_width, gVw->fullscreen_height, - (DefaultDepth(gGui->display, XDefaultScreen(gGui->display)))); - - gVw->root_image = XGetImage(gGui->display, - (XRootWindow(gGui->display, XDefaultScreen(gGui->display))), - 0, 0, gVw->fullscreen_width, gVw->fullscreen_height, - AllPlanes, ZPixmap); - - XPutImage(gGui->display, gVw->root_bg, - (XDefaultGC(gGui->display, XDefaultScreen(gGui->display))), - gVw->root_image, 0, 0, gVw->fullscreen_width, gVw->fullscreen_height, - gVw->fullscreen_width, gVw->fullscreen_height); - -#endif - - XUnlockDisplay (gGui->display); - -} - -void video_window_restore_background(void) { - - XLockDisplay (gGui->display); - -#if 0 /* This is buggy */ - - XSetWindowBackgroundPixmap(gGui->display, - (XRootWindow(gGui->display, XDefaultScreen(gGui->display))), - gVw->root_bg); - - XClearWindow(gGui->display, (XRootWindow(gGui->display, XDefaultScreen(gGui->display)))); - XDestroyImage(gVw->root_image); - // XMapRaised(gGui->display, (XRootWindow(gGui->display, XDefaultScreen(gGui->display)))); - XFlush(gGui->display); - -#else - - XClearWindow(gGui->display, (XRootWindow(gGui->display, XDefaultScreen(gGui->display)))); - XFlush(gGui->display); - -#endif - - XUnlockDisplay (gGui->display); -} - -/* * Let the video driver override the selected visual */ void video_window_select_visual (void) { @@ -297,41 +238,70 @@ *dest_x = 0; *dest_y = 0; - if(gGui->use_root_window) { /* Using root window */ + if(gGui->use_root_window) { /* Using root window, but not really */ *dest_width = gVw->fullscreen_width; *dest_height = gVw->fullscreen_height; - gVw->output_width = gVw->fullscreen_width; - gVw->output_height = gVw->fullscreen_height; - - gVw->fullscreen_mode = 1; - gVw->visual = gGui->visual; - gVw->depth = gGui->depth; - gVw->colormap = gGui->colormap; - - gGui->video_window = RootWindow(gGui->display, XDefaultScreen(gGui->display)); - - if(gGui->vo_driver) - gGui->vo_driver->gui_data_exchange (gGui->vo_driver, - GUI_DATA_EX_DRAWABLE_CHANGED, - (void*)gGui->video_window); - - gVw->gc = DefaultGC(gGui->display, XDefaultScreen(gGui->display)); - - XSetWindowBackground(gGui->display, gGui->video_window, gGui->black.pixel); - // XResizeWindow (gGui->display, gGui->video_window, - // gVw->fullscreen_width, gVw->fullscreen_height); - - XClearWindow(gGui->display, gGui->video_window); - - gVw->old_widget_key = gVw->widget_key; - gVw->widget_key = xitk_register_event_handler("video_window", - gGui->video_window, - video_window_handle_event, - video_window_change_sizepos, - gui_dndcallback, - NULL, NULL); + if(gGui->video_window == None) { + XGCValues gcv; + + gVw->output_width = gVw->fullscreen_width; + gVw->output_height = gVw->fullscreen_height; + + gVw->fullscreen_mode = 1; + gVw->visual = gGui->visual; + gVw->depth = gGui->depth; + gVw->colormap = gGui->colormap; + + + attr.override_redirect = True; + attr.background_pixel = gGui->black.pixel; + + gGui->video_window = XCreateWindow(gGui->display, DefaultRootWindow(gGui->display), + 0, 0, gVw->fullscreen_width, gVw->fullscreen_width, + 0, CopyFromParent, CopyFromParent, CopyFromParent, + CWBackPixel | CWOverrideRedirect, &attr); + + if(gGui->vo_driver) + gGui->vo_driver->gui_data_exchange (gGui->vo_driver, + GUI_DATA_EX_DRAWABLE_CHANGED, + (void*)gGui->video_window); + + XSetStandardProperties(gGui->display, gGui->video_window, + window_title, window_title, None, NULL, 0, 0); + + + gcv.foreground = gGui->black.pixel; + gcv.background = gGui->black.pixel; + gcv.graphics_exposures = False; + gVw->gc = XCreateGC(gGui->display, gGui->video_window, + GCForeground | GCBackground | GCGraphicsExposures, &gcv); + + XSetStandardProperties(gGui->display, gGui->video_window, + window_title, window_title, None, NULL, 0, 0); + + hint.flags = USSize | USPosition | PPosition | PSize; + hint.x = 0; + hint.y = 0; + hint.width = gVw->fullscreen_width; + hint.height = gVw->fullscreen_height; + XSetNormalHints(gGui->display, gGui->video_window, &hint); + + XClearWindow(gGui->display, gGui->video_window); + + XMapWindow(gGui->display, gGui->video_window); + + XLowerWindow(gGui->display, gGui->video_window); + + gVw->old_widget_key = gVw->widget_key; + gVw->widget_key = xitk_register_event_handler("video_window", + gGui->video_window, + video_window_handle_event, + video_window_change_sizepos, + gui_dndcallback, + NULL, NULL); + } XUnlockDisplay (gGui->display); @@ -1064,9 +1034,6 @@ #endif XUnlockDisplay (gGui->display); - - if(gGui->use_root_window) - video_window_backup_background(); video_window_adapt_size (768, 480, &x, &y, &w, &h); Index: videowin.h =================================================================== RCS file: /cvsroot/xine/xine-ui/src/xitk/videowin.h,v retrieving revision 1.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- videowin.h 7 Mar 2002 22:21:16 -0000 1.15 +++ videowin.h 15 Mar 2002 21:53:26 -0000 1.16 @@ -50,8 +50,6 @@ /* hide/show video window */ void video_window_set_visibility(int show_window); int video_window_is_visible (void); -void video_window_backup_background(void); -void video_window_restore_background(void); void video_window_stream_has_changed(void); |