File xine-ui-crippled-LOCAL.diff of Package xine-ui

Index: configure.ac
===================================================================
--- configure.ac.orig	2018-01-23 15:09:34.754548489 +0200
+++ configure.ac	2018-01-23 15:10:06.827563191 +0200
@@ -708,6 +708,7 @@ AC_DEFUN([XINE_LOCATE_MEDIA],
 ])
 
 XINE_LOCATE_MEDIA([XINE_LOGO_MRL], [jpg png mpv], [mpv], [xine-ui_logo], [logo], [official logo MRL])
+XINE_LOCATE_MEDIA([XINE_LOGO_CRIPPLED_MRL], [jpg png mpv], [mpv], [xine-ui_logo-crippled], [logo], [logo mrl for reduced functionality])
 XINE_LOCATE_MEDIA([XINE_SPLASH], [jpg png], [png], [xine_splash], [splash], [splash image filename])
 
 XINE_VISDIR="${datadir}/xine/visuals"
Index: misc/xine-check.sh.in
===================================================================
--- misc/xine-check.sh.in.orig	2018-01-23 15:09:34.754548489 +0200
+++ misc/xine-check.sh.in	2018-01-23 15:10:06.827563191 +0200
@@ -602,7 +602,13 @@ if test -n "$skindir"; then
       if test -f xine-ui_logo.mpv || test -f xine-ui_logo.png || test -f xine-ui_logo.jpg; then
         msg logo-exists
       else
-        msg no-xine-logo 2
+        if test -f xine-ui_logo-crippled.png; then
+          msg ONLY the CRIPPLED logo exists
+          msg this is NOT a full enabled version of xine !
+          msg most likely it is not possible to play DVDs !
+        else
+          msg no-xine-logo 2
+        fi
       fi
       skins=
       for dir in *; do
Index: src/xitk/common.h
===================================================================
--- src/xitk/common.h.orig	2018-01-23 15:09:34.754548489 +0200
+++ src/xitk/common.h	2018-01-23 15:10:06.827563191 +0200
@@ -245,6 +245,8 @@ typedef struct {
 
   int                       logo_mode;
   const char               *logo_mrl;
+  const char               *logo_crippled_mrl;
+  int                       logo_select;
   pthread_mutex_t           logo_mutex;
   int                       logo_has_changed;
   int                       display_logo;
Index: src/xitk/main.c
===================================================================
--- src/xitk/main.c.orig	2018-01-23 15:09:34.758548614 +0200
+++ src/xitk/main.c	2018-01-23 15:10:12.923756244 +0200
@@ -416,6 +416,9 @@ static void main_change_logo_cb(void *da
   gGui_t *gui = gGui;
   gui->logo_mrl = cfg->str_value;
 }
+static void main_change_logo_crippled_cb(void *data, xine_cfg_entry_t *cfg) {
+  gGui->logo_crippled_mrl = cfg->str_value;
+}
 static void sub_autoload_cb(void *data, xine_cfg_entry_t *cfg) {
   gGui_t *gui = gGui;
   gui->subtitle_autoload = cfg->num_value;
@@ -1427,6 +1430,9 @@ int main(int argc, char *argv[]) {
   char                  **session_argv     = NULL;
   int                     session_argv_num = 0;
   int                     retval           = 0;
+  const char * const     *decoders;
+  const char * const     *d;
+  int                     i;
   pthread_mutexattr_t     mutexattr;
   
   /* Set stdout always line buffered to get every     */
@@ -2251,6 +2257,25 @@ int main(int argc, char *argv[]) {
 						CONFIG_LEVEL_EXP,
 						main_change_logo_cb, 
 						CONFIG_NO_DATA);
+  gGui->logo_crippled_mrl = xine_config_register_string (__xineui_global_xine_instance, "gui.logo_crippled_mrl", XINE_LOGO_CRIPPLED_MRL,
+						_("Logo mrl (reduced functionality)"),
+						CONFIG_NO_HELP,
+						CONFIG_LEVEL_EXP,
+						main_change_logo_crippled_cb,
+						CONFIG_NO_DATA);
+
+  /*
+   * Check for important codecs and select logo
+   */
+  decoders = xine_list_video_decoder_plugins (__xineui_global_xine_instance);
+  i = 0;
+  for (d = decoders; *d; d++) {
+    if (strcmp (*d, "mpeg2") == 0)
+      i |= 1;
+    if (strcmp (*d, "ffmpegvideo") == 0)
+      i |= 2;
+  }
+  gGui->logo_select = (i == 3) ? 0 : 1;
 
   gui->event_queue = xine_event_new_queue(gui->stream);
   xine_event_create_listener_thread(gui->event_queue, event_listener, NULL);
Index: src/xitk/videowin.c
===================================================================
--- src/xitk/videowin.c.orig	2018-01-23 15:09:34.758548614 +0200
+++ src/xitk/videowin.c	2018-01-23 15:22:49.568151904 +0200
@@ -1,18 +1,18 @@
-/* 
+/*
  * Copyright (C) 2000-2017 the xine project
- * 
+ *
  * This file is part of xine, a free video player.
- * 
+ *
  * xine is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
  * (at your option) any later version.
- * 
+ *
  * xine is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
- * 
+ *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
@@ -94,7 +94,7 @@ static struct {
   int                    fullscreen_width;
   int                    fullscreen_height;
 
-  int                    xinerama_fullscreen_x; /* will contain paramaters for very 
+  int                    xinerama_fullscreen_x; /* will contain paramaters for very
 						   fullscreen in xinerama mode */
   int                    xinerama_fullscreen_y;
   int                    xinerama_fullscreen_width;
@@ -138,14 +138,14 @@ static struct {
   int                    XF86_modelines_count;
 #endif
 
-  int                    hide_on_start; /* user use '-H' arg, don't map 
+  int                    hide_on_start; /* user use '-H' arg, don't map
 					   video window the first time */
 
   struct timeval         click_time;
 
   pthread_t              second_display_thread;
   int                    second_display_running;
-  
+
   int                    logo_synthetic;
 
   pthread_mutex_t        mutex;
@@ -184,17 +184,17 @@ static void _video_window_zoom_small_cb(
   gVw.zoom_small_stream = cfg->num_value;
 }
 
-static Bool have_xtestextention(void) {  
+static Bool have_xtestextention(void) {
   gGui_t *gui = gGui;
   Bool xtestext = False;
 #ifdef HAVE_XTESTEXTENSION
   int dummy1 = 0, dummy2 = 0, dummy3 = 0, dummy4 = 0;
-  
+
   XLockDisplay(gui->video_display);
   xtestext = XTestQueryExtension(gui->video_display, &dummy1, &dummy2, &dummy3, &dummy4);
   XUnlockDisplay(gui->video_display);
 #endif
-  
+
   return xtestext;
 }
 
@@ -204,32 +204,32 @@ static void _set_window_title(void) {
   XSync(gui->video_display, False);
 }
 
-/* 
+/*
  * very small X event loop for the second display
  */
 static __attribute__((noreturn)) void *second_display_loop (void *dummy) {
   gGui_t *gui = gGui;
-  
+
   while(gVw.second_display_running) {
     XEvent   xevent;
     int      got_event;
 
     xine_usec_sleep(20000);
-    
+
     do {
         XLockDisplay(gui->video_display);
         got_event = XPending(gui->video_display);
         if( got_event )
           XNextEvent(gui->video_display, &xevent);
         XUnlockDisplay(gui->video_display);
-        
+
         if( got_event && gui->stream ) {
           video_window_handle_event(&xevent, NULL);
         }
     } while (got_event);
 
   }
-  
+
   pthread_exit(NULL);
 }
 
@@ -246,7 +246,7 @@ static void video_window_find_visual (Vi
   if (gui->prefered_visual_id == None) {
     /*
      * List all available TrueColor visuals, pick the best one for xine.
-     * We prefer visuals of depth 15/16 (fast).  Depth 24/32 may be OK, 
+     * We prefer visuals of depth 15/16 (fast).  Depth 24/32 may be OK,
      * but could be slow.
      */
     vinfo_tmpl.screen = gui->video_screen;
@@ -267,18 +267,18 @@ static void video_window_find_visual (Vi
 	  pref = 2;
 	else
 	  pref = 1;
-	
+
 	if (pref > best_visual) {
 	  best_visual = pref;
 	  best_visual_index = i;
-	}  
+	}
       }
-      
+
       if (best_visual_index != -1) {
 	depth = vinfo[best_visual_index].depth;
 	visual = vinfo[best_visual_index].visual;
       }
-      
+
       XFree(vinfo);
     }
   } else {
@@ -287,7 +287,7 @@ static void video_window_find_visual (Vi
      */
     vinfo_tmpl.visualid = gui->prefered_visual_id;
     vinfo = XGetVisualInfo(gui->video_display,
-			   VisualIDMask, &vinfo_tmpl, 
+			   VisualIDMask, &vinfo_tmpl,
 			   &num_visuals);
     if (vinfo == NULL) {
       printf(_("gui_main: selected visual %#lx does not exist, trying default visual\n"),
@@ -305,14 +305,14 @@ static void video_window_find_visual (Vi
     XGetWindowAttributes(gui->video_display, (DefaultRootWindow(gui->video_display)), &attribs);
 
     depth = attribs.depth;
-  
+
     if (XMatchVisualInfo(gui->video_display, gui->video_screen, depth, TrueColor, &vinfo)) {
       visual = vinfo.visual;
     } else {
       printf (_("gui_main: couldn't find true color visual.\n"));
 
       depth = DefaultDepth (gui->video_display, gui->video_screen);
-      visual = DefaultVisual (gui->video_display, gui->video_screen); 
+      visual = DefaultVisual (gui->video_display, gui->video_screen);
     }
   }
 
@@ -383,7 +383,7 @@ static void video_window_lock_opacity (v
  * output_width/output_height
  * visible_width/visible_height/visible_aspect
  */
-static void video_window_adapt_size (void) { 
+static void video_window_adapt_size (void) {
   gGui_t *gui = gGui;
   XSizeHints            hint;
   XWMHints             *wm_hint;
@@ -418,28 +418,28 @@ static void video_window_adapt_size (voi
 
       if(gui->video_display != gui->display) {
         video_window_find_visual (&gVw.visual, &gVw.depth);
-        gVw.colormap = DefaultColormap(gui->video_display, gui->video_screen); 
+        gVw.colormap = DefaultColormap(gui->video_display, gui->video_screen);
       }
-      
+
       /* This couldn't happen, but we're paranoid ;-) */
-      if((rootwindow = xitk_get_desktop_root_window(gui->video_display, 
+      if((rootwindow = xitk_get_desktop_root_window(gui->video_display,
 						    gui->video_screen, &wparent)) == None)
 	rootwindow = DefaultRootWindow(gui->video_display);
 
       attr.override_redirect = True;
       attr.background_pixel  = gui->black.pixel;
-      
+
       border_width = 0;
 
       if(gui->wid)
 	gui->video_window = gui->wid;
       else
 	gui->video_window = XCreateWindow(gui->video_display, rootwindow,
-					   0, 0, gVw.fullscreen_width, gVw.fullscreen_height, 
-					   border_width, 
-					   CopyFromParent, CopyFromParent, CopyFromParent, 
+					   0, 0, gVw.fullscreen_width, gVw.fullscreen_height,
+					   border_width,
+					   CopyFromParent, CopyFromParent, CopyFromParent,
 					   CWBackPixel | CWOverrideRedirect, &attr);
-      
+
       if(gui->video_display == gui->display)
         xitk_widget_list_set(gVw.wl, WIDGET_LIST_WINDOW, (void *) gui->video_window);
 
@@ -455,13 +455,13 @@ static void video_window_adapt_size (voi
 	XSelectInput(gui->video_display,
                      gui->video_window,
                      ExposureMask & (~(ButtonPressMask | ButtonReleaseMask)));
-      
+
       _set_window_title();
-      
+
       gcv.foreground         = gui->black.pixel;
       gcv.background         = gui->black.pixel;
       gcv.graphics_exposures = False;
-      gVw.gc = XCreateGC(gui->video_display, gui->video_window, 
+      gVw.gc = XCreateGC(gui->video_display, gui->video_window,
 			  GCForeground | GCBackground | GCGraphicsExposures, &gcv);
 
       if(gui->video_display == gui->display)
@@ -477,9 +477,9 @@ static void video_window_adapt_size (voi
       video_window_lock_opacity();
 
       XClearWindow(gui->video_display, gui->video_window);
-      
+
       XMapWindow(gui->video_display, gui->video_window);
-      
+
       XLowerWindow(gui->video_display, gui->video_window);
 
       gVw.old_widget_key = gVw.widget_key;
@@ -487,18 +487,18 @@ static void video_window_adapt_size (voi
       XUnlockDisplay (gui->video_display);
 
       if(gui->video_display == gui->display)
-        gVw.widget_key = xitk_register_event_handler("video_window", 
-						    gui->video_window, 
+        gVw.widget_key = xitk_register_event_handler("video_window",
+						    gui->video_window,
 						    video_window_handle_event,
 						    NULL,
 						    gui_dndcallback,
 						    NULL, NULL);
-    
+
       return;
     }
-    
+
     XUnlockDisplay (gui->video_display);
-    
+
     return;
   }
 
@@ -511,7 +511,7 @@ static void video_window_adapt_size (voi
   if(( (!(gVw.fullscreen_req & WINDOWED_MODE)) || (!(gVw.fullscreen_mode & WINDOWED_MODE)))
      && (gVw.XF86_modelines_count > 1)) {
     int search = 0;
-    
+
     /* skipping first entry because it is the current modeline */
     for(search = 1; search < gVw.XF86_modelines_count; search++) {
        if(gVw.XF86_modelines[search]->hdisplay >= gVw.video_width)
@@ -524,7 +524,7 @@ static void video_window_adapt_size (voi
      */
     if((!(gVw.fullscreen_mode & WINDOWED_MODE)) && (search >= gVw.XF86_modelines_count))
        search = 0;
-       
+
     /* just switching to a different modeline if necessary */
     if(!(search >= gVw.XF86_modelines_count)) {
        if(XF86VidModeSwitchToMode(gui->video_display, XDefaultScreen(gui->video_display), gVw.XF86_modelines[search])) {
@@ -532,17 +532,17 @@ static void video_window_adapt_size (voi
 #ifdef HAVE_XINERAMA
 	  int dummy_event, dummy_error;
 #endif
-	  
-	  gui->XF86VidMode_fullscreen = 1;	  
+
+	  gui->XF86VidMode_fullscreen = 1;
 	  gVw.fullscreen_width        = gVw.XF86_modelines[search]->hdisplay;
 	  gVw.fullscreen_height       = gVw.XF86_modelines[search]->vdisplay;
-	  
+
 	  /* update pixel aspect */
-	  res_h = (DisplayWidth  (gui->video_display, gui->video_screen)*1000 
+	  res_h = (DisplayWidth  (gui->video_display, gui->video_screen)*1000
 		   / DisplayWidthMM (gui->video_display, gui->video_screen));
 	  res_v = (DisplayHeight (gui->video_display, gui->video_screen)*1000
 		   / DisplayHeightMM (gui->video_display, gui->video_screen));
-  
+
 	  gui->pixel_aspect    = res_v / res_h;
 #ifdef HAVE_XINERAMA
 	  if (XineramaQueryExtension(gui->video_display, &dummy_event, &dummy_error)) {
@@ -563,9 +563,9 @@ static void video_window_adapt_size (voi
 	   * to the middle of the video window
 	   */
 	  XWarpPointer(gui->video_display, None, gui->video_window, 0, 0, 0, 0, gVw.fullscreen_width/2, gVw.fullscreen_height/2);
-	  
+
 	  XF86VidModeSetViewPort(gui->video_display, XDefaultScreen(gui->video_display), 0, 0);
-          
+
 	  /*
 	   * if this is true, we are back at the original resolution, so there
 	   * is no need to further worry about anything.
@@ -597,7 +597,7 @@ static void video_window_adapt_size (voi
 	knowLocation = 1;
       }
     }
-    
+
     if (gVw.fullscreen_req & FULLSCR_XI_MODE) {
       hint.x = gVw.xinerama_fullscreen_x;
       hint.y = gVw.xinerama_fullscreen_y;
@@ -605,10 +605,10 @@ static void video_window_adapt_size (voi
       hint.height = gVw.xinerama_fullscreen_height;
       gVw.fullscreen_width = hint.width;
       gVw.fullscreen_height = hint.height;
-    } 
+    }
     else {
       /* Get mouse cursor position */
-      XQueryPointer(gui->video_display, RootWindow(gui->video_display, gui->video_screen), 
+      XQueryPointer(gui->video_display, RootWindow(gui->video_display, gui->video_screen),
 		    &root_win, &dummy_win, &x_mouse, &y_mouse, &dummy_x, &dummy_y, &dummy_opts);
 
       for (i = 0; i < gVw.xinerama_cnt; i++) {
@@ -627,7 +627,7 @@ static void video_window_adapt_size (voi
 	      XScreenNumberOfScreen(XDefaultScreenOfDisplay(gui->video_display)))) {*/
 	  hint.x = gVw.xinerama[i].x_org;
 	  hint.y = gVw.xinerama[i].y_org;
-	  
+
 	  if(knowLocation == 0) {
 	    gVw.old_xwin = hint.x;
 	    gVw.old_ywin = hint.y;
@@ -638,7 +638,7 @@ static void video_window_adapt_size (voi
 	    hint.height = gVw.xinerama[i].height;
 	    gVw.fullscreen_width = hint.width;
 	    gVw.fullscreen_height = hint.height;
-	  } 
+	  }
 	  else {
 	    hint.width  = gVw.video_width;
 	    hint.height = gVw.video_height;
@@ -647,7 +647,7 @@ static void video_window_adapt_size (voi
 	}
       }
     }
-  } 
+  }
   else {
     hint.x = 0;
     hint.y = 0;
@@ -663,7 +663,7 @@ static void video_window_adapt_size (voi
   hint.x = 0;
   hint.y = 0;   /* for now -- could change later */
 #endif /* HAVE_XINERAMA */
-  
+
   gVw.visible_width  = gVw.fullscreen_width;
   gVw.visible_height = gVw.fullscreen_height;
   gVw.visible_aspect = gui->pixel_aspect;
@@ -674,8 +674,8 @@ static void video_window_adapt_size (voi
 			      &gVw.visible_width, &gVw.visible_height,
 			      &gVw.visible_aspect);
     tvout_get_size_and_aspect(gui->tvout,
-			      &hint.width, &hint.height, NULL);    
-    tvout_set_fullscreen_mode(gui->tvout, 
+			      &hint.width, &hint.height, NULL);
+    tvout_set_fullscreen_mode(gui->tvout,
 			      !(gVw.fullscreen_req & WINDOWED_MODE) ? 1 : 0,
 			      gVw.visible_width, gVw.visible_height);
   }
@@ -718,7 +718,7 @@ static void video_window_adapt_size (voi
     gVw.colormap = gui->colormap;
     if(gui->video_display != gui->display) {
       video_window_find_visual (&gVw.visual, &gVw.depth);
-      gVw.colormap = DefaultColormap(gui->video_display, gui->video_screen);  
+      gVw.colormap = DefaultColormap(gui->video_display, gui->video_screen);
     }
     /*
      * open fullscreen window
@@ -786,7 +786,7 @@ static void video_window_adapt_size (voi
       if ((!(gVw.fullscreen_mode & WINDOWED_MODE)) && (gui->visual == gVw.visual)) {
 //#ifdef HAVE_XF86VIDMODE
 //	if(gVw.XF86_modelines_count > 1) {
-	if ((gVw.visible_width != gVw.output_width) 
+	if ((gVw.visible_width != gVw.output_width)
 	    || (gVw.visible_height != gVw.output_height)) {
 	   /*
 	    * resizing the video window may be necessary if the modeline or tv mode has
@@ -800,13 +800,13 @@ static void video_window_adapt_size (voi
 //#endif
         gVw.fullscreen_mode = gVw.fullscreen_req;
 	XUnlockDisplay (gui->video_display);
-	
+
 	return;
       }
-      
+
       xitk_get_window_position(gui->video_display, gui->video_window,
       			       &gVw.old_xwin, &gVw.old_ywin, &dummy, &dummy);
-      
+
       if(gui->video_display == gui->display)
         xitk_unregister_event_handler(&gVw.old_widget_key);
       old_video_window = gui->video_window;
@@ -816,10 +816,10 @@ static void video_window_adapt_size (voi
     gVw.visual   = gui->visual;
     gVw.depth    = gui->depth;
     gVw.colormap = gui->colormap;
-    
+
     if(gui->video_display != gui->display) {
       video_window_find_visual (&gVw.visual, &gVw.depth);
-      gVw.colormap = DefaultColormap(gui->video_display, gui->video_screen); 
+      gVw.colormap = DefaultColormap(gui->video_display, gui->video_screen);
     }
 
     /*
@@ -835,22 +835,22 @@ static void video_window_adapt_size (voi
     if(gui->wid)
       gui->video_window = gui->wid;
     else
-      gui->video_window = 
-	XCreateWindow (gui->video_display, DefaultRootWindow(gui->video_display), 
-		       hint.x, hint.y, gVw.visible_width, gVw.visible_height, 
+      gui->video_window =
+	XCreateWindow (gui->video_display, DefaultRootWindow(gui->video_display),
+		       hint.x, hint.y, gVw.visible_width, gVw.visible_height,
 		       border_width, gVw.depth, InputOutput,
 		       gVw.visual,
 		       CWBackPixel | CWBorderPixel | CWColormap, &attr);
-  
+
     if(gui->video_display == gui->display)
       xitk_widget_list_set(gVw.wl, WIDGET_LIST_WINDOW, (void *) gui->video_window);
-    
+
     if(gui->vo_port) {
       XUnlockDisplay (gui->video_display);
       xine_port_send_gui_data(gui->vo_port, XINE_GUI_SEND_DRAWABLE_CHANGED, (void*)gui->video_window);
       XLockDisplay (gui->video_display);
     }
-    
+
     if (gVw.xclasshint_fullscreen != NULL)
       XSetClassHint(gui->video_display, gui->video_window, gVw.xclasshint_fullscreen);
 
@@ -862,18 +862,18 @@ static void video_window_adapt_size (voi
 #endif
     hint.win_gravity = StaticGravity;
     hint.flags  = PPosition | PSize | PWinGravity;
-    
+
     _set_window_title();
-    
+
     XSetWMNormalHints (gui->video_display, gui->video_window, &hint);
-        
+
     XSetWMHints(gui->video_display, gui->video_window, gVw.wm_hint);
 
     video_window_lock_opacity();
 
     gVw.output_width    = hint.width;
     gVw.output_height   = hint.height;
-    
+
     /*
      * wm, no borders please
      */
@@ -885,9 +885,9 @@ static void video_window_adapt_size (voi
 		    PropModeReplace, (unsigned char *) &mwmhints,
 		    PROP_MWM_HINTS_ELEMENTS);
 
-  } 
+  }
   else {
-       
+
 #ifndef HAVE_XINERAMA
     hint.x           = 0;
     hint.y           = 0;
@@ -895,7 +895,7 @@ static void video_window_adapt_size (voi
     hint.height      = gVw.win_height;
 #endif
     hint.flags       = PPosition | PSize;
-    
+
     /*
      * user sets window geom, move back to original location.
      */
@@ -906,7 +906,7 @@ static void video_window_adapt_size (voi
 
     gVw.old_win_width  = hint.width;
     gVw.old_win_height = hint.height;
-    
+
     gVw.output_width  = hint.width;
     gVw.output_height = hint.height;
 
@@ -923,21 +923,21 @@ static void video_window_adapt_size (voi
 #ifdef HAVE_XINERAMA
 	   int dummy_event, dummy_error;
 #endif
-	   
+
 	   XF86VidModeSwitchToMode(gui->video_display, XDefaultScreen(gui->video_display), gVw.XF86_modelines[0]);
 	   XF86VidModeSetViewPort(gui->video_display, XDefaultScreen(gui->video_display), 0, 0);
 
 	   gui->XF86VidMode_fullscreen = 0;
-       
+
 	   gVw.fullscreen_width  = gVw.XF86_modelines[0]->hdisplay;
 	   gVw.fullscreen_height = gVw.XF86_modelines[0]->vdisplay;
-	   
+
 	   /* update pixel aspect */
-	   res_h = (DisplayWidth  (gui->video_display, gui->video_screen)*1000 
+	   res_h = (DisplayWidth  (gui->video_display, gui->video_screen)*1000
 		    / DisplayWidthMM (gui->video_display, gui->video_screen));
 	   res_v = (DisplayHeight (gui->video_display, gui->video_screen)*1000
 		    / DisplayHeightMM (gui->video_display, gui->video_screen));
-  
+
 	   gui->pixel_aspect    = res_v / res_h;
 #ifdef HAVE_XINERAMA
 	   if (XineramaQueryExtension(gui->video_display, &dummy_event, &dummy_error)) {
@@ -959,16 +959,16 @@ static void video_window_adapt_size (voi
 	old_video_window = gui->video_window;
       }
       else {
-	
+
 	/* Update window size hints with the new size */
 	XSetNormalHints(gui->video_display, gui->video_window, &hint);
-	
-	XResizeWindow (gui->video_display, gui->video_window, 
+
+	XResizeWindow (gui->video_display, gui->video_window,
 		       gVw.win_width, gVw.win_height);
-	
+
 	XUnlockDisplay (gui->video_display);
-	
-	return;	
+
+	return;
       }
     }
 
@@ -976,7 +976,7 @@ static void video_window_adapt_size (voi
     gVw.visual            = gui->visual;
     gVw.depth             = gui->depth;
     gVw.colormap          = gui->colormap;
-      
+
     if(gui->video_display != gui->display) {
       video_window_find_visual (&gVw.visual, &gVw.depth);
       gVw.colormap = DefaultColormap(gui->video_display, gui->video_screen);
@@ -995,7 +995,7 @@ static void video_window_adapt_size (voi
     else
       gui->video_window =
 	XCreateWindow(gui->video_display, DefaultRootWindow(gui->video_display),
-		      hint.x, hint.y, hint.width, hint.height, border_width, 
+		      hint.x, hint.y, hint.width, hint.height, border_width,
 		      gVw.depth, InputOutput, gVw.visual,
 		      CWBackPixel | CWBorderPixel | CWColormap, &attr);
 
@@ -1007,7 +1007,7 @@ static void video_window_adapt_size (voi
       xine_port_send_gui_data(gui->vo_port, XINE_GUI_SEND_DRAWABLE_CHANGED, (void*)gui->video_window);
       XLockDisplay (gui->video_display);
     }
-    
+
     if(gVw.borderless) {
       if (gVw.xclasshint_borderless != NULL)
 	XSetClassHint(gui->video_display, gui->video_window, gVw.xclasshint_borderless);
@@ -1036,14 +1036,14 @@ static void video_window_adapt_size (voi
 		      PROP_MWM_HINTS_ELEMENTS);
     }
   }
-  
+
   if(!(gui->no_mouse))
     XSelectInput(gui->video_display, gui->video_window, INPUT_MOTION | KeymapStateMask);
   else
     XSelectInput(gui->video_display,
 		 gui->video_window,
 		 (INPUT_MOTION | KeymapStateMask) & (~(ButtonPressMask | ButtonReleaseMask)));
-  
+
   wm_hint = XAllocWMHints();
   if (wm_hint != NULL) {
     wm_hint->input = True;
@@ -1064,42 +1064,42 @@ static void video_window_adapt_size (voi
   else {
     /* Map window. */
 
-    if((gui->always_layer_above || 
-	((!(gVw.fullscreen_mode & WINDOWED_MODE)) && is_layer_above())) && 
+    if((gui->always_layer_above ||
+	((!(gVw.fullscreen_mode & WINDOWED_MODE)) && is_layer_above())) &&
        !wm_not_ewmh_only()) {
       xitk_set_layer_above(gui->video_window);
     }
-        
+
     XRaiseWindow(gui->video_display, gui->video_window);
     XMapWindow(gui->video_display, gui->video_window);
-    
+
     while(!xitk_is_window_visible(gui->video_display, gui->video_window))
       xine_usec_sleep(5000);
 
-    if((gui->always_layer_above || 
-	((!(gVw.fullscreen_mode & WINDOWED_MODE)) && is_layer_above())) && 
+    if((gui->always_layer_above ||
+	((!(gVw.fullscreen_mode & WINDOWED_MODE)) && is_layer_above())) &&
        wm_not_ewmh_only()) {
       xitk_set_layer_above(gui->video_window);
     }
-    
+
     /* inform the window manager that we are fullscreen. This info musn't be set for xinerama-fullscreen,
        otherwise there are 2 different window size for one fullscreen mode ! (kwin doesn't accept this) */
     if( !(gVw.fullscreen_mode & WINDOWED_MODE)
      && !(gVw.fullscreen_mode & FULLSCR_XI_MODE)
      && wm_not_ewmh_only())
       xitk_set_ewmh_fullscreen(gui->video_window);
-    
+
   }
-  
+
   XSync(gui->video_display, False);
 
-  if(gVw.gc != None) 
+  if(gVw.gc != None)
     XFreeGC(gui->video_display, gVw.gc);
 
   gVw.gc = XCreateGC(gui->video_display, gui->video_window, 0L, &xgcv);
   if(gui->video_display == gui->display)
     xitk_widget_list_set(gVw.wl, WIDGET_LIST_GC, gVw.gc);
-      
+
   if ((!(gVw.fullscreen_mode & WINDOWED_MODE))) {
     /* Waiting for visibility, avoid X error on some cases */
 
@@ -1122,9 +1122,9 @@ static void video_window_adapt_size (voi
   /* The old window should be destroyed now */
   if(old_video_window != None) {
     XDestroyWindow(gui->video_display, old_video_window);
-     
+
     if(gui->cursor_grabbed)
-       XGrabPointer(gui->video_display, gui->video_window, 1, 
+       XGrabPointer(gui->video_display, gui->video_window, 1,
 		    None, GrabModeAsync, GrabModeAsync, gui->video_window, None, CurrentTime);
   }
 
@@ -1133,19 +1133,19 @@ static void video_window_adapt_size (voi
   gVw.old_widget_key = gVw.widget_key;
 
   if(gui->video_display == gui->display)
-    gVw.widget_key = xitk_register_event_handler("video_window", 
-						  gui->video_window, 
+    gVw.widget_key = xitk_register_event_handler("video_window",
+						  gui->video_window,
 						  video_window_handle_event,
 						  NULL,
 						  gui_dndcallback,
 						  NULL, NULL);
-  
+
   /* take care about window decoration/pos */
   {
     Window tmp_win;
-    
+
     XLockDisplay (gui->video_display);
-    XTranslateCoordinates(gui->video_display, gui->video_window, DefaultRootWindow(gui->video_display), 
+    XTranslateCoordinates(gui->video_display, gui->video_window, DefaultRootWindow(gui->video_display),
 			  0, 0, &gVw.xwin, &gVw.ywin, &tmp_win);
     XUnlockDisplay (gui->video_display);
   }
@@ -1171,7 +1171,7 @@ void video_window_dest_size_cb (void *da
   gGui_t *gui = gGui;
 
   pthread_mutex_lock(&gVw.mutex);
-  
+
   gVw.frame_width = video_width;
   gVw.frame_height = video_height;
 
@@ -1184,13 +1184,13 @@ void video_window_dest_size_cb (void *da
   if(gVw.stream_resize_window && (gVw.fullscreen_mode & WINDOWED_MODE)) {
 
     if(gVw.video_width != video_width || gVw.video_height != video_height) {
-      
+
       if((video_width > 0) && (video_height > 0)) {
 	float xmag, ymag;
 
         get_default_mag(video_width, video_height, &xmag, &ymag);
 
-        /* FIXME: this is supposed to give the same results as if a 
+        /* FIXME: this is supposed to give the same results as if a
          * video_window_set_mag(xmag, ymag) was called. Since video_window_adapt_size()
          * check several other details (like border, xinerama, etc) this
          * may produce wrong values in some cases. (?)
@@ -1203,7 +1203,7 @@ void video_window_dest_size_cb (void *da
       }
     }
   }
-  
+
   if (!(gVw.fullscreen_mode & WINDOWED_MODE)) {
     *dest_width  = gVw.visible_width;
     *dest_height = gVw.visible_height;
@@ -1223,7 +1223,7 @@ void video_window_dest_size_cb (void *da
 void video_window_frame_output_cb (void *data,
 				   int video_width, int video_height,
 				   double video_pixel_aspect,
-				   int *dest_x, int *dest_y, 
+				   int *dest_x, int *dest_y,
 				   int *dest_width, int *dest_height,
 				   double *dest_pixel_aspect,
 				   int *win_x, int *win_y) {
@@ -1303,7 +1303,7 @@ void video_window_set_fullscreen_mode (i
   gGui_t *gui = gGui;
 
   pthread_mutex_lock(&gVw.mutex);
-  
+
   if(!(gVw.fullscreen_mode & req_fullscreen)) {
 
 #ifdef HAVE_XINERAMA
@@ -1373,7 +1373,7 @@ void video_window_set_cursor(int cursor)
 
   if(cursor) {
     gVw.current_cursor = cursor;
-    
+
     if(gVw.cursor_visible) {
       gVw.cursor_timer = 0;
       switch(gVw.current_cursor) {
@@ -1389,7 +1389,7 @@ void video_window_set_cursor(int cursor)
       }
     }
   }
-  
+
 }
 
 /*
@@ -1400,12 +1400,12 @@ void video_window_set_cursor_visibility(
 
   if(gui->use_root_window)
     return;
-  
+
   gVw.cursor_visible = show_cursor;
 
   if(show_cursor)
     gVw.cursor_timer = 0;
-  
+
   if(show_cursor) {
     if(gVw.current_cursor == CURSOR_ARROW)
       xitk_cursors_restore_window_cursor(gui->video_display, gui->video_window);
@@ -1414,11 +1414,11 @@ void video_window_set_cursor_visibility(
   }
   else
     xitk_cursors_define_window_cursor(gui->video_display, gui->video_window, xitk_cursor_invisible);
-  
+
 }
 
-/* 
- * Get cursor visiblity (boolean) 
+/*
+ * Get cursor visiblity (boolean)
  */
 int video_window_is_cursor_visible(void) {
   return gVw.cursor_visible;
@@ -1432,8 +1432,8 @@ void video_window_set_cursor_timer(int t
   gVw.cursor_timer = timer;
 }
 
-/* 
- * hide/show video window 
+/*
+ * hide/show video window
  */
 void video_window_set_visibility(int show_window) {
   gGui_t *gui = gGui;
@@ -1442,31 +1442,31 @@ void video_window_set_visibility(int sho
     return;
 
   xine_port_send_gui_data(gui->vo_port, XINE_GUI_SEND_VIDEOWIN_VISIBLE, (void *)(intptr_t)show_window);
-  
+
   pthread_mutex_lock(&gVw.mutex);
 
   gVw.show = show_window;
- 
+
   /* Switching to visible: If new window size requested meanwhile, adapt window */
   if((gVw.show) && (gVw.fullscreen_mode & WINDOWED_MODE) &&
      (gVw.win_width != gVw.old_win_width || gVw.win_height != gVw.old_win_height))
     video_window_adapt_size();
 
   XLockDisplay(gui->video_display);
-  
+
   if(gVw.show == 1) {
 
-    if((gui->always_layer_above || 
-	(((!(gVw.fullscreen_mode & WINDOWED_MODE)) && is_layer_above()) && 
+    if((gui->always_layer_above ||
+	(((!(gVw.fullscreen_mode & WINDOWED_MODE)) && is_layer_above()) &&
        (gVw.hide_on_start == 0))) && (!wm_not_ewmh_only())) {
       xitk_set_layer_above(gui->video_window);
     }
-    
+
     XRaiseWindow(gui->video_display, gui->video_window);
     XMapWindow(gui->video_display, gui->video_window);
-    
-    if((gui->always_layer_above || 
-	(((!(gVw.fullscreen_mode & WINDOWED_MODE)) && is_layer_above()) && 
+
+    if((gui->always_layer_above ||
+	(((!(gVw.fullscreen_mode & WINDOWED_MODE)) && is_layer_above()) &&
        (gVw.hide_on_start == 0))) && (wm_not_ewmh_only())) {
       xitk_set_layer_above(gui->video_window);
     }
@@ -1480,9 +1480,9 @@ void video_window_set_visibility(int sho
   }
   else
     XUnmapWindow (gui->video_display, gui->video_window);
-  
+
   XUnlockDisplay (gui->video_display);
-  
+
   /* User used '-H', now he want to show video window */
   if(gVw.hide_on_start == -1)
     gVw.hide_on_start = 0;
@@ -1536,12 +1536,12 @@ void video_window_init (window_attribute
     gVw.wl                 = xitk_widget_list_new();
     xitk_widget_list_set(gVw.wl, WIDGET_LIST_LIST, (xitk_list_new()));
   }
-  
+
   gVw.fullscreen_req     = WINDOWED_MODE;
   gVw.fullscreen_mode    = WINDOWED_MODE;
   gui->video_window      = None;
   gVw.show               = 1;
-  gVw.widget_key         = 
+  gVw.widget_key         =
     gVw.old_widget_key   = 0;
   gVw.gc		  = None;
   gVw.borderless         = window_attribute->borderless;
@@ -1553,12 +1553,12 @@ void video_window_init (window_attribute
   gVw.colormap		  = gui->colormap;
   /* Currently, there no plugin loaded so far, but that might change */
   video_window_select_visual ();
- 
+
   if(gui->video_display != gui->display) {
     video_window_find_visual (&gVw.visual, &gVw.depth);
-    gVw.colormap = DefaultColormap(gui->video_display, gui->video_screen); 
+    gVw.colormap = DefaultColormap(gui->video_display, gui->video_screen);
   }
-  
+
   gVw.xwin               = window_attribute->x;
   gVw.ywin               = window_attribute->y;
 
@@ -1571,9 +1571,9 @@ void video_window_init (window_attribute
   gVw.fake_keys[1] = XKeysymToKeycode(gui->video_display, XK_Control_L);
   gVw.fake_key_cur = 0;
 #endif
-  
+
   strcpy(gVw.window_title, "xine");
-  
+
   gettimeofday(&gVw.click_time, 0);
 
   gVw.using_xinerama     = 0;
@@ -1585,13 +1585,13 @@ void video_window_init (window_attribute
    * I want to figure out what fullscreen means for this setup
    */
 
-  if ((XineramaQueryExtension (gui->video_display, &dummy_a, &dummy_b)) 
+  if ((XineramaQueryExtension (gui->video_display, &dummy_a, &dummy_b))
       && (screeninfo = XineramaQueryScreens(gui->video_display, &screens))) {
     /* Xinerama Detected */
 #ifdef DEBUG
     printf ("videowin: display is using xinerama with %d screens\n", screens);
     printf ("videowin: going to assume we are using the first screen.\n");
-    printf ("videowin: size of the first screen is %dx%d.\n", 
+    printf ("videowin: size of the first screen is %dx%d.\n",
 	     screeninfo[0].width, screeninfo[0].height);
 #endif
     if (XineramaIsActive(gui->video_display)) {
@@ -1601,7 +1601,7 @@ void video_window_init (window_attribute
       gVw.xinerama = screeninfo;
       gVw.xinerama_cnt = screens;
 
-      screens_list = 
+      screens_list =
 	xine_config_register_string (__xineui_global_xine_instance, "gui.xinerama_use_screens",
 				     "0 1",
 				     _("Screens to use in order to do a very fullscreen in xinerama mode. (example 0 2 3)"),
@@ -1620,30 +1620,30 @@ void video_window_init (window_attribute
 
         i = dummy_a;
         while(i < screens) {
-	  
+
           if(screen_is_in_xinerama_fullscreen_list(screens_list, i)) {
             if(screeninfo[i].x_org < gVw.xinerama_fullscreen_x)
 	      gVw.xinerama_fullscreen_x = screeninfo[i].x_org;
             if(screeninfo[i].y_org < gVw.xinerama_fullscreen_y)
 	      gVw.xinerama_fullscreen_y = screeninfo[i].y_org;
           }
-	  
+
           i++;
         }
-	
+
         i = dummy_a;
         while(i < screens) {
 
           if(screen_is_in_xinerama_fullscreen_list(screens_list, i)) {
-            if((screeninfo[i].width + screeninfo[i].x_org) > 
+            if((screeninfo[i].width + screeninfo[i].x_org) >
 	       (gVw.xinerama_fullscreen_x + gVw.xinerama_fullscreen_width)) {
-	      gVw.xinerama_fullscreen_width = 
+	      gVw.xinerama_fullscreen_width =
 		screeninfo[i].width + screeninfo[i].x_org - gVw.xinerama_fullscreen_x;
 	    }
 
             if((screeninfo[i].height + screeninfo[i].y_org) >
 	       (gVw.xinerama_fullscreen_y + gVw.xinerama_fullscreen_height)) {
-	      gVw.xinerama_fullscreen_height = 
+	      gVw.xinerama_fullscreen_height =
 		screeninfo[i].height + screeninfo[i].y_org - gVw.xinerama_fullscreen_y;
 	    }
           }
@@ -1677,7 +1677,7 @@ void video_window_init (window_attribute
 					 CONFIG_LEVEL_EXP,
 					 CONFIG_NO_CB,
 					 CONFIG_NO_DATA);
-      if(dummy_a > -8192) 
+      if(dummy_a > -8192)
 	gVw.xinerama_fullscreen_y = dummy_a;
 
       dummy_a = xine_config_register_num(__xineui_global_xine_instance,
@@ -1688,9 +1688,9 @@ void video_window_init (window_attribute
 					 CONFIG_LEVEL_EXP,
 					 CONFIG_NO_CB,
 					 CONFIG_NO_DATA);
-      if(dummy_a > -8192) 
+      if(dummy_a > -8192)
 	gVw.xinerama_fullscreen_width = dummy_a;
-      
+
       dummy_a = xine_config_register_num(__xineui_global_xine_instance,
 					 "gui.xinerama_fullscreen_height",
 					 -8192,
@@ -1699,13 +1699,13 @@ void video_window_init (window_attribute
 					 CONFIG_LEVEL_EXP,
 					 CONFIG_NO_CB,
 					 CONFIG_NO_DATA);
-      if(dummy_a > -8192) 
+      if(dummy_a > -8192)
 	gVw.xinerama_fullscreen_height = dummy_a;
-      
+
 #ifdef DEBUG
       printf("videowin: Xinerama fullscreen parameters: X_origin=%d Y_origin=%d Width=%d Height=%d\n",gVw.xinerama_fullscreen_x,gVw.xinerama_fullscreen_y,gVw.xinerama_fullscreen_width,gVw.xinerama_fullscreen_height);
 #endif
-    } 
+    }
     else {
       gVw.fullscreen_width           = DisplayWidth  (gui->video_display, gui->video_screen);
       gVw.fullscreen_height          = DisplayHeight (gui->video_display, gui->video_screen);
@@ -1715,11 +1715,11 @@ void video_window_init (window_attribute
       gVw.xinerama_fullscreen_height = gVw.fullscreen_height;
     }
 
-  } else 
+  } else
 #endif
   {
     /* no Xinerama */
-    if(__xineui_global_verbosity) 
+    if(__xineui_global_verbosity)
       printf ("Display is not using Xinerama.\n");
     gVw.fullscreen_width  = DisplayWidth (gui->video_display, gui->video_screen);
     gVw.fullscreen_height = DisplayHeight (gui->video_display, gui->video_screen);
@@ -1761,31 +1761,31 @@ void video_window_init (window_attribute
   gVw.wm_hint->flags         = InputHint | StateHint | IconPixmapHint;
 
   XUnlockDisplay (gui->video_display);
-      
-  gVw.stream_resize_window = 
-    xine_config_register_bool(__xineui_global_xine_instance, 
-			      "gui.stream_resize_window", 
+
+  gVw.stream_resize_window =
+    xine_config_register_bool(__xineui_global_xine_instance,
+			      "gui.stream_resize_window",
 			      1,
 			      _("New stream sizes resize output window"),
 			      CONFIG_NO_HELP,
 			      CONFIG_LEVEL_ADV,
 			      _video_window_resize_cb,
 			      CONFIG_NO_DATA);
-  
-  gVw.zoom_small_stream = 
+
+  gVw.zoom_small_stream =
     xine_config_register_bool(__xineui_global_xine_instance,
-			      "gui.zoom_small_stream", 
+			      "gui.zoom_small_stream",
 			      0,
 			      _("Double size for small streams (require stream_resize_window)"),
 			      CONFIG_NO_HELP,
 			      CONFIG_LEVEL_ADV,
 			      _video_window_zoom_small_cb,
 			      CONFIG_NO_DATA);
-  
+
   if((window_attribute->width > 0) && (window_attribute->height > 0)) {
     gVw.video_width  = window_attribute->width;
     gVw.video_height = window_attribute->height;
-    /* 
+    /*
      * Force to keep window size.
      * I don't update the config file, i think this window geometry
      * user defined can be temporary.
@@ -1800,56 +1800,56 @@ void video_window_init (window_attribute
   gVw.old_win_height = gVw.win_height = gVw.video_height;
 
 #ifdef HAVE_XF86VIDMODE
-  if(xine_config_register_bool(__xineui_global_xine_instance, "gui.use_xvidext", 
+  if(xine_config_register_bool(__xineui_global_xine_instance, "gui.use_xvidext",
 			       0,
 			       _("use XVidModeExtension when switching to fullscreen"),
 			       CONFIG_NO_HELP,
 			       CONFIG_LEVEL_EXP,
 			       CONFIG_NO_CB,
 			       CONFIG_NO_DATA)) {
-    /* 
+    /*
      * without the "stream resizes window" behavior, the XVidMode support
      * won't work correctly, so we force it for each session the user wants
      * to have XVideMode on...
-     * 
+     *
      * FIXME: maybe display a warning message or so?!
      */
     gVw.stream_resize_window = 1;
-    
+
     XLockDisplay (gui->video_display);
-    
+
     if(XF86VidModeQueryExtension(gui->video_display, &dummy_query_event, &dummy_query_error)) {
       XF86VidModeModeInfo* XF86_modelines_swap;
       int                  mode, major, minor, sort_x, sort_y;
-      
+
       XF86VidModeQueryVersion(gui->video_display, &major, &minor);
       printf(_("XF86VidMode Extension (%d.%d) detected, trying to use it.\n"), major, minor);
-      
-      if(XF86VidModeGetAllModeLines(gui->video_display, 
+
+      if(XF86VidModeGetAllModeLines(gui->video_display,
 				    XDefaultScreen(gui->video_display),
 				    &(gVw.XF86_modelines_count), &(gVw.XF86_modelines))) {
 	printf(_("XF86VidMode Extension: %d modelines found.\n"), gVw.XF86_modelines_count);
-	
+
 	/* first, kick off unsupported modes */
 	for(mode = 1; mode < gVw.XF86_modelines_count; mode++) {
-	  
-	  if(!XF86VidModeValidateModeLine(gui->video_display, gui->video_screen, 
+
+	  if(!XF86VidModeValidateModeLine(gui->video_display, gui->video_screen,
 					  gVw.XF86_modelines[mode])) {
 	    int wrong_mode;
-	    
-	    printf(_("XF86VidModeModeLine %dx%d isn't valid: discarded.\n"), 
+
+	    printf(_("XF86VidModeModeLine %dx%d isn't valid: discarded.\n"),
 		   gVw.XF86_modelines[mode]->hdisplay,
 		   gVw.XF86_modelines[mode]->vdisplay);
-	    
+
 	    for(wrong_mode = mode; wrong_mode < gVw.XF86_modelines_count; wrong_mode++)
 	      gVw.XF86_modelines[wrong_mode] = gVw.XF86_modelines[wrong_mode + 1];
-	    
+
 	    gVw.XF86_modelines[wrong_mode] = NULL;
 	    gVw.XF86_modelines_count--;
 	    mode--;
 	  }
 	}
-	
+
 	/*
 	 * sorting modelines, skipping first entry because it is the current
 	 * modeline in use - this is important so we know to which modeline
@@ -1877,7 +1877,7 @@ void video_window_init (window_attribute
   }
   else
     gVw.XF86_modelines_count = 0;
-  
+
 #endif
 
   /*
@@ -1892,25 +1892,25 @@ void video_window_init (window_attribute
    */
   if(gui->video_window) {
     Window tmp_win;
-    
+
     XLockDisplay (gui->video_display);
     if((window_attribute->x > -8192) && (window_attribute->y > -8192)) {
       gVw.xwin = gVw.old_xwin = window_attribute->x;
       gVw.ywin = gVw.old_ywin = window_attribute->y;
-      
-      XMoveResizeWindow (gui->video_display, gui->video_window, 
+
+      XMoveResizeWindow (gui->video_display, gui->video_window,
 			 gVw.xwin, gVw.ywin, gVw.video_width, gVw.video_height);
-  
-    } 
+
+    }
     else {
-      
-      XTranslateCoordinates(gui->video_display, gui->video_window, DefaultRootWindow(gui->video_display), 
+
+      XTranslateCoordinates(gui->video_display, gui->video_window, DefaultRootWindow(gui->video_display),
 			    0, 0, &gVw.xwin, &gVw.ywin, &tmp_win);
     }
     XUnlockDisplay (gui->video_display);
 
   }
-  
+
   if( gui->video_display != gui->display ) {
     gVw.second_display_running = 1;
     pthread_create(&gVw.second_display_thread, NULL, second_display_loop, NULL);
@@ -1941,7 +1941,7 @@ void video_window_exit (void) {
       XExposeEvent expose;
       XEvent event;
     } event;
-    
+
     XLockDisplay(gui->video_display);
     XClearWindow(gui->video_display, gui->video_window);
     event.expose.type       = Expose;
@@ -1955,7 +1955,7 @@ void video_window_exit (void) {
     XSendEvent(gui->video_display, gui->video_window, False, Expose, &event.event);
     XUnlockDisplay(gui->video_display);
   }
-    
+
   if(gui->video_display == gui->display)
     xitk_unregister_event_handler(&gVw.widget_key);
   else
@@ -1983,7 +1983,7 @@ static int video_window_translate_point(
   rect.w = 0;
   rect.h = 0;
 
-  if (xine_port_send_gui_data(gui->vo_port, 
+  if (xine_port_send_gui_data(gui->vo_port,
 			      XINE_GUI_SEND_TRANSLATE_GUI_TO_VIDEO, (void*)&rect) != -1) {
     /* driver implements gui->video coordinate space translation, use it */
     *video_x = rect.x;
@@ -1996,14 +1996,14 @@ static int video_window_translate_point(
   pthread_mutex_lock(&gVw.mutex);
 
   XLockDisplay(gui->video_display);
-  if(XGetGeometry(gui->video_display, gui->video_window, &rootwin, 
+  if(XGetGeometry(gui->video_display, gui->video_window, &rootwin,
 		  &xwin, &ywin, &wwin, &hwin, &bwin, &dwin) == BadDrawable) {
     XUnlockDisplay(gui->video_display);
     pthread_mutex_unlock(&gVw.mutex);
     return 0;
   }
   XUnlockDisplay(gui->video_display);
-  
+
   /* Scale co-ordinate to image dimensions. */
   height_scale = (float)gVw.video_height / (float)hwin;
   width_scale  = (float)gVw.video_width / (float)wwin;
@@ -2051,7 +2051,7 @@ static int video_window_check_mag(void)
  */
     )
     return 0;
-  
+
   /* Allow mag only if video win is visible, so don't do something we can't see. */
   return (xitk_is_window_visible(gui->video_display, gui->video_window));
 }
@@ -2063,7 +2063,7 @@ static void video_window_calc_mag_win_si
 }
 
 int video_window_set_mag(float xmag, float ymag) {
-  
+
   pthread_mutex_lock(&gVw.mutex);
 
   if (!video_window_check_mag()) {
@@ -2079,11 +2079,11 @@ int video_window_set_mag(float xmag, flo
 }
 
 void video_window_get_mag (float *xmag, float *ymag) {
-  
+
   /* compute current mag */
   pthread_mutex_lock(&gVw.mutex);
-  *xmag = (float) gVw.output_width / (float) gVw.video_width; 
-  *ymag = (float) gVw.output_height / (float) gVw.video_height; 
+  *xmag = (float) gVw.output_width / (float) gVw.video_width;
+  *ymag = (float) gVw.output_height / (float) gVw.video_height;
   pthread_mutex_unlock(&gVw.mutex);
 }
 
@@ -2091,47 +2091,50 @@ void video_window_get_mag (float *xmag,
  * Change displayed logo, if selected skin want to customize it.
  */
 void video_window_update_logo(void) {
+  char                *mrl_entry;
+  char                *mrl_default;
   gGui_t *gui = gGui;
   xine_cfg_entry_t     cfg_entry;
   char                *skin_logo;
   int                  cfg_err_result;
-  
+
   cfg_err_result = xine_config_lookup_entry(__xineui_global_xine_instance, "gui.logo_mrl", &cfg_entry);
   skin_logo = xitk_skin_get_logo(gui->skin_config);
-  
+
   if(skin_logo) {
-    
+
     if((cfg_err_result) && cfg_entry.str_value) {
       /* Old and new logo are same, don't reload */
       if(!strcmp(cfg_entry.str_value, skin_logo))
 	goto __done;
     }
-    
-    config_update_string("gui.logo_mrl", skin_logo);
+
+    config_update_string(mrl_entry, skin_logo);
     goto __play_logo_now;
-    
+
   }
   else { /* Skin don't use logo feature, set to xine's default */
-    
-    /* 
-     * Back to default logo only on a skin 
+
+    /*
+     * Back to default logo only on a skin
      * change, not at the first skin loading.
      **/
-    if(gVw.logo_synthetic && (cfg_err_result) && (strcmp(cfg_entry.str_value, XINE_LOGO_MRL))) {
-      config_update_string("gui.logo_mrl", XINE_LOGO_MRL);
+    if(gVw.logo_synthetic && (cfg_err_result) &&
+       (strcmp(cfg_entry.str_value, mrl_default))) {
+      config_update_string(mrl_entry, mrl_default);
 
     __play_logo_now:
-      
+
       sleep(1);
-      
+
       if(gui->logo_mode) {
 	if(xine_get_status(gui->stream) == XINE_STATUS_PLAY) {
 	  gui->ignore_next = 1;
 	  xine_stop(gui->stream);
-	  gui->ignore_next = 0; 
+	  gui->ignore_next = 0;
 	}
 	if(gui->display_logo) {
-	  if((!xine_open(gui->stream, gui->logo_mrl)) 
+	  if((!xine_open(gui->stream, gui->logo_mrl))
 	     || (!xine_play(gui->stream, 0, 0))) {
 	    gui_handle_xine_error(gui->stream, (char *)gui->logo_mrl);
 	    goto __done;
@@ -2141,7 +2144,7 @@ void video_window_update_logo(void) {
       }
     }
   }
-  
+
  __done:
   gui->logo_has_changed--;
 }
@@ -2174,7 +2177,7 @@ static void video_window_handle_event (X
     int x, y;
 
     /* printf("Mouse event:mx=%d my=%d\n",mevent->x, mevent->y); */
-    
+
     if(!gui->cursor_visible) {
       gui->cursor_visible = !gui->cursor_visible;
       video_window_set_cursor_visibility(gui->cursor_visible);
@@ -2215,21 +2218,21 @@ static void video_window_handle_event (X
     else if (bevent->button == Button1) {
       struct timeval  old_click_time, tm_diff;
       long int        click_diff;
-      
+
       timercpy(&gVw.click_time, &old_click_time);
       gettimeofday(&gVw.click_time, 0);
 
       timercpy(&old_click_time, &event.tv);
-      
+
       timersub(&gVw.click_time, &old_click_time, &tm_diff);
       click_diff = (tm_diff.tv_sec * 1000) + (tm_diff.tv_usec / 1000.0);
-      
+
       if(click_diff < (xitk_get_timer_dbl_click())) {
 	gui_execute_action_id(ACTID_TOGGLE_FULLSCREEN);
 	gVw.click_time.tv_sec -= (xitk_get_timer_dbl_click() / 1000.0);
 	gVw.click_time.tv_usec -= (xitk_get_timer_dbl_click() * 1000.0);
       }
-      
+
     }
 
     event.type            = XINE_EVENT_INPUT_MOUSE_BUTTON;
@@ -2303,7 +2306,7 @@ static void video_window_handle_event (X
       pthread_mutex_unlock(&gVw.mutex);
     }
     break;
-    
+
   }
 
 
@@ -2343,9 +2346,9 @@ long int video_window_reset_ssaver(void)
 
 #ifdef HAVE_XTESTEXTENSION
     if(gVw.have_xtest == True) {
-      
+
       gVw.fake_key_cur++;
-      
+
       if(gVw.fake_key_cur >= 2)
 	gVw.fake_key_cur = 0;
 
@@ -2355,7 +2358,7 @@ long int video_window_reset_ssaver(void)
       XSync(gui->video_display, False);
       XUnlockDisplay(gui->video_display);
     }
-    else 
+    else
 #endif
     {
       /* Reset the gnome screensaver. Look up the command in PATH only once to save time, */
@@ -2444,9 +2447,9 @@ void video_window_get_output_size(int *w
 void video_window_set_mrl(char *mrl) {
   gGui_t *gui = gGui;
   if(mrl && strlen(mrl)) {
-    
+
     snprintf(gVw.window_title, sizeof(gVw.window_title), "%s: %s", "xine", mrl);
-    
+
     XLockDisplay(gui->video_display);
     _set_window_title();
     XUnlockDisplay(gui->video_display);
@@ -2455,14 +2458,14 @@ void video_window_set_mrl(char *mrl) {
 
 void video_window_toggle_border(void) {
   gGui_t *gui = gGui;
-  
+
   if(!gui->use_root_window && (gVw.fullscreen_mode & WINDOWED_MODE)) {
     Atom         prop;
     MWMHints     mwmhints;
     XClassHint  *xclasshint;
-    
+
     gVw.borderless = !gVw.borderless;
-    
+
     XLockDisplay(gui->video_display);
 
     memset(&mwmhints, 0, sizeof(mwmhints));
@@ -2470,16 +2473,16 @@ void video_window_toggle_border(void) {
     mwmhints.flags       = MWM_HINTS_DECORATIONS;
     mwmhints.decorations = gVw.borderless ? 0 : 1;
     xclasshint           = gVw.borderless ? gVw.xclasshint_borderless : gVw.xclasshint;
-    
+
     XChangeProperty(gui->video_display, gui->video_window, prop, prop, 32,
 		    PropModeReplace, (unsigned char *) &mwmhints,
 		    PROP_MWM_HINTS_ELEMENTS);
-    
+
     if(xclasshint != NULL)
       XSetClassHint(gui->video_display, gui->video_window, xclasshint);
-    
+
     XUnlockDisplay (gui->video_display);
-    
+
     xine_port_send_gui_data(gui->vo_port, XINE_GUI_SEND_DRAWABLE_CHANGED, (void *)gui->video_window);
   }
 }
Index: src/xitk/actions.c
===================================================================
--- src/xitk/actions.c.orig	2018-01-23 15:10:06.827563191 +0200
+++ src/xitk/actions.c	2018-01-23 15:18:26.783585471 +0200
@@ -1,18 +1,18 @@
-/* 
+/*
  * Copyright (C) 2000-2017 the xine project
- * 
+ *
  * This file is part of xine, a unix video player.
- * 
+ *
  * xine is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
  * (at your option) any later version.
- * 
+ *
  * xine is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
- * 
+ *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
@@ -68,7 +68,7 @@ void reparent_all_windows(void) {
     { help_is_visible,          help_reparent },
     { NULL,                     NULL}
   };
-  
+
   for(i = 0; _reparent[i].visible; i++) {
     if(_reparent[i].visible())
       _reparent[i].reparent();
@@ -137,26 +137,26 @@ int gui_xine_get_pos_length(xine_stream_
   gGui_t *gui = gGui;
   int t = 0, ret = 0;
   int lpos, ltime, llength;
-  
+
   if(pthread_mutex_trylock(&gui->xe_mutex))
     return 0;
-  
+
   if(stream && (xine_get_status(stream) == XINE_STATUS_PLAY)) {
     while(((ret = xine_get_pos_length(stream, &lpos, &ltime, &llength)) == 0) && (++t < 10) && (!gui->on_quit))
       xine_usec_sleep(100000); /* wait before trying again */
   }
-  
+
   if(ret == 0) {
     lpos = ltime = llength = 0;
   }
-  
+
   if(pos)
     *pos    = lpos;
   if(time)
     *time   = ltime;
   if(length)
     *length = llength;
-  
+
   if((ret != 0) && (stream == gui->stream)) {
     gui->stream_length.pos = lpos;
     gui->stream_length.time = ltime;
@@ -174,7 +174,7 @@ void try_to_set_input_focus(Window windo
   gGui_t *gui = gGui;
 
   wait_for_window_visible(gui->display, window);
-  
+
   if(xitk_is_window_visible(gui->display, window)) {
     int    retry = 0;
     Window focused_win;
@@ -204,13 +204,13 @@ void gui_display_logo(void) {
   gGui_t *gui = gGui;
 
   pthread_mutex_lock(&gui->logo_mutex);
-  
+
   gui->logo_mode = 2;
-  
+
   if(xine_get_status(gui->stream) == XINE_STATUS_PLAY) {
     gui->ignore_next = 1;
     xine_stop(gui->stream);
-    gui->ignore_next = 0; 
+    gui->ignore_next = 0;
   }
 
   if(gui->visual_anim.running)
@@ -221,32 +221,35 @@ void gui_display_logo(void) {
   panel_update_channel_display();
 
   if(gui->display_logo)
-    (void) gui_xine_open_and_play((char *)gui->logo_mrl, NULL, 0, 0, 0, 0, 1);
+    (void) gui_xine_open_and_play((char *) ((gGui->logo_select) ?
+		gGui->logo_crippled_mrl :
+		gGui->logo_mrl),
+	    NULL, 0, 0, 0, 0, 1);
 
   gui->logo_mode = 1;
-  
+
   panel_reset_slider();
   if(stream_infos_is_visible())
     stream_infos_update_infos();
-  
+
   pthread_mutex_unlock(&gui->logo_mutex);
 }
 
-static int _gui_xine_play(xine_stream_t *stream, 
+static int _gui_xine_play(xine_stream_t *stream,
 			  int start_pos, int start_time_in_secs, int update_mmk) {
   gGui_t *gui = gGui;
   int      ret;
   int      has_video;
   int      already_playing = (gui->logo_mode == 0);
-  
+
   if(gui->visual_anim.post_changed && (xine_get_status(stream) == XINE_STATUS_STOP)) {
     post_rewire_visual_anim();
     gui->visual_anim.post_changed = 0;
   }
-  
+
   if(start_time_in_secs)
     start_time_in_secs *= 1000;
-  
+
   has_video = xine_get_stream_info(stream, XINE_STREAM_INFO_HAS_VIDEO);
   if (has_video)
     has_video = !xine_get_stream_info(stream, XINE_STREAM_INFO_IGNORE_VIDEO);
@@ -256,7 +259,7 @@ static int _gui_xine_play(xine_stream_t
     if(post_rewire_audio_port_to_stream(stream))
       gui->visual_anim.running = 0;
 
-  } else if (!has_video && (gui->visual_anim.enabled == 1) && 
+  } else if (!has_video && (gui->visual_anim.enabled == 1) &&
 	     (gui->visual_anim.running == 0) && gui->visual_anim.post_output_element.post) {
 
     if(post_rewire_audio_post_to_stream(stream))
@@ -273,19 +276,19 @@ static int _gui_xine_play(xine_stream_t
     if(gui->logo_mode != 2)
       gui->logo_mode = 0;
     pthread_mutex_unlock(&gui->logo_mutex);
-    
+
     if(gui->logo_mode == 0) {
-     
+
       if(stream_infos_is_visible())
 	stream_infos_update_infos();
-      
+
       if(update_mmk && ((ident = stream_infos_get_ident_from_stream(stream)) != NULL)) {
 	free(gui->mmk.ident);
 	free(gui->playlist.mmk[gui->playlist.cur]->ident);
-	
+
 	gui->mmk.ident = strdup(ident);
 	gui->playlist.mmk[gui->playlist.cur]->ident = strdup(ident);
-	
+
 	video_window_set_mrl(gui->mmk.ident);
 	playlist_mrlident_toggle();
 	panel_update_mrl_display();
@@ -293,38 +296,38 @@ static int _gui_xine_play(xine_stream_t
       }
 
       if(has_video) {
-	
+
 	if((gui->visual_anim.enabled == 2) && gui->visual_anim.running)
 	  visual_anim_stop();
-	
+
 	if(gui->auto_vo_visibility) {
-	  
+
 	  if(!video_window_is_visible())
 	    video_window_set_visibility(1);
-	  
+
 	}
 
 	if(gui->auto_panel_visibility && video_window_is_visible() &&
 	   panel_is_visible() )
 	  panel_toggle_visibility(NULL, NULL);
-	
+
       }
       else {
-	
+
 	if(gui->auto_vo_visibility) {
-	  
+
 	  if(!panel_is_visible())
 	    panel_toggle_visibility(NULL, NULL);
 
 	  if(video_window_is_visible())
 	    video_window_set_visibility(0);
-	    
+
 	}
 
-	if(gui->auto_panel_visibility && video_window_is_visible() && 
+	if(gui->auto_panel_visibility && video_window_is_visible() &&
 	  !panel_is_visible() )
 	  panel_toggle_visibility(NULL, NULL);
-	  
+
 	if(video_window_is_visible()) {
 	  if(!gui->visual_anim.running)
 	    visual_anim_play();
@@ -332,13 +335,13 @@ static int _gui_xine_play(xine_stream_t
 	else
 	  gui->visual_anim.running = 2;
       }
-      
+
       xine_usec_sleep(100);
       if(!already_playing)
 	osd_update_status();
     }
   }
-  
+
   return ret;
 }
 
@@ -355,7 +358,7 @@ static void start_anyway_yesno(xitk_widg
   play_data.running = 0;
 
   if(button == XITK_WINDOW_ANSWER_YES)
-    _gui_xine_play(play_data.stream, 
+    _gui_xine_play(play_data.stream,
 		   play_data.start_pos, play_data.start_time_in_secs, play_data.update_mmk);
   else
     gui_playlist_start_next();
@@ -364,13 +367,13 @@ static void start_anyway_yesno(xitk_widg
 
 static void set_mmk(mediamark_t *mmk) {
   gGui_t *gui = gGui;
-  
+
   free(gui->mmk.mrl);
   free(gui->mmk.ident);
   free(gui->mmk.sub);
   if(mediamark_have_alternates(&(gui->mmk)))
     mediamark_free_alternates(&(gui->mmk));
-  
+
   if(mmk) {
     gui->mmk.mrl           = strdup(mmk->mrl);
     gui->mmk.ident         = strdup(((mmk->ident) ? mmk->ident : mmk->mrl));
@@ -384,9 +387,9 @@ static void set_mmk(mediamark_t *mmk) {
   }
   else {
     char buffer[1024];
-    
+
     snprintf(buffer, sizeof(buffer), "xine-ui version %s", VERSION);
-    
+
     /* TRANSLATORS: only ASCII characters (skin) */
     gui->mmk.mrl           = strdup(pgettext("skin", "There is no MRL."));
     gui->mmk.ident         = strdup(buffer);
@@ -408,7 +411,7 @@ static void mmk_set_update(void) {
   event_sender_update_menu_buttons();
   panel_update_mrl_display();
   playlist_update_focused_entry();
-  
+
   gui->playlist.ref_append = gui->playlist.cur;
 }
 
@@ -416,7 +419,7 @@ int gui_xine_play(xine_stream_t *stream,
   gGui_t *gui = gGui;
   int has_video, has_audio, v_unhandled = 0, a_unhandled = 0;
   uint32_t video_handled, audio_handled;
-  
+
   if(play_data.running)
     return 0;
 
@@ -424,7 +427,7 @@ int gui_xine_play(xine_stream_t *stream,
   video_handled = xine_get_stream_info(stream, XINE_STREAM_INFO_VIDEO_HANDLED);
   has_audio     = xine_get_stream_info(stream, XINE_STREAM_INFO_HAS_AUDIO);
   audio_handled = xine_get_stream_info(stream, XINE_STREAM_INFO_AUDIO_HANDLED);
-  
+
   if (has_video)
     has_video = !xine_get_stream_info(stream, XINE_STREAM_INFO_IGNORE_VIDEO);
   if (has_audio)
@@ -436,7 +439,7 @@ int gui_xine_play(xine_stream_t *stream,
     char *buffer = NULL;
     char *v_info = NULL;
     char *a_info = NULL;
-    
+
     if(v_unhandled && a_unhandled) {
       asprintf(&buffer, _("The stream '%s' isn't supported by xine:\n\n"),
 	       (stream == gui->stream) ? gui->mmk.mrl : gui->visual_anim.mrls[gui->visual_anim.current]);
@@ -445,7 +448,7 @@ int gui_xine_play(xine_stream_t *stream,
       asprintf(&buffer, _("The stream '%s' uses an unsupported codec:\n\n"),
 	       (stream == gui->stream) ? gui->mmk.mrl : gui->visual_anim.mrls[gui->visual_anim.current]);
     }
-    
+
     if(v_unhandled) {
       const char *minfo;
       uint32_t    vfcc;
@@ -454,10 +457,10 @@ int gui_xine_play(xine_stream_t *stream,
       minfo = xine_get_meta_info(stream, XINE_META_INFO_VIDEOCODEC);
       vfcc = xine_get_stream_info(stream, XINE_STREAM_INFO_VIDEO_FOURCC);
       asprintf(&v_info, _("Video Codec: %s (%s)\n"),
-	      (minfo && strlen(minfo)) ? (char *) minfo : _("Unavailable"), 
+	      (minfo && strlen(minfo)) ? (char *) minfo : _("Unavailable"),
                (get_fourcc_string(tmp, sizeof(tmp), vfcc)));
     }
-    
+
     if(a_unhandled) {
       const char *minfo;
       uint32_t    afcc;
@@ -466,10 +469,10 @@ int gui_xine_play(xine_stream_t *stream,
       minfo = xine_get_meta_info(stream, XINE_META_INFO_AUDIOCODEC);
       afcc = xine_get_stream_info(stream, XINE_STREAM_INFO_AUDIO_FOURCC);
       asprintf(&a_info,  _("Audio Codec: %s (%s)\n"),
-	      (minfo && strlen(minfo)) ? (char *) minfo : _("Unavailable"), 
+	      (minfo && strlen(minfo)) ? (char *) minfo : _("Unavailable"),
                (get_fourcc_string(tmp, sizeof(tmp), afcc)));
     }
-    
+
 
     if(v_unhandled && a_unhandled) {
       xine_error("%s%s%s", buffer, v_info, a_info);
@@ -485,9 +488,9 @@ int gui_xine_play(xine_stream_t *stream,
       play_data.start_time_in_secs = start_time_in_secs;
       play_data.update_mmk         = update_mmk;
       play_data.running            = 1;
-      
-      xw = xitk_window_dialog_yesno_with_width(gui->imlib_data, _("Start Playback ?"), 
-					       start_anyway_yesno, start_anyway_yesno, 
+
+      xw = xitk_window_dialog_yesno_with_width(gui->imlib_data, _("Start Playback ?"),
+					       start_anyway_yesno, start_anyway_yesno,
 					       NULL, 400, ALIGN_CENTER,
 					       "%s%s%s%s", buffer,
 					       v_info, a_info,
@@ -499,12 +502,12 @@ int gui_xine_play(xine_stream_t *stream,
       XUnlockDisplay(gui->display);
       video_window_set_transient_for (xitk_window_get_window (xw));
       layer_above_video(xitk_window_get_window(xw));
-      
-      /* Doesn't work so well yet 
+
+      /* Doesn't work so well yet
 	 use play_data.running hack for a while
 	 xitk_window_dialog_set_modal(xw);
       */
-      
+
       return 1;
     }
 
@@ -514,16 +517,16 @@ int gui_xine_play(xine_stream_t *stream,
   return _gui_xine_play(stream, start_pos, start_time_in_secs, update_mmk);
 }
 
-int gui_xine_open_and_play(char *_mrl, char *_sub, int start_pos, 
+int gui_xine_open_and_play(char *_mrl, char *_sub, int start_pos,
 			   int start_time, int av_offset, int spu_offset, int report_error) {
   gGui_t *gui = gGui;
   char *mrl = _mrl;
   int ret;
-  
+
   if(__xineui_global_verbosity)
     printf("%s():\n\tmrl: '%s',\n\tsub '%s',\n\tstart_pos %d, start_time %d, av_offset %d, spu_offset %d.\n",
 	   __func__, _mrl, (_sub) ? _sub : "NONE", start_pos, start_time, av_offset, spu_offset);
-  
+
   if(!strncasecmp(mrl, "cfg:/", 5)) {
     config_mrl(mrl);
     gui_playlist_start_next();
@@ -532,42 +535,42 @@ int gui_xine_open_and_play(char *_mrl, c
   else if((!strncasecmp(mrl, "ftp://", 6)) || (!strncasecmp(mrl, "dload:/", 7)))  {
     char        *url = mrl;
     download_t   download;
-    
+
     if(!strncasecmp(mrl, "dload:/", 7))
       url = _mrl + 7;
-    
+
     download.buf    = NULL;
     download.error  = NULL;
     download.size   = 0;
-    download.status = 0; 
-    
+    download.status = 0;
+
     if((network_download(url, &download))) {
       char *filename;
-      
+
       filename = strrchr(url, '/');
       if(filename && filename[1]) { /* we have a filename */
 	char  fullfilename[XITK_PATH_MAX + XITK_NAME_MAX + 2];
 	FILE *fd;
-	
+
 	filename++;
 	snprintf(fullfilename, sizeof(fullfilename), "%s/%s", xine_get_homedir(), filename);
-	
+
 	if((fd = fopen(fullfilename, "w+b")) != NULL) {
 	  char  *sub = NULL;
 	  int    start, end;
-	  
+
 	  char *newmrl = strdup(fullfilename);
 	  char *ident = strdup(gui->playlist.mmk[gui->playlist.cur]->ident);
 	  if(gui->playlist.mmk[gui->playlist.cur]->sub)
 	    sub = strdup(gui->playlist.mmk[gui->playlist.cur]->sub);
 	  start = gui->playlist.mmk[gui->playlist.cur]->start;
 	  end = gui->playlist.mmk[gui->playlist.cur]->end;
-	  
+
 	  fwrite(download.buf, download.size, 1, fd);
 	  fflush(fd);
 	  fclose(fd);
 
-	  mediamark_replace_entry(&gui->playlist.mmk[gui->playlist.cur], 
+	  mediamark_replace_entry(&gui->playlist.mmk[gui->playlist.cur],
 				  newmrl, ident, sub, start, end, 0, 0);
 	  gui_set_current_mmk(mediamark_get_current_mmk());
 	  mrl = gui->mmk.mrl;
@@ -608,27 +611,27 @@ int gui_xine_open_and_play(char *_mrl, c
 
     if(!strcmp(mrl, gui->mmk.mrl))
       gui->playlist.mmk[gui->playlist.cur]->played = 1;
-    
+
     if(report_error)
       gui_handle_xine_error(gui->stream, mrl);
     return 0;
   }
-  
+
   if(_sub) {
-    
+
     gui->suppress_messages++;
     ret = xine_open(gui->spu_stream, _sub);
     gui->suppress_messages--;
     if (ret)
-      xine_stream_master_slave(gui->stream, 
+      xine_stream_master_slave(gui->stream,
 			       gui->spu_stream, XINE_MASTER_SLAVE_PLAY | XINE_MASTER_SLAVE_STOP);
   }
   else
     xine_close (gui->spu_stream);
-  
+
   xine_set_param(gui->stream, XINE_PARAM_AV_OFFSET, av_offset);
   xine_set_param(gui->stream, XINE_PARAM_SPU_OFFSET, spu_offset);
-  
+
   if(!gui_xine_play(gui->stream, start_pos, start_time, 1)) {
     if(!strcmp(mrl, gui->mmk.mrl))
       gui->playlist.mmk[gui->playlist.cur]->played = 1;
@@ -639,7 +642,7 @@ int gui_xine_open_and_play(char *_mrl, c
     gui->playlist.mmk[gui->playlist.cur]->played = 1;
 
   gui_xine_get_pos_length(gui->stream, NULL, NULL, NULL);
-  
+
   if (gui->stdctl_enable)
     stdctl_playing(mrl);
 
@@ -649,10 +652,10 @@ int gui_xine_open_and_play(char *_mrl, c
 int gui_open_and_play_alternates(mediamark_t *mmk, const char *sub) {
   gGui_t *gui = gGui;
   char *alt;
-  
+
   if(!(alt = mediamark_get_current_alternate_mrl(mmk)))
     alt = mediamark_get_first_alternate_mrl(mmk);
-  
+
   do {
 
     if(gui_xine_open_and_play(alt, gui->mmk.sub, 0, 0, 0, 0, 0))
@@ -680,18 +683,18 @@ void gui_exit (xitk_widget_t *w, void *d
 
       while(xine_get_status(gui->visual_anim.stream) == XINE_STATUS_PLAY)
       	xine_usec_sleep(50000);
-      
+
       audio_source = xine_get_audio_source(gui->stream);
       (void) xine_post_wire_audio_port(audio_source, gui->ao_port);
     }
-    
+
     xine_stop (gui->stream);
     while(xine_get_status(gui->stream) == XINE_STATUS_PLAY)
       xine_usec_sleep(50000);
 
     gui->ignore_next = 0;
   }
-  
+
   gui->on_quit = 1;
 
   /* shut down event queue threads */
@@ -706,7 +709,7 @@ void gui_exit (xitk_widget_t *w, void *d
   playlist_deinit();
   mrl_browser_deinit();
   control_deinit();
-  
+
   setup_end();
   viewlog_end();
   kbedit_end();
@@ -719,7 +722,7 @@ void gui_exit (xitk_widget_t *w, void *d
 #ifdef HAVE_TAR
   download_skin_end();
 #endif
-  
+
   if(load_stream)
     filebrowser_end(load_stream);
   if(load_sub)
@@ -727,7 +730,7 @@ void gui_exit (xitk_widget_t *w, void *d
 
   if(video_window_is_visible())
     video_window_set_visibility(0);
-  
+
   tvout_deinit(gui->tvout);
 
 #ifdef HAVE_XF86VIDMODE
@@ -739,17 +742,17 @@ void gui_exit (xitk_widget_t *w, void *d
     video_window_set_fullscreen_mode(WINDOWED_MODE);
   //     gui_set_fullscreen_mode(NULL,NULL);
 #endif
-   
+
   osd_deinit();
 
   config_update_num("gui.amp_level", gui->mixer.amp_level);
   xine_config_save(__xineui_global_xine_instance, __xineui_global_config_file);
-  
+
   xine_close(gui->stream);
   xine_close(gui->visual_anim.stream);
   xine_close (gui->spu_stream);
 
-  /* we are going to dispose this stream, so make sure slider_loop 
+  /* we are going to dispose this stream, so make sure slider_loop
    * won't use it anymore (otherwise -> segfault on exit).
    */
   gui->running = 0;
@@ -785,8 +788,8 @@ void gui_exit (xitk_widget_t *w, void *d
   if(__xineui_global_lirc_enable)
     lirc_stop();
 #endif
-  
-  if(gui->stdctl_enable) 
+
+  if(gui->stdctl_enable)
     stdctl_stop();
 
   /* this will prevent a race condition that may lead to a lock:
@@ -799,13 +802,13 @@ void gui_exit (xitk_widget_t *w, void *d
   if( gui->video_display != gui->display )
     XLockDisplay(gui->display);
   xitk_stop();
-  /* 
+  /*
    * This prevent xine waiting till the end of time for an
    * XEvent when lirc (and futur other control ways) is used to quit .
    */
   if( gui->video_display == gui->display )
     gui_send_expose_to_window(gui->video_window);
- 
+
   xitk_skin_unload_config(gui->skin_config);
   XUnlockDisplay(gui->video_display);
   if( gui->video_display != gui->display )
@@ -819,29 +822,29 @@ void gui_play (xitk_widget_t *w, void *d
     return;
 
   video_window_reset_ssaver();
-  
+
   if(xine_get_status(gui->stream) == XINE_STATUS_PLAY) {
     if(gui->logo_mode != 0) {
       gui->ignore_next = 1;
       xine_stop(gui->stream);
-      gui->ignore_next = 0; 
+      gui->ignore_next = 0;
     }
   }
 
   if(xine_get_status(gui->stream) != XINE_STATUS_PLAY) {
-    
+
     if (!strncmp(gui->mmk.ident, "xine-ui version", 15)) {
       xine_error (_("No MRL (input stream) specified"));
       return;
     }
-    
-    if(!gui_xine_open_and_play(gui->mmk.mrl, gui->mmk.sub, 0, 
+
+    if(!gui_xine_open_and_play(gui->mmk.mrl, gui->mmk.sub, 0,
 			       gui->mmk.start, gui->mmk.av_offset, gui->mmk.spu_offset,
 			       !mediamark_have_alternates(&(gui->mmk)))) {
 
       if(!mediamark_have_alternates(&(gui->mmk)) ||
 	 !gui_open_and_play_alternates(&(gui->mmk), gui->mmk.sub)) {
-	
+
 	if(mediamark_all_played() && (gui->actions_on_start[0] == ACTID_QUIT)) {
 	  gui_exit(NULL, NULL);
 	  return;
@@ -857,7 +860,7 @@ void gui_play (xitk_widget_t *w, void *d
     if(oldspeed != XINE_SPEED_NORMAL)
       osd_update_status();
   }
-  
+
   panel_check_pause();
 }
 
@@ -872,7 +875,7 @@ void gui_stop (xitk_widget_t *w, void *d
     gui->playlist.control &= ~PLAYLIST_CONTROL_STOP;
 
   gui->stream_length.pos = gui->stream_length.time = gui->stream_length.length = 0;
-  
+
   mediamark_reset_played_state();
   if(gui->visual_anim.running) {
     xine_stop(gui->visual_anim.stream);
@@ -954,7 +957,7 @@ void gui_pause (xitk_widget_t *w, void *
     xine_set_param(gui->stream, XINE_PARAM_SPEED, last_playback_speed);
     video_window_reset_ssaver();
   }
-  
+
   panel_check_pause();
   /* Give xine engine some time before updating OSD, otherwise the */
   /* time disp may be empty when switching to XINE_SPEED_PAUSE.    */
@@ -965,10 +968,10 @@ void gui_pause (xitk_widget_t *w, void *
 void gui_eject(xitk_widget_t *w, void *data) {
   gGui_t *gui = gGui;
   int i;
-  
+
   if(xine_get_status(gui->stream) == XINE_STATUS_PLAY)
     gui_stop(NULL, NULL);
-  
+
   if(xine_eject(gui->stream)) {
 
     if(gui->playlist.num) {
@@ -985,19 +988,19 @@ void gui_eject(xitk_widget_t *w, void *d
 	tok_len = (mrl - cur_mrl) + 2;
 
       if(tok_len != 0) {
-	/* 
+	/*
 	 * Store all of not maching entries
 	 */
 	for(i = 0; i < gui->playlist.num; i++) {
 	  if(strncasecmp(gui->playlist.mmk[i]->mrl, cur_mrl, tok_len)) {
-	    
+
 	    mmk = (mediamark_t **) realloc(mmk, sizeof(mediamark_t *) * (new_num + 2));
-	    
-	    (void) mediamark_store_mmk(&mmk[new_num], 
+
+	    (void) mediamark_store_mmk(&mmk[new_num],
 				       gui->playlist.mmk[i]->mrl,
 				       gui->playlist.mmk[i]->ident,
 				       gui->playlist.mmk[i]->sub,
-				       gui->playlist.mmk[i]->start, 
+				       gui->playlist.mmk[i]->start,
 				       gui->playlist.mmk[i]->end,
 				       gui->playlist.mmk[i]->av_offset,
 				       gui->playlist.mmk[i]->spu_offset);
@@ -1011,7 +1014,7 @@ void gui_eject(xitk_widget_t *w, void *d
 	mediamark_free_mediamarks();
 	if(mmk)
 	  gui->playlist.mmk = mmk;
-	
+
 	if(!(gui->playlist.num = new_num))
 	  gui->playlist.cur = -1;
 	else if(new_num)
@@ -1023,14 +1026,14 @@ void gui_eject(xitk_widget_t *w, void *d
 	 * Remove only the current MRL
 	 */
 	mediamark_free_entry(gui->playlist.cur);
-	
+
 	for(i = gui->playlist.cur; i < gui->playlist.num; i++)
 	  gui->playlist.mmk[i] = gui->playlist.mmk[i + 1];
-	
+
 	gui->playlist.mmk = (mediamark_t **) realloc(gui->playlist.mmk, sizeof(mediamark_t *) * (gui->playlist.num + 2));
 
 	gui->playlist.mmk[gui->playlist.num] = NULL;
-	
+
 	if(gui->playlist.cur)
 	  gui->playlist.cur--;
       }
@@ -1039,7 +1042,7 @@ void gui_eject(xitk_widget_t *w, void *d
 	enable_playback_controls(0);
 
     }
-    
+
     gui_set_current_mmk(mediamark_get_current_mmk());
     playlist_update_playlist();
   }
@@ -1077,7 +1080,7 @@ void gui_toggle_visibility(xitk_widget_t
     /* (re)start/stop visual animation */
     if(video_window_is_visible()) {
       layer_above_video(gui->panel_window);
-      
+
       if(gui->visual_anim.enabled && (gui->visual_anim.running == 2))
 	visual_anim_play();
     }
@@ -1142,13 +1145,13 @@ static void set_fullscreen_mode(int full
     if(help)
       help_toggle_visibility(NULL, NULL);
   }
-  
+
   video_window_set_fullscreen_mode(fullscreen_mode);
-  
+
   /* Drawable has changed, update cursor visiblity */
   if(!gui->cursor_visible)
     video_window_set_cursor_visibility(gui->cursor_visible);
-  
+
   if(panel)
     panel_toggle_visibility(NULL, NULL);
   else {
@@ -1203,12 +1206,12 @@ void gui_toggle_aspect(int aspect) {
 
   if(aspect == -1)
     aspect = xine_get_param(gui->stream, XINE_PARAM_VO_ASPECT_RATIO) + 1;
-  
+
   xine_set_param(gui->stream, XINE_PARAM_VO_ASPECT_RATIO, aspect);
-  
-  osd_display_info(_("Aspect ratio: %s"), 
+
+  osd_display_info(_("Aspect ratio: %s"),
 		   ratios[xine_get_param(gui->stream, XINE_PARAM_VO_ASPECT_RATIO)]);
-  
+
   if (panel_is_visible())  {
     XLockDisplay(gui->display);
     XRaiseWindow(gui->display, gui->panel_window);
@@ -1222,7 +1225,7 @@ void gui_toggle_interlaced(void) {
   gui->deinterlace_enable = !gui->deinterlace_enable;
   osd_display_info(_("Deinterlace: %s"), (gui->deinterlace_enable) ? _("enabled") : _("disabled"));
   post_deinterlace();
-  
+
   if (panel_is_visible())  {
     XLockDisplay(gui->display);
     XRaiseWindow(gui->display, gui->panel_window);
@@ -1242,14 +1245,14 @@ void gui_change_audio_channel(xitk_widge
   gGui_t *gui = gGui;
   int dir = (int)(intptr_t)data;
   int channel;
-  
+
   channel = xine_get_param(gui->stream, XINE_PARAM_AUDIO_CHANNEL_LOGICAL);
-  
+
   if(dir == GUI_NEXT)
     channel++;
   else if(dir == GUI_PREV)
     channel--;
-  
+
   gui_direct_change_audio_channel(w, data, channel);
 }
 
@@ -1265,14 +1268,14 @@ void gui_change_spu_channel(xitk_widget_
   int dir = (int)(intptr_t)data;
   int channel;
   int maxchannel;
-  
+
   channel = xine_get_param(gui->stream, XINE_PARAM_SPU_CHANNEL);
   maxchannel = xine_get_stream_info(gui->stream, XINE_STREAM_INFO_MAX_SPU_CHANNEL);
 
   if (xine_get_status(gui->spu_stream) != XINE_STATUS_IDLE) /* if we have a slave SPU channel, take it into account */
     maxchannel += xine_get_stream_info(gui->spu_stream, XINE_STREAM_INFO_MAX_SPU_CHANNEL);
 
-  /* XINE_STREAM_INFO_MAX_SPU_CHANNEL actually returns the number of available spu channels, i.e. 
+  /* XINE_STREAM_INFO_MAX_SPU_CHANNEL actually returns the number of available spu channels, i.e.
    * 0 means no SPUs, 1 means 1 SPU channel, etc. */
   --maxchannel;
 
@@ -1331,13 +1334,13 @@ static __attribute__((noreturn)) void *_
   gGui_t *gui = gGui;
   int  pos = (int)(intptr_t) data;
   int  update_mmk = 0, ret;
-  
+
   pthread_detach(pthread_self());
 
   if(pthread_mutex_trylock(&gui->xe_mutex)) {
     pthread_exit(NULL);
   }
-  
+
   if(gui->logo_mode && (mediamark_get_current_mrl())) {
     gui->suppress_messages++;
     ret = xine_open(gui->stream, (mediamark_get_current_mrl()));
@@ -1349,12 +1352,12 @@ static __attribute__((noreturn)) void *_
     }
   }
 
-  if(((xine_get_stream_info(gui->stream, XINE_STREAM_INFO_SEEKABLE)) == 0) || 
+  if(((xine_get_stream_info(gui->stream, XINE_STREAM_INFO_SEEKABLE)) == 0) ||
      (gui->ignore_next == 1)) {
     pthread_mutex_unlock(&gui->xe_mutex);
     pthread_exit(NULL);
   }
-    
+
   if(xine_get_status(gui->stream) != XINE_STATUS_PLAY) {
     gui->suppress_messages++;
     xine_open(gui->stream, gui->mmk.mrl);
@@ -1365,51 +1368,51 @@ static __attribute__((noreturn)) void *_
       ret = xine_open(gui->spu_stream, gui->mmk.sub);
       gui->suppress_messages--;
       if (ret)
-	xine_stream_master_slave(gui->stream, 
+	xine_stream_master_slave(gui->stream,
 				 gui->spu_stream, XINE_MASTER_SLAVE_PLAY | XINE_MASTER_SLAVE_STOP);
     }
     else
       xine_close (gui->spu_stream);
   }
-  
+
   gui->ignore_next = 1;
-  
+
   if(gui->playlist.num && gui->playlist.cur >= 0 && gui->playlist.mmk &&
      gui->playlist.mmk[gui->playlist.cur] &&
      (!strcmp(gui->playlist.mmk[gui->playlist.cur]->mrl, gui->mmk.mrl)))
     update_mmk = 1;
-  
+
   pthread_mutex_lock(&new_pos_mutex);
   gui->new_pos = pos;
   pthread_mutex_unlock(&new_pos_mutex);
 
   do {
     int opos;
-    
+
     pthread_mutex_lock(&new_pos_mutex);
     opos = gui->new_pos;
     pthread_mutex_unlock(&new_pos_mutex);
-    
+
     xitk_slider_set_pos(panel->playback_widgets.slider_play, pos);
     osd_stream_position(pos);
-    
+
     (void) gui_xine_play(gui->stream, pos, 0, update_mmk);
-    
+
     xine_get_pos_length(gui->stream,
 			&(gui->stream_length.pos),
-			&(gui->stream_length.time), 
+			&(gui->stream_length.time),
 			&(gui->stream_length.length));
     panel_update_runtime_display();
-    
+
     pthread_mutex_lock(&new_pos_mutex);
     if(opos == gui->new_pos)
       gui->new_pos = -1;
-    
+
     pos = gui->new_pos;
     pthread_mutex_unlock(&new_pos_mutex);
-    
+
   } while(pos != -1);
-  
+
   gui->ignore_next = 0;
   osd_hide_status();
   panel_check_pause();
@@ -1422,9 +1425,9 @@ static __attribute__((noreturn)) void *_
   gGui_t *gui = gGui;
   int off_sec = (int)(intptr_t)data;
   int sec, pos;
-  
+
   pthread_detach(pthread_self());
-  
+
   pthread_mutex_lock(&new_pos_mutex);
   gui->new_pos = -1;
   pthread_mutex_unlock(&new_pos_mutex);
@@ -1432,24 +1435,24 @@ static __attribute__((noreturn)) void *_
   if(!gui_xine_get_pos_length(gui->stream, NULL, &sec, NULL)) {
     pthread_exit(NULL);
   }
-  
+
   if(pthread_mutex_trylock(&gui->xe_mutex)) {
     pthread_exit(NULL);
   }
 
-  if(((xine_get_stream_info(gui->stream, XINE_STREAM_INFO_SEEKABLE)) == 0) || 
+  if(((xine_get_stream_info(gui->stream, XINE_STREAM_INFO_SEEKABLE)) == 0) ||
      (gui->ignore_next == 1)) {
     pthread_mutex_unlock(&gui->xe_mutex);
     pthread_exit(NULL);
   }
-  
+
   if(xine_get_status(gui->stream) != XINE_STATUS_PLAY) {
     pthread_mutex_unlock(&gui->xe_mutex);
     pthread_exit(NULL);
   }
-  
+
   gui->ignore_next = 1;
-  
+
   sec /= 1000;
 
   if((sec + off_sec) < 0)
@@ -1458,12 +1461,12 @@ static __attribute__((noreturn)) void *_
     sec += off_sec;
 
   (void) gui_xine_play(gui->stream, 0, sec, 1);
-  
+
   pthread_mutex_unlock(&gui->xe_mutex);
 
   if(gui_xine_get_pos_length(gui->stream, &pos, NULL, NULL))
     osd_stream_position(pos);
-  
+
   gui->ignore_next = 0;
   osd_hide_status();
   panel_check_pause();
@@ -1493,7 +1496,7 @@ void gui_set_current_position (int pos)
 void gui_seek_relative (int off_sec) {
   int        err;
   pthread_t  pth;
-  
+
   if((err = pthread_create(&pth, NULL, _gui_seek_relative, (void *)(intptr_t)off_sec)) != 0) {
     printf(_("%s(): can't create new thread (%s)\n"), __XINE_FUNCTION__, strerror(err));
     abort();
@@ -1515,12 +1518,12 @@ void gui_dndcallback(char *filename) {
 
     pthread_mutex_lock(&gui->mmk_mutex);
 
-    if((strlen(mrl) > 6) && 
+    if((strlen(mrl) > 6) &&
        (!strncmp(mrl, "file:", 5))) {
-      
+
       if((p = strstr(mrl, ":/")) != NULL) {
 	struct stat pstat;
-	
+
 	p += 2;
 
 	if(*(p + 1) == '/')
@@ -1531,8 +1534,8 @@ void gui_dndcallback(char *filename) {
 	if((stat(p, &pstat)) == 0) {
 	  if(is_a_dir(p)) {
 	    if(*(p + (strlen(p) - 1)) == '/')
-	      *(p + (strlen(p) - 1)) = '\0'; 
-	    
+	      *(p + (strlen(p) - 1)) = '\0';
+
 	    mediamark_collect_from_directory(p);
 	    more_than_one = gui->playlist.cur;
 	    goto __do_play;
@@ -1542,16 +1545,16 @@ void gui_dndcallback(char *filename) {
 	}
 	else {
 	  snprintf(buffer2, sizeof(buffer2), "/%s", p);
-	  
+
 	  /* file don't exist, add it anyway */
 	  if((stat(buffer2, &pstat)) == -1)
 	    strlcpy(buffer, mrl, sizeof(buffer));
 	  else {
 	    if(is_a_dir(buffer2)) {
-	      
+
 	      if(buffer2[strlen(buffer2) - 1] == '/')
-		buffer2[strlen(buffer2) - 1] = '\0'; 
-	      
+		buffer2[strlen(buffer2) - 1] = '\0';
+
 	      mediamark_collect_from_directory(buffer2);
 	      more_than_one = gui->playlist.cur;
 	      goto __do_play;
@@ -1559,7 +1562,7 @@ void gui_dndcallback(char *filename) {
 	    else
 	      snprintf(buffer, sizeof(buffer), "file:/%s", buffer2);
 	  }
-	  
+
 	}
       }
       else {
@@ -1569,11 +1572,11 @@ void gui_dndcallback(char *filename) {
     }
     else
       strlcpy(buffer, mrl, sizeof(buffer));
-    
+
     if(is_a_dir(buffer)) {
       if(buffer[strlen(buffer) - 1] == '/')
-	buffer[strlen(buffer) - 1] = '\0'; 
-      
+	buffer[strlen(buffer) - 1] = '\0';
+
       mediamark_collect_from_directory(buffer);
       more_than_one = gui->playlist.cur;
     }
@@ -1585,10 +1588,10 @@ void gui_dndcallback(char *filename) {
 	ident++;
       else
 	ident = buffer;
-      
+
       if(mrl_look_like_playlist(buffer)) {
 	int cur = gui->playlist.cur;
-	
+
 	more_than_one = (gui->playlist.cur - 1);
 	if(mediamark_concat_mediamarks(buffer))
 	  gui->playlist.cur = cur;
@@ -1599,7 +1602,7 @@ void gui_dndcallback(char *filename) {
 	mediamark_append_entry(buffer, ident, NULL, 0, -1, 0, 0);
 
     }
-    
+
   __do_play:
 
     playlist_update_playlist();
@@ -1619,7 +1622,7 @@ void gui_dndcallback(char *filename) {
 
       }
     }
-    
+
     if((!is_playback_widgets_enabled()) && gui->playlist.num)
       enable_playback_controls(1);
 
@@ -1636,7 +1639,7 @@ void gui_direct_nextprev(xitk_widget_t *
 
   by_chapter = (gui->skip_by_chapter &&
 		(xine_get_stream_info(gui->stream, XINE_STREAM_INFO_HAS_CHAPTERS))) ? 1 : 0;
-  
+
   if(mmk && mediamark_got_alternate(mmk))
     mediamark_unset_got_alternate(mmk);
 
@@ -1653,7 +1656,7 @@ void gui_direct_nextprev(xitk_widget_t *
     else {
 
       switch(gui->playlist.loop) {
-      
+
       case PLAYLIST_LOOP_SHUFFLE:
       case PLAYLIST_LOOP_SHUF_PLUS:
 	gui->ignore_next = 0;
@@ -1668,7 +1671,7 @@ void gui_direct_nextprev(xitk_widget_t *
 	    gui->playlist.cur += (value - 1);
 	  else
 	    gui->playlist.cur += value;
-	  
+
 	  gui->ignore_next = 0;
 	  gui_playlist_start_next();
 	}
@@ -1677,11 +1680,11 @@ void gui_direct_nextprev(xitk_widget_t *
       case PLAYLIST_LOOP_LOOP:
 	if((gui->playlist.cur + value) > gui->playlist.num) {
 	  int newcur = value - (gui->playlist.num - gui->playlist.cur);
-	  
+
 	  gui->ignore_next = 1;
 	  gui->playlist.cur = newcur;
 	  gui_set_current_mmk(mediamark_get_current_mmk());
-	  if(!gui_xine_open_and_play(gui->mmk.mrl, gui->mmk.sub, 0, 
+	  if(!gui_xine_open_and_play(gui->mmk.mrl, gui->mmk.sub, 0,
 				     gui->mmk.start, gui->mmk.av_offset, gui->mmk.spu_offset, 1))
 	    gui_display_logo();
 
@@ -1699,7 +1702,7 @@ void gui_direct_nextprev(xitk_widget_t *
   else if(((intptr_t)data) == GUI_PREV) {
 
     osd_hide();
-    
+
     if(by_chapter) {
 
       for(i = 0; i < value; i++)
@@ -1718,20 +1721,20 @@ void gui_direct_nextprev(xitk_widget_t *
       case PLAYLIST_LOOP_NO_LOOP:
       case PLAYLIST_LOOP_REPEAT:
 	if((gui->playlist.cur - value) >= 0) {
-	  
+
 	  gui->ignore_next = 1;
 	  gui->playlist.cur -= value;
-	  
+
 	  if((gui->playlist.cur < gui->playlist.num)) {
 	    gui_set_current_mmk(mediamark_get_current_mmk());
-	    if(!gui_xine_open_and_play(gui->mmk.mrl, gui->mmk.sub, 0, 
+	    if(!gui_xine_open_and_play(gui->mmk.mrl, gui->mmk.sub, 0,
 				       gui->mmk.start, gui->mmk.av_offset, gui->mmk.spu_offset, 1))
 	      gui_display_logo();
 
 	  }
 	  else
 	    gui->playlist.cur = 0;
-	  
+
 	  gui->ignore_next = 0;
 	}
 	break;
@@ -1742,23 +1745,23 @@ void gui_direct_nextprev(xitk_widget_t *
 	if((gui->playlist.cur - value) >= 0) {
 
 	  gui->playlist.cur -= value;
-	  
+
 	  if((gui->playlist.cur < gui->playlist.num)) {
 	    gui_set_current_mmk(mediamark_get_current_mmk());
-	    if(!gui_xine_open_and_play(gui->mmk.mrl, gui->mmk.sub, 0, 
+	    if(!gui_xine_open_and_play(gui->mmk.mrl, gui->mmk.sub, 0,
 				       gui->mmk.start, gui->mmk.av_offset, gui->mmk.spu_offset, 1))
 	      gui_display_logo();
 	  }
 	  else
 	    gui->playlist.cur = 0;
-	  
+
 	}
 	else {
 	  int newcur = (gui->playlist.cur - value) + gui->playlist.num;
-	  
+
 	  gui->playlist.cur = newcur;
 	  gui_set_current_mmk(mediamark_get_current_mmk());
-	  if(!gui_xine_open_and_play(gui->mmk.mrl, gui->mmk.sub, 0, 
+	  if(!gui_xine_open_and_play(gui->mmk.mrl, gui->mmk.sub, 0,
 				     gui->mmk.start, gui->mmk.av_offset, gui->mmk.spu_offset, 1))
 	    gui_display_logo();
 	}
@@ -1771,7 +1774,7 @@ void gui_direct_nextprev(xitk_widget_t *
 
   panel_check_pause();
 }
-  
+
 void gui_nextprev(xitk_widget_t *w, void *data) {
   gui_direct_nextprev(w, data, 1);
 }
@@ -1873,7 +1876,7 @@ void gui_setup_show(xitk_widget_t *w, vo
 
 void gui_event_sender_show(xitk_widget_t *w, void *data) {
   gGui_t *gui = gGui;
-  
+
   if (event_sender_is_running() && !event_sender_is_visible())
     event_sender_toggle_visibility(NULL, NULL);
   else if(!event_sender_is_running())
@@ -1888,7 +1891,7 @@ void gui_event_sender_show(xitk_widget_t
 
 void gui_stream_infos_show(xitk_widget_t *w, void *data) {
   gGui_t *gui = gGui;
-  
+
   if (stream_infos_is_running() && !stream_infos_is_visible())
     stream_infos_toggle_visibility(NULL, NULL);
   else if(!stream_infos_is_running())
@@ -1903,7 +1906,7 @@ void gui_stream_infos_show(xitk_widget_t
 
 void gui_tvset_show(xitk_widget_t *w, void *data) {
   gGui_t *gui = gGui;
-  
+
   if (tvset_is_running() && !tvset_is_visible())
     tvset_toggle_visibility(NULL, NULL);
   else if(!tvset_is_running())
@@ -1918,7 +1921,7 @@ void gui_tvset_show(xitk_widget_t *w, vo
 
 void gui_vpp_show(xitk_widget_t *w, void *data) {
   gGui_t *gui = gGui;
-  
+
   if (vpplugin_is_running() && !vpplugin_is_visible())
     vpplugin_toggle_visibility(NULL, NULL);
   else if(!vpplugin_is_running())
@@ -1995,7 +1998,7 @@ void gui_help_show(xitk_widget_t *w, voi
  */
 int is_layer_above(void) {
   gGui_t *gui = gGui;
-  
+
   return (gui->always_layer_above || gui->layer_above) ? 1 : 0;
 }
 /*
@@ -2004,10 +2007,10 @@ int is_layer_above(void) {
  */
 void layer_above_video(Window w) {
   int layer = 10;
-  
+
   if(!(is_layer_above()))
     return;
-  
+
   if ((!(video_window_get_fullscreen_mode() & WINDOWED_MODE)) && video_window_is_visible()) {
     layer = xitk_get_layer_level();
   }
@@ -2017,7 +2020,7 @@ void layer_above_video(Window w) {
     else
       layer = 4;
   }
-  
+
   xitk_set_window_layer(w, layer);
 }
 
@@ -2073,7 +2076,7 @@ void gui_decrease_audio_volume(void) {
 
 void gui_app_show(xitk_widget_t *w, void *data) {
   gGui_t *gui = gGui;
-  
+
   if (applugin_is_running() && !applugin_is_visible())
     applugin_toggle_visibility(NULL, NULL);
   else if(!applugin_is_running())
@@ -2107,7 +2110,7 @@ void gui_change_zoom(int zoom_dx, int zo
 		 xine_get_param(gui->stream, XINE_PARAM_VO_ZOOM_X) + zoom_dx);
   xine_set_param(gui->stream, XINE_PARAM_VO_ZOOM_Y,
 		 xine_get_param(gui->stream, XINE_PARAM_VO_ZOOM_Y) + zoom_dy);
-  
+
   if (panel_is_visible())  {
     XLockDisplay(gui->display);
     XRaiseWindow(gui->display, gui->panel_window);
@@ -2124,7 +2127,7 @@ void gui_reset_zoom(void) {
 
   xine_set_param(gui->stream, XINE_PARAM_VO_ZOOM_X, 100);
   xine_set_param(gui->stream, XINE_PARAM_VO_ZOOM_Y, 100);
-  
+
   if (panel_is_visible())  {
     XLockDisplay(gui->display);
     XRaiseWindow(gui->display, gui->panel_window);
@@ -2133,7 +2136,7 @@ void gui_reset_zoom(void) {
   }
 }
 
-/* 
+/*
  * Toggle TV Modes on the dxr3
  */
 void gui_toggle_tvmode(void) {
@@ -2161,26 +2164,26 @@ void gui_send_expose_to_window(Window wi
   xev.xexpose.display    = gui->display;
   xev.xexpose.window     = window;
   xev.xexpose.count      = 0;
-  
+
   XLockDisplay(gui->display);
   if(!XSendEvent(gui->display, window, False, ExposureMask, &xev)) {
     fprintf(stderr, _("XSendEvent(display, 0x%x ...) failed.\n"), (unsigned int) window);
   }
   XSync(gui->display, False);
   XUnlockDisplay(gui->display);
-  
+
 }
 
 void gui_add_mediamark(void) {
   gGui_t *gui = gGui;
-  
+
   if((gui->logo_mode == 0) && (xine_get_status(gui->stream) == XINE_STATUS_PLAY)) {
     int secs;
 
     if(gui_xine_get_pos_length(gui->stream, NULL, &secs, NULL)) {
       secs /= 1000;
-      
-      mediamark_append_entry(gui->mmk.mrl, gui->mmk.ident, 
+
+      mediamark_append_entry(gui->mmk.mrl, gui->mmk.ident,
 			     gui->mmk.sub, secs, -1, gui->mmk.av_offset, gui->mmk.spu_offset);
       playlist_update_playlist();
     }
@@ -2211,14 +2214,14 @@ static void fileselector_callback(filebr
   gGui_t *gui = gGui;
   char *file;
   char *cur_dir = filebrowser_get_current_dir(fb);
-  
+
   /* Upate configuration with the selected directory path */
   if(cur_dir && strlen(cur_dir)) {
     strlcpy(gui->curdir, cur_dir, sizeof(gui->curdir));
     config_update_string("media.files.origin_path", gui->curdir);
   }
   free(cur_dir);
-  
+
   /* Get the file path/name */
   if(((file = filebrowser_get_full_filename(fb)) != NULL) && strlen(file)) {
     int first  = gui->playlist.num;
@@ -2266,13 +2269,13 @@ static void fileselector_all_callback(fi
   gGui_t *gui = gGui;
   char **files;
   char  *path = filebrowser_get_current_dir(fb);
-  
+
   /* Update the configuration with the current path */
   if(path && strlen(path)) {
     strlcpy(gui->curdir, path, sizeof(gui->curdir));
     config_update_string("media.files.origin_path", gui->curdir);
   }
-  
+
   /* Get all of the file names in the current directory as an array of pointers to strings */
   if((files = filebrowser_get_all_files(fb)) != NULL) {
     int i = 0;
@@ -2288,7 +2291,7 @@ static void fileselector_all_callback(fi
         snprintf(pathname, sizeof(pathname), "%s/", path);
       else
 	strlcpy(pathname, path, sizeof(pathname));
-      
+
       /* For each file, concatenate the path with the name and append it to the playlist */
       while(files[i]) {
         snprintf(fullfilename, sizeof(fullfilename), "%s%s", pathname, files[i]);
@@ -2304,7 +2307,7 @@ static void fileselector_all_callback(fi
 
         i++;
       } /* End while */
-      
+
       playlist_update_playlist();
 
       /* Enable playback controls on display */
@@ -2325,7 +2328,7 @@ static void fileselector_all_callback(fi
     i = 0;
     while(files[i])
       free(files[i++]);
-    
+
     free(files);
   } /* If valid file list */
 
@@ -2364,17 +2367,17 @@ static void subselector_callback(filebro
   if((file = filebrowser_get_full_filename(fb)) != NULL) {
     if(file) {
       mediamark_t *mmk = mediamark_clone_mmk(mediamark_get_current_mmk());
-      
+
       if(mmk) {
-	mediamark_replace_entry(&gui->playlist.mmk[gui->playlist.cur], mmk->mrl, mmk->ident, 
+	mediamark_replace_entry(&gui->playlist.mmk[gui->playlist.cur], mmk->mrl, mmk->ident,
 				file, mmk->start, mmk->end, mmk->av_offset, mmk->spu_offset);
 	mediamark_free_mmk(&mmk);
 
 	mmk = mediamark_get_current_mmk();
 	gui_set_current_mmk(mmk);
-	
+
 	playlist_mrlident_toggle();
-	
+
 	if(xine_get_status(gui->stream) == XINE_STATUS_PLAY) {
 	  int curpos;
 	  xine_close (gui->spu_stream);
@@ -2383,9 +2386,9 @@ static void subselector_callback(filebro
 	  ret = xine_open(gui->spu_stream, mmk->sub);
 	  gui->suppress_messages--;
 	  if (ret)
-	    xine_stream_master_slave(gui->stream, 
+	    xine_stream_master_slave(gui->stream,
 				     gui->spu_stream, XINE_MASTER_SLAVE_PLAY | XINE_MASTER_SLAVE_STOP);
-	  
+
 	  if(gui_xine_get_pos_length(gui->stream, &curpos, NULL, NULL)) {
 	    xine_stop(gui->stream);
 	    gui_set_current_position(curpos);
@@ -2401,42 +2404,42 @@ static void subselector_callback(filebro
 
 void gui_select_sub(void) {
   gGui_t *gui = gGui;
-  
+
   if(gui->playlist.num) {
     if(load_sub)
       filebrowser_raise_window(load_sub);
     else {
       filebrowser_callback_button_t  cbb[2];
       mediamark_t *mmk;
-      
+
       mmk = mediamark_get_current_mmk();
-      
+
       if(mmk) {
 	char *path, *open_path;
-	
+
 	cbb[0].label = _("Select");
 	cbb[0].callback = subselector_callback;
 	cbb[0].need_a_file = 1;
 	cbb[1].callback = fileselector_cancel_callback;
 	cbb[1].need_a_file = 0;
-    	
+
 	path = mmk->sub ? mmk->sub : mmk->mrl;
-	
+
 	if(mrl_look_like_file(path)) {
 	  char *p;
-	  
+
 	  open_path = strdup(path);
-	  
+
 	  if(!strncasecmp(path, "file:", 5))
 	    path += 5;
-	  
+
 	  p = strrchr(open_path, '/');
 	  if (p && strlen(p))
 	    *p = '\0';
 	}
 	else
 	  open_path = strdup(gui->curdir);
-	
+
 	load_sub = create_filebrowser(_("Pick a subtitle file"), open_path, hidden_file_cb, &cbb[0], NULL, &cbb[1]);
 	free(open_path);
       }
@@ -2452,10 +2455,10 @@ void visual_anim_init(void) {
   char *buffer;
 
   asprintf(&buffer, "%s/%s", XINE_VISDIR, "default.mpv");
-  
+
   gui->visual_anim.mrls = (char **) malloc(sizeof(char *) * 3);
   gui->visual_anim.num_mrls = 0;
-  
+
   gui->visual_anim.mrls[gui->visual_anim.num_mrls++]   = buffer;
   gui->visual_anim.mrls[gui->visual_anim.num_mrls]     = NULL;
   gui->visual_anim.mrls[gui->visual_anim.num_mrls + 1] = NULL;
@@ -2469,9 +2472,9 @@ void visual_anim_done(void) {
 }
 void visual_anim_add_animation(char *mrl) {
   gGui_t *gui = gGui;
-  gui->visual_anim.mrls = (char **) realloc(gui->visual_anim.mrls, sizeof(char *) * 
+  gui->visual_anim.mrls = (char **) realloc(gui->visual_anim.mrls, sizeof(char *) *
 					     ((gui->visual_anim.num_mrls + 1) + 2));
-  
+
   gui->visual_anim.mrls[gui->visual_anim.num_mrls++]   = strdup(mrl);
   gui->visual_anim.mrls[gui->visual_anim.num_mrls]     = NULL;
   gui->visual_anim.mrls[gui->visual_anim.num_mrls + 1] = NULL;
@@ -2485,9 +2488,9 @@ static int visual_anim_open_and_play(xin
 void visual_anim_play(void) {
   gGui_t *gui = gGui;
   if(gui->visual_anim.enabled == 2) {
-    if(!visual_anim_open_and_play(gui->visual_anim.stream, 
+    if(!visual_anim_open_and_play(gui->visual_anim.stream,
 				  gui->visual_anim.mrls[gui->visual_anim.current]))
-      gui_handle_xine_error(gui->visual_anim.stream, 
+      gui_handle_xine_error(gui->visual_anim.stream,
 			    gui->visual_anim.mrls[gui->visual_anim.current]);
     gui->visual_anim.running = 1;
   }
openSUSE Build Service is sponsored by