From: Daniel Caujolle-B. <f1...@us...> - 2005-12-24 09:56:33
|
Update of /cvsroot/xine/xine-ui/src/xitk In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30001 Modified Files: common.h main.c videowin.c Log Message: Add --no-mouse and --wid <windows id>. Patch from johan DOT attali AT laposte DOT net>. Should be documented. Index: common.h =================================================================== RCS file: /cvsroot/xine/xine-ui/src/xitk/common.h,v retrieving revision 1.82 retrieving revision 1.83 diff -u -r1.82 -r1.83 --- common.h 16 Jul 2005 19:05:30 -0000 1.82 +++ common.h 24 Dec 2005 09:56:24 -0000 1.83 @@ -358,6 +358,9 @@ FILE *report; int no_gui; + + int no_mouse; + int wid; void (*nongui_error_msg)(char *text); Index: main.c =================================================================== RCS file: /cvsroot/xine/xine-ui/src/xitk/main.c,v retrieving revision 1.310 retrieving revision 1.311 diff -u -r1.310 -r1.311 --- main.c 30 Oct 2005 02:19:32 -0000 1.310 +++ main.c 24 Dec 2005 09:56:24 -0000 1.311 @@ -103,6 +103,7 @@ #define OPTION_LIST_PLUGINS 1012 #define OPTION_BUG_REPORT 1013 #define OPTION_NETWORK_PORT 1014 +#define OPTION_NO_MOUSE 1015 /* options args */ @@ -116,7 +117,7 @@ #ifdef HAVE_XF86VIDMODE "F" #endif - "u:a:V:A:p::s:RG:BN:P:l::S:ZD::r:c:ET:I"; + "u:a:V:A:p::s:RW:G:BN:P:l::S:ZD::r:c:ET:I"; static struct option long_options[] = { {"help" , no_argument , 0, 'h' }, @@ -141,6 +142,7 @@ {"network" , no_argument , 0, 'n' }, {"network-port" , required_argument, 0, OPTION_NETWORK_PORT }, {"root" , no_argument , 0, 'R' }, + {"wid" , required_argument, 0, 'W' }, {"geometry" , required_argument, 0, 'G' }, {"borderless" , no_argument , 0, 'B' }, {"animation" , required_argument, 0, 'N' }, @@ -159,6 +161,7 @@ {"broadcast-port" , required_argument, 0, OPTION_BROADCAST_PORT }, #endif {"no-logo" , no_argument , 0, OPTION_NO_LOGO }, + {"no-mouse" , no_argument , 0, OPTION_NO_MOUSE }, {"no-reload" , no_argument , 0, 'E' }, {"post" , required_argument, 0, OPTION_POST }, {"disable-post" , no_argument , 0, OPTION_DISABLE_POST }, @@ -627,6 +630,7 @@ #endif printf(_(" -g, --hide-gui hide GUI (panel, etc.)\n")); printf(_(" -I, --no-gui disable GUI\n")); + printf(_(" --no-mouse disable mouse event\n")); printf(_(" -H, --hide-video hide video window\n")); #ifdef HAVE_LIRC printf(_(" -L, --no-lirc Turn off LIRC support.\n")); @@ -643,6 +647,7 @@ printf(_(" -n, --network Enable network remote control server.\n")); printf(_(" --network-port Specify network server port number.\n")); printf(_(" -R, --root Use root window as video window.\n")); + printf(_(" -W, --wid Use a window id.\n")); printf(_(" -G, --geometry <WxH[+X+Y]> Set output window geometry (X style).\n")); printf(_(" -B, --borderless Borderless video output window.\n")); printf(_(" -N, --animation <mrl> Specify mrl to play when video output isn't used.\n" @@ -1311,6 +1316,7 @@ int c = '?', aos = 0; int option_index = 0; int audio_channel = -1; + int window_id = 0; int spu_channel = -1; char *audio_driver_id = NULL; char *video_driver_id = NULL; @@ -1397,6 +1403,8 @@ gGui->report = stdout; gGui->ssaver_enabled = 1; gGui->no_gui = 0; + gGui->no_mouse = 0; + gGui->wid = 0; gGui->nongui_error_msg = NULL; window_attribute.x = window_attribute.y = -8192; @@ -1423,6 +1431,7 @@ long_options, &option_index)) != EOF) { switch(c) { + #ifdef HAVE_LIRC case 'L': /* Disable LIRC support */ gGui->lirc_enable = 0; @@ -1662,7 +1671,6 @@ gGui->playlist.loop = PLAYLIST_LOOP_LOOP; break; - case OPTION_SK_SERVER: gGui->skin_server_url = strdup(optarg); break; @@ -1692,6 +1700,10 @@ gGui->display_logo = 0; break; + case OPTION_NO_MOUSE: + gGui->no_mouse = 1; + break; + case 'S': if(is_remote_running(((session >= 0) ? session : 0))) retval = session_handle_subopt(optarg, &session); @@ -1817,10 +1829,20 @@ case 'I': gGui->no_gui = 1; break; - + case 'W': /* Select wid */ + if(optarg != NULL) { + sscanf(optarg, "%i", &window_id); + gGui->wid = window_id; + } + else { + fprintf(stderr, _("window id is required for -wid option\n")); + exit(1); + } + break; + default: show_usage(); - fprintf (stderr, _("invalid argument %d => exit\n"), c); + fprintf(stderr, _("invalid argument %d => exit\n"), c); exit(1); } } @@ -2163,7 +2185,7 @@ vpplugin_rewire_posts(); applugin_rewire_posts(); } - + gui_run(session_argv); if(pplugins) Index: videowin.c =================================================================== RCS file: /cvsroot/xine/xine-ui/src/xitk/videowin.c,v retrieving revision 1.217 retrieving revision 1.218 diff -u -r1.217 -r1.218 --- videowin.c 21 Sep 2005 06:55:23 -0000 1.217 +++ videowin.c 24 Dec 2005 09:56:24 -0000 1.218 @@ -201,6 +201,7 @@ video_window_handle_event(&xevent, NULL); } } while (got_event); + } pthread_exit(NULL); @@ -379,12 +380,15 @@ attr.background_pixel = gGui->black.pixel; border_width = 0; - - gGui->video_window = XCreateWindow(gGui->video_display, rootwindow, - 0, 0, gVw->fullscreen_width, gVw->fullscreen_height, - border_width, - CopyFromParent, CopyFromParent, CopyFromParent, - CWBackPixel | CWOverrideRedirect, &attr); + + if(gGui->wid) + gGui->video_window = gGui->wid; + else + gGui->video_window = XCreateWindow(gGui->video_display, rootwindow, + 0, 0, gVw->fullscreen_width, gVw->fullscreen_height, + border_width, + CopyFromParent, CopyFromParent, CopyFromParent, + CWBackPixel | CWOverrideRedirect, &attr); if(gGui->video_display == gGui->display) xitk_widget_list_set(gVw->wl, WIDGET_LIST_WINDOW, (void *) gGui->video_window); @@ -395,7 +399,12 @@ XLockDisplay (gGui->video_display); } - XSelectInput(gGui->video_display, gGui->video_window, ExposureMask); + if(!(gGui->no_mouse)) + XSelectInput(gGui->video_display, gGui->video_window, ExposureMask); + else + XSelectInput(gGui->video_display, + gGui->video_window, + ExposureMask & (~(ButtonPressMask | ButtonReleaseMask))); _set_window_title(); @@ -425,7 +434,7 @@ XUnlockDisplay (gGui->video_display); - if(gGui->video_display == gGui->display) + if((gGui->video_display == gGui->display)) gVw->widget_key = xitk_register_event_handler("video_window", gGui->video_window, video_window_handle_event, @@ -668,13 +677,15 @@ attr.colormap = gVw->colormap; border_width = 0; - - gGui->video_window = - XCreateWindow (gGui->video_display, DefaultRootWindow(gGui->video_display), - hint.x, hint.y, gVw->visible_width, gVw->visible_height, - border_width, gVw->depth, InputOutput, - gVw->visual, - CWBackPixel | CWBorderPixel | CWColormap, &attr); + if(gGui->wid) + gGui->video_window = gGui->wid; + else + gGui->video_window = + XCreateWindow (gGui->video_display, DefaultRootWindow(gGui->video_display), + hint.x, hint.y, gVw->visible_width, gVw->visible_height, + border_width, gVw->depth, InputOutput, + gVw->visual, + CWBackPixel | CWBorderPixel | CWColormap, &attr); if(gGui->video_display == gGui->display) xitk_widget_list_set(gVw->wl, WIDGET_LIST_WINDOW, (void *) gGui->video_window); @@ -766,13 +777,16 @@ border_width = 0; - gGui->video_window = - XCreateWindow (gGui->video_display, DefaultRootWindow(gGui->video_display), - hint.x, hint.y, gVw->visible_width, gVw->visible_height, - border_width, gVw->depth, InputOutput, - gVw->visual, - CWBackPixel | CWBorderPixel | CWColormap, &attr); - + if(gGui->wid) + gGui->video_window = gGui->wid; + else + gGui->video_window = + XCreateWindow (gGui->video_display, DefaultRootWindow(gGui->video_display), + hint.x, hint.y, gVw->visible_width, gVw->visible_height, + border_width, gVw->depth, InputOutput, + gVw->visual, + CWBackPixel | CWBorderPixel | CWColormap, &attr); + if(gGui->video_display == gGui->display) xitk_widget_list_set(gVw->wl, WIDGET_LIST_WINDOW, (void *) gGui->video_window); @@ -915,12 +929,15 @@ else border_width = 4; - gGui->video_window = - XCreateWindow(gGui->video_display, DefaultRootWindow(gGui->video_display), - hint.x, hint.y, hint.width, hint.height, border_width, - gVw->depth, InputOutput, gVw->visual, - CWBackPixel | CWBorderPixel | CWColormap, &attr); - + if(gGui->wid) + gGui->video_window = gGui->wid; + else + gGui->video_window = + XCreateWindow(gGui->video_display, DefaultRootWindow(gGui->video_display), + hint.x, hint.y, hint.width, hint.height, border_width, + gVw->depth, InputOutput, gVw->visual, + CWBackPixel | CWBorderPixel | CWColormap, &attr); + if(gGui->video_display == gGui->display) xitk_widget_list_set(gVw->wl, WIDGET_LIST_WINDOW, (void *) gGui->video_window); @@ -956,8 +973,13 @@ } } - XSelectInput(gGui->video_display, gGui->video_window, INPUT_MOTION | KeymapStateMask); - + if(!(gGui->no_mouse)) + XSelectInput(gGui->video_display, gGui->video_window, INPUT_MOTION | KeymapStateMask); + else + XSelectInput(gGui->video_display, + gGui->video_window, + (INPUT_MOTION | KeymapStateMask) & (~(ButtonPressMask | ButtonReleaseMask))); + wm_hint = XAllocWMHints(); if (wm_hint != NULL) { wm_hint->input = True; @@ -1048,12 +1070,12 @@ if(gGui->video_display == gGui->display) gVw->widget_key = xitk_register_event_handler("video_window", - gGui->video_window, - video_window_handle_event, - NULL, - gui_dndcallback, - NULL, NULL); - + gGui->video_window, + video_window_handle_event, + NULL, + gui_dndcallback, + NULL, NULL); + /* take care about window decoration/pos */ { Window tmp_win; @@ -1996,7 +2018,6 @@ * */ static void video_window_handle_event (XEvent *event, void *data) { - switch(event->type) { case DestroyNotify: @@ -2137,6 +2158,7 @@ } + } void video_window_reset_ssaver(void) { |