From: Daniel Caujolle-B. <f1...@us...> - 2002-11-06 16:32:26
|
Update of /cvsroot/xine/xine-ui/src/xitk In directory usw-pr-cvs1:/tmp/cvs-serv18881 Modified Files: actions.c actions.h control.c event.c file_browser.c mrl_browser.c panel.c playlist.c videowin.c Log Message: Try to cleaning the *layer_above value checks/changes (not perfect, but don't use any extra thread). Index: actions.c =================================================================== RCS file: /cvsroot/xine/xine-ui/src/xitk/actions.c,v retrieving revision 1.96 retrieving revision 1.97 diff -u -r1.96 -r1.97 --- actions.c 6 Nov 2002 09:48:17 -0000 1.96 +++ actions.c 6 Nov 2002 16:32:21 -0000 1.97 @@ -806,6 +806,19 @@ } /* + * Return 1 if layer should be set + */ +int is_layer_above(void) { + + if(gGui->always_layer_above || gGui->layer_above) { + if(!gGui->layer_above) + config_update_num("gui.layer_above", 1); + return 1; + } + + return 0; +} +/* * set window layer property to something above GNOME (and KDE?) panel * (reset to normal if do_raise == 0) */ @@ -814,7 +827,7 @@ static Atom XA_WIN_LAYER = None; XEvent xev; - if(!gGui->layer_above) + if(!(is_layer_above())) return; if(XA_WIN_LAYER == None) { @@ -834,7 +847,7 @@ xev.xclient.data.l[0] = (long) 10; } else { - if(gGui->layer_above) + if(is_layer_above()) xev.xclient.data.l[0] = (long) 10; else xev.xclient.data.l[0] = (long) 4; Index: actions.h =================================================================== RCS file: /cvsroot/xine/xine-ui/src/xitk/actions.h,v retrieving revision 1.32 retrieving revision 1.33 diff -u -r1.32 -r1.33 --- actions.h 31 Oct 2002 10:51:26 -0000 1.32 +++ actions.h 6 Nov 2002 16:32:22 -0000 1.33 @@ -97,6 +97,8 @@ void gui_stream_infos_show(xitk_widget_t *w, void *data); +int is_layer_above(void); + void layer_above_video(Window w); void gui_increase_audio_volume(void); Index: control.c =================================================================== RCS file: /cvsroot/xine/xine-ui/src/xitk/control.c,v retrieving revision 1.65 retrieving revision 1.66 diff -u -r1.65 -r1.66 --- control.c 6 Nov 2002 09:48:18 -0000 1.65 +++ control.c 6 Nov 2002 16:32:22 -0000 1.66 @@ -457,7 +457,7 @@ * WIN_LAYER_ABOVE_DOCK = 10 * */ - if(gGui->layer_above) { + if(is_layer_above()) { XA_WIN_LAYER = XInternAtom(gGui->display, "_WIN_LAYER", False); data[0] = 10; Index: event.c =================================================================== RCS file: /cvsroot/xine/xine-ui/src/xitk/event.c,v retrieving revision 1.133 retrieving revision 1.134 diff -u -r1.133 -r1.134 --- event.c 6 Nov 2002 16:05:34 -0000 1.133 +++ event.c 6 Nov 2002 16:32:22 -0000 1.134 @@ -108,28 +108,15 @@ } /* - * Layer above callback + * Layer above callbacks */ -static void *layer_above_change_thread(void *data) { - pthread_detach(pthread_self()); - sleep(1); - config_update_num("gui.layer_above", 1); - pthread_exit(NULL); - return NULL; +static void layer_above_cb(void *data, xine_cfg_entry_t *cfg) { + gGui->layer_above = cfg->num_value; } static void always_layer_above_cb(void *data, xine_cfg_entry_t *cfg) { - pthread_t th; - gGui->always_layer_above = cfg->num_value; - - if(gGui->always_layer_above && (!gGui->layer_above)) { - /* - * This is really ugly, but xine config functions are mutex locked, - * so we can't access to config stuff within config callback function. - */ - pthread_create(&th, NULL, layer_above_change_thread, NULL); - } } + /* * Callback for snapshots saving location. */ @@ -816,7 +803,7 @@ _("use wm layer property to place window on top"), CONFIG_NO_HELP, CONFIG_LEVEL_EXP, - CONFIG_NO_CB, + layer_above_cb, CONFIG_NO_DATA); gGui->always_layer_above = Index: file_browser.c =================================================================== RCS file: /cvsroot/xine/xine-ui/src/xitk/file_browser.c,v retrieving revision 1.16 retrieving revision 1.17 diff -u -r1.16 -r1.17 --- file_browser.c 9 Sep 2002 21:07:26 -0000 1.16 +++ file_browser.c 6 Nov 2002 16:32:22 -0000 1.17 @@ -177,7 +177,7 @@ fbr.imlibdata = gGui->imlib_data; fbr.window_trans = gGui->video_window; - fbr.layer_above = gGui->layer_above; + fbr.layer_above = (is_layer_above()); fbr.x = xine_config_register_num(gGui->xine, "gui.filebrowser_x", Index: mrl_browser.c =================================================================== RCS file: /cvsroot/xine/xine-ui/src/xitk/mrl_browser.c,v retrieving revision 1.44 retrieving revision 1.45 diff -u -r1.44 -r1.45 --- mrl_browser.c 2 Nov 2002 14:51:12 -0000 1.44 +++ mrl_browser.c 6 Nov 2002 16:32:22 -0000 1.45 @@ -251,7 +251,7 @@ XITK_WIDGET_INIT(&mb, gGui->imlib_data); mb.window_trans = gGui->video_window; - mb.layer_above = gGui->layer_above; + mb.layer_above = (is_layer_above()); mb.x = xine_config_register_num (gGui->xine, "gui.mrl_browser_x", 200, Index: panel.c =================================================================== RCS file: /cvsroot/xine/xine-ui/src/xitk/panel.c,v retrieving revision 1.120 retrieving revision 1.121 diff -u -r1.120 -r1.121 --- panel.c 6 Nov 2002 09:48:18 -0000 1.120 +++ panel.c 6 Nov 2002 16:32:22 -0000 1.121 @@ -802,7 +802,7 @@ * WIN_LAYER_ABOVE_DOCK = 10 * */ - if(gGui->layer_above) { + if(is_layer_above()) { XA_WIN_LAYER = XInternAtom(gGui->display, "_WIN_LAYER", False); data[0] = 10; Index: playlist.c =================================================================== RCS file: /cvsroot/xine/xine-ui/src/xitk/playlist.c,v retrieving revision 1.72 retrieving revision 1.73 diff -u -r1.72 -r1.73 --- playlist.c 6 Nov 2002 09:48:18 -0000 1.72 +++ playlist.c 6 Nov 2002 16:32:22 -0000 1.73 @@ -818,7 +818,7 @@ * WIN_LAYER_ABOVE_DOCK = 10 * */ - if(gGui->layer_above) { + if(is_layer_above()) { XA_WIN_LAYER = XInternAtom(gGui->display, "_WIN_LAYER", False); data[0] = 10; Index: videowin.c =================================================================== RCS file: /cvsroot/xine/xine-ui/src/xitk/videowin.c,v retrieving revision 1.134 retrieving revision 1.135 diff -u -r1.134 -r1.135 --- videowin.c 6 Nov 2002 15:55:54 -0000 1.134 +++ videowin.c 6 Nov 2002 16:32:22 -0000 1.135 @@ -545,7 +545,7 @@ * WIN_LAYER_ABOVE_DOCK = 10 * */ - if(gGui->layer_above) { + if(is_layer_above()) { if(XA_WIN_LAYER == None) XA_WIN_LAYER = XInternAtom(gGui->display, "_WIN_LAYER", False); @@ -980,7 +980,7 @@ * */ - if(gGui->layer_above && (gVw->hide_on_start == 0)) { + if((is_layer_above()) && (gVw->hide_on_start == 0)) { if(XA_WIN_LAYER == None) XA_WIN_LAYER = XInternAtom(gGui->display, "_WIN_LAYER", False); |