changeset 32984:eb831a979df7

Cosmetic: Format to MPlayer coding style. Additionally: remove needless includes, group and sort includes, order header file items, sort prototype declarations, spread defintion of guiSetFilename on separate lines, move variable definitions to the top, move assignment outside condition, group statements by adding or removing new lines to ease reading, remove needless parentheses and braces, add useful ones, avoid mixing declaration and code, revise comments and add new ones.
author ib
date Fri, 11 Mar 2011 00:58:09 +0000
parents 8de2eee48196
children ff128ac010ba
files gui/interface.c gui/interface.h
diffstat 2 files changed, 1453 insertions(+), 1194 deletions(-) [+]
line wrap: on
line diff
--- a/gui/interface.c	Thu Mar 10 18:59:44 2011 +0000
+++ b/gui/interface.c	Fri Mar 11 00:58:09 2011 +0000
@@ -16,52 +16,37 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
-#include <inttypes.h>
 #include <stdlib.h>
-#include <stdio.h>
 #include <string.h>
-#include <sys/types.h>
 
+#include "interface.h"
+#include "app.h"
+#include "mplayer/gmplayer.h"
+#include "mplayer/widgets.h"
+#include "skin/skin.h"
 #include "wm/ws.h"
 #include "wm/wsxdnd.h"
-#include "interface.h"
-#include "skin/skin.h"
-
-#include "mplayer/gtk/eq.h"
-#include "mplayer/widgets.h"
-#include "mplayer/gmplayer.h"
-#include "mplayer/play.h"
 
 #include "access_mpcontext.h"
-#include "sub/ass_mp.h"
-#include "app.h"
-#include "cfg.h"
+#include "config.h"
 #include "help_mp.h"
-#include "path.h"
+#include "input/input.h"
+#include "libaf/equalizer.h"
+#include "libao2/audio_out.h"
+#include "libmpcodecs/dec_audio.h"
+#include "libmpcodecs/dec_video.h"
+#include "libmpcodecs/vd.h"
+#include "libmpcodecs/vf.h"
+#include "libvo/video_out.h"
+#include "libvo/x11_common.h"
+#include "mixer.h"
 #include "mp_core.h"
+#include "mp_msg.h"
 #include "mpcommon.h"
 #include "mplayer.h"
-#include "libmpcodecs/vd.h"
-#include "libmpcodecs/vf.h"
-#include "libvo/x11_common.h"
-#include "libvo/video_out.h"
+#include "path.h"
 #include "sub/font_load.h"
 #include "sub/sub.h"
-#include "input/input.h"
-#include "libao2/audio_out.h"
-#include "mixer.h"
-#include "libaf/af.h"
-#include "libaf/equalizer.h"
-
-#ifdef CONFIG_ICONV
-#include <iconv.h>
-#endif
-
-#include "stream/stream.h"
-#include "libmpdemux/demuxer.h"
-#include "libmpdemux/stheader.h"
-#include "libmpcodecs/dec_audio.h"
-#include "libmpcodecs/dec_video.h"
 
 #ifdef CONFIG_DVDREAD
 #include "stream/stream_dvd.h"
@@ -69,1177 +54,1457 @@
 
 int vcd_seek_to_track(void *vcd, int track);
 
-#include "m_config.h"
-#include "m_option.h"
+guiInterface_t guiIntfStruct;
 
-
-guiInterface_t guiIntfStruct;
-int guiWinID=-1;
+int guiWinID = -1;
 
 char *skinName;
 char *skinDirInHome;
 char *skinMPlayerDir;
 
-int gstrcmp( const char * a,const char * b )
+plItem *plCurrent    = NULL;
+plItem *plList       = NULL;
+plItem *plLastPlayed = NULL;
+
+URLItem *URLList = NULL;
+
+char *fsHistory[fsPersistant_MaxPos] = { NULL, NULL, NULL, NULL, NULL };
+
+float gtkEquChannels[6][10];
+
+int gstrcmp(const char *a, const char *b)
 {
- if ( !a && !b ) return 0;
- if ( !a || !b ) return -1;
- return strcmp( a,b );
-}
+    if (!a && !b)
+        return 0;
+    if (!a || !b)
+        return -1;
 
-static int gstrncmp( const char * a, const char * b, int size )
-{
- if ( !a && !b ) return 0;
- if ( !a || !b ) return -1;
- return strncmp( a,b,size );
+    return strcmp(a, b);
 }
 
-char * gstrdup( const char * str )
+static int gstrncmp(const char *a, const char *b, int size)
 {
- if ( !str ) return NULL;
- return strdup( str );
+    if (!a && !b)
+        return 0;
+    if (!a || !b)
+        return -1;
+
+    return strncmp(a, b, size);
 }
 
-char * gstrchr( char * str,int c )
+char *gstrdup(const char *str)
 {
- if ( !str ) return NULL;
- return strchr( str,c );
+    if (!str)
+        return NULL;
+
+    return strdup(str);
 }
 
-void gfree( void ** p )
+char *gstrchr(char *str, int c)
 {
- free( *p ); *p=NULL;
+    if (!str)
+        return NULL;
+
+    return strchr(str, c);
+}
+
+void gfree(void **p)
+{
+    free(*p);
+    *p = NULL;
 }
 
 /**
- * \brief this actually creates a new list containing only one element...
+ * \brief This actually creates a new list containing only one element...
  */
-void gaddlist( char *** list,const char * entry )
+void gaddlist(char ***list, const char *entry)
 {
- int i;
+    int i;
 
- if ( (*list) )
-  {
-   for ( i=0;(*list)[i];i++ ) free( (*list)[i] );
-   free( (*list) );
-  }
+    if (*list) {
+        for (i = 0; (*list)[i]; i++)
+            free((*list)[i]);
 
- (*list)=malloc( 2 * sizeof(char **) );
- (*list)[0]=gstrdup( entry );
- (*list)[1]=NULL;
+        free(*list);
+    }
+
+    *list      = malloc(2 * sizeof(char **));
+    (*list)[0] = gstrdup(entry);
+    (*list)[1] = NULL;
 }
 
 /**
- * \brief this replaces a string starting with search by replace.
+ * \brief This replaces a string starting with search by replace.
  * If not found, replace is appended.
  */
 static void greplace(char ***list, const char *search, const char *replace)
 {
- int i = 0;
- int len = (search) ? strlen(search) : 0;
+    int i   = 0;
+    int len = (search ? strlen(search) : 0);
 
- if (*list) {
-   for (i = 0; (*list)[i]; i++) {
-     if (search && (strncmp((*list)[i], search, len) == 0)) {
-       free((*list)[i]);
-       (*list)[i] = gstrdup(replace);
-       return;
-     }
-   }
-   *list = realloc(*list, (i + 2) * sizeof(char *));
- }
- else
-   *list = malloc(2 * sizeof(char *));
+    if (*list) {
+        for (i = 0; (*list)[i]; i++) {
+            if (search && (strncmp((*list)[i], search, len) == 0)) {
+                free((*list)[i]);
+                (*list)[i] = gstrdup(replace);
+                return;
+            }
+        }
 
- (*list)[i] = gstrdup(replace);
- (*list)[i + 1] = NULL;
+        *list = realloc(*list, (i + 2) * sizeof(char *));
+    } else
+        *list = malloc(2 * sizeof(char *));
+
+    (*list)[i]     = gstrdup(replace);
+    (*list)[i + 1] = NULL;
 }
 
-void guiInit( void )
+void guiInit(void)
 {
- int i;
+    int i;
 
- memset( &guiIntfStruct,0,sizeof( guiIntfStruct ) );
- guiIntfStruct.Balance=50.0f;
- guiIntfStruct.StreamType=-1;
+    memset(&guiIntfStruct, 0, sizeof(guiIntfStruct));
+    guiIntfStruct.Balance    = 50.0f;
+    guiIntfStruct.StreamType = -1;
+
+    appInitStruct();
+
+    memset(&gtkEquChannels, 0, sizeof(gtkEquChannels));
 
- appInitStruct();
+#ifdef CONFIG_DXR3
+    if (!gtkDXR3Device)
+        gtkDXR3Device = strdup("/dev/em8300-0");
+#endif
 
- memset( &gtkEquChannels,0,sizeof( gtkEquChannels ) );
-#ifdef CONFIG_DXR3
- if ( !gtkDXR3Device ) gtkDXR3Device=strdup( "/dev/em8300-0" );
-#endif
- if ( stream_cache_size > 0 ) { gtkCacheOn=1; gtkCacheSize=stream_cache_size; }
- else if ( stream_cache_size == 0 ) gtkCacheOn = 0;
- if ( autosync && autosync != gtkAutoSync ) { gtkAutoSyncOn=1; gtkAutoSync=autosync; }
+    if (stream_cache_size > 0) {
+        gtkCacheOn   = 1;
+        gtkCacheSize = stream_cache_size;
+    } else if (stream_cache_size == 0)
+        gtkCacheOn = 0;
+
+    if (autosync && (autosync != gtkAutoSync)) {
+        gtkAutoSyncOn = 1;
+        gtkAutoSync   = autosync;
+    }
 
 #ifdef CONFIG_ASS
- gtkASS.enabled = ass_enabled;
- gtkASS.use_margins = ass_use_margins;
- gtkASS.top_margin = ass_top_margin;
- gtkASS.bottom_margin = ass_bottom_margin;
+    gtkASS.enabled       = ass_enabled;
+    gtkASS.use_margins   = ass_use_margins;
+    gtkASS.top_margin    = ass_top_margin;
+    gtkASS.bottom_margin = ass_bottom_margin;
 #endif
 
- gtkInit();
-// --- initialize X
- wsXInit( (void *)mDisplay );
-// --- load skin
- skinDirInHome=get_path("skins");
- skinMPlayerDir=MPLAYER_DATADIR "/skins";
- mp_msg( MSGT_GPLAYER,MSGL_V,"SKIN dir 1: '%s'\n",skinDirInHome);
- mp_msg( MSGT_GPLAYER,MSGL_V,"SKIN dir 2: '%s'\n",skinMPlayerDir);
- if ( !skinName ) skinName=strdup( "default" );
- i = skinRead( skinName );
- if ((i == -1) && strcmp(skinName,"default"))
- {
-    mp_msg( MSGT_GPLAYER,MSGL_WARN,MSGTR_SKIN_SKINCFG_SelectedSkinNotFound, skinName);
-    skinName=strdup( "default" );
-    i = skinRead( skinName );
- }
- switch (i) {
-   case -1: mp_msg( MSGT_GPLAYER,MSGL_ERR,MSGTR_SKIN_SKINCFG_SkinNotFound,skinName ); exit( 0 );
-   case -2: mp_msg( MSGT_GPLAYER,MSGL_ERR,MSGTR_SKIN_SKINCFG_SkinCfgReadError,skinName ); exit( 0 );
-  }
-// --- initialize windows
- if ( ( mplDrawBuffer = malloc( appMPlayer.main.Bitmap.ImageSize ) ) == NULL )
-  {
-   fprintf( stderr,MSGTR_NEMDB );
-   exit( 0 );
-  }
+    gtkInit();
+
+    // initialize X
+    wsXInit((void *)mDisplay);
+
+    // load skin
+
+    skinDirInHome  = get_path("skins");
+    skinMPlayerDir = MPLAYER_DATADIR "/skins";
+
+    mp_msg(MSGT_GPLAYER, MSGL_V, "SKIN dir 1: '%s'\n", skinDirInHome);
+    mp_msg(MSGT_GPLAYER, MSGL_V, "SKIN dir 2: '%s'\n", skinMPlayerDir);
+
+    if (!skinName)
+        skinName = strdup("default");
+
+    i = skinRead(skinName);
+
+    if (i == -1 && strcmp(skinName, "default") != 0) {
+        mp_msg(MSGT_GPLAYER, MSGL_WARN, MSGTR_SKIN_SKINCFG_SelectedSkinNotFound, skinName);
+
+        skinName = strdup("default");
+        i = skinRead(skinName);
+    }
+
+    switch (i) {
+    case -1:
+        mp_msg(MSGT_GPLAYER, MSGL_ERR, MSGTR_SKIN_SKINCFG_SkinNotFound, skinName);
+        exit(0);
 
- if ( gui_save_pos )
- {
-  appMPlayer.main.x = gui_main_pos_x;
-  appMPlayer.main.y = gui_main_pos_y;
-  appMPlayer.sub.x = gui_sub_pos_x;
-  appMPlayer.sub.y = gui_sub_pos_y;
- }
+    case -2:
+        mp_msg(MSGT_GPLAYER, MSGL_ERR, MSGTR_SKIN_SKINCFG_SkinCfgReadError, skinName);
+        exit(0);
+    }
+
+    // initialize windows
+
+    mplDrawBuffer = malloc(appMPlayer.main.Bitmap.ImageSize);
+
+    if (!mplDrawBuffer) {
+        fprintf(stderr, MSGTR_NEMDB); // NOTE TO MYSELF: (g)mp_msg this
+        exit(0);
+    }
 
-  if (WinID>0)
-   {
-    appMPlayer.subWindow.Parent=WinID;
-    appMPlayer.sub.x=0;
-    appMPlayer.sub.y=0;
-   }
-  if (guiWinID>=0) appMPlayer.mainWindow.Parent=guiWinID;
+    if (gui_save_pos) {
+        appMPlayer.main.x = gui_main_pos_x;
+        appMPlayer.main.y = gui_main_pos_y;
+        appMPlayer.sub.x  = gui_sub_pos_x;
+        appMPlayer.sub.y  = gui_sub_pos_y;
+    }
 
- wsCreateWindow( &appMPlayer.subWindow,
-  appMPlayer.sub.x,appMPlayer.sub.y,appMPlayer.sub.width,appMPlayer.sub.height,
-  wsNoBorder,wsShowMouseCursor|wsHandleMouseButton|wsHandleMouseMove,wsShowFrame|wsHideWindow,"MPlayer - Video" );
+    if (WinID > 0) {
+        appMPlayer.subWindow.Parent = WinID;
+        appMPlayer.sub.x = 0;
+        appMPlayer.sub.y = 0;
+    }
 
- wsDestroyImage( &appMPlayer.subWindow );
- wsCreateImage( &appMPlayer.subWindow,appMPlayer.sub.Bitmap.Width,appMPlayer.sub.Bitmap.Height );
- wsXDNDMakeAwareness(&appMPlayer.subWindow);
+    if (guiWinID >= 0)
+        appMPlayer.mainWindow.Parent = guiWinID;
 
- mplMenuInit();
- mplPBInit();
+    wsCreateWindow(&appMPlayer.subWindow, appMPlayer.sub.x, appMPlayer.sub.y, appMPlayer.sub.width, appMPlayer.sub.height, wsNoBorder, wsShowMouseCursor | wsHandleMouseButton | wsHandleMouseMove, wsShowFrame | wsHideWindow, "MPlayer - Video");
+    wsDestroyImage(&appMPlayer.subWindow);
+    wsCreateImage(&appMPlayer.subWindow, appMPlayer.sub.Bitmap.Width, appMPlayer.sub.Bitmap.Height);
+    wsXDNDMakeAwareness(&appMPlayer.subWindow);
+
+    mplMenuInit();
+    mplPBInit();
 
 // i=wsHideFrame|wsMaxSize|wsHideWindow;
 // if ( appMPlayer.mainDecoration ) i=wsShowFrame|wsMaxSize|wsHideWindow;
- i=wsShowFrame|wsMaxSize|wsHideWindow;
- wsCreateWindow( &appMPlayer.mainWindow,
-  appMPlayer.main.x,appMPlayer.main.y,appMPlayer.main.width,appMPlayer.main.height,
-  wsNoBorder,wsShowMouseCursor|wsHandleMouseButton|wsHandleMouseMove,i,"MPlayer" );
-
- wsSetShape( &appMPlayer.mainWindow,appMPlayer.main.Mask.Image );
- wsXDNDMakeAwareness(&appMPlayer.mainWindow);
+    i = wsShowFrame | wsMaxSize | wsHideWindow;
+    wsCreateWindow(&appMPlayer.mainWindow, appMPlayer.main.x, appMPlayer.main.y, appMPlayer.main.width, appMPlayer.main.height, wsNoBorder, wsShowMouseCursor | wsHandleMouseButton | wsHandleMouseMove, i, "MPlayer");
+    wsSetShape(&appMPlayer.mainWindow, appMPlayer.main.Mask.Image);
+    wsXDNDMakeAwareness(&appMPlayer.mainWindow);
 
 #ifdef DEBUG
-  mp_msg( MSGT_GPLAYER,MSGL_DBG2,"[main] depth on screen: %d\n",wsDepthOnScreen );
-  mp_msg( MSGT_GPLAYER,MSGL_DBG2,"[main] parent: 0x%x\n",(int)appMPlayer.mainWindow.WindowID );
-  mp_msg( MSGT_GPLAYER,MSGL_DBG2,"[main] sub: 0x%x\n",(int)appMPlayer.subWindow.WindowID );
+    mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[main] depth on screen: %d\n", wsDepthOnScreen);
+    mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[main] parent: 0x%x\n", (int)appMPlayer.mainWindow.WindowID);
+    mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[main] sub: 0x%x\n", (int)appMPlayer.subWindow.WindowID);
 #endif
 
- appMPlayer.mainWindow.ReDraw=(void *)mplMainDraw;
- appMPlayer.mainWindow.MouseHandler=mplMainMouseHandle;
- appMPlayer.mainWindow.KeyHandler=mplMainKeyHandle;
- appMPlayer.mainWindow.DandDHandler=mplDandDHandler;
+    appMPlayer.mainWindow.ReDraw       = (void *)mplMainDraw;
+    appMPlayer.mainWindow.MouseHandler = mplMainMouseHandle;
+    appMPlayer.mainWindow.KeyHandler   = mplMainKeyHandle;
+    appMPlayer.mainWindow.DandDHandler = mplDandDHandler;
+
+    appMPlayer.subWindow.ReDraw       = (void *)mplSubDraw;
+    appMPlayer.subWindow.MouseHandler = mplSubMouseHandle;
+    appMPlayer.subWindow.KeyHandler   = mplMainKeyHandle;
+    appMPlayer.subWindow.DandDHandler = mplDandDHandler;
 
- appMPlayer.subWindow.ReDraw=(void *)mplSubDraw;
- appMPlayer.subWindow.MouseHandler=mplSubMouseHandle;
- appMPlayer.subWindow.KeyHandler=mplMainKeyHandle;
- appMPlayer.subWindow.DandDHandler=mplDandDHandler;
+    wsSetBackgroundRGB(&appMPlayer.subWindow, appMPlayer.sub.R, appMPlayer.sub.G, appMPlayer.sub.B);
+    wsClearWindow(appMPlayer.subWindow);
 
- wsSetBackgroundRGB( &appMPlayer.subWindow,appMPlayer.sub.R,appMPlayer.sub.G,appMPlayer.sub.B );
- wsClearWindow( appMPlayer.subWindow );
- if ( appMPlayer.sub.Bitmap.Image ) wsConvert( &appMPlayer.subWindow,appMPlayer.sub.Bitmap.Image,appMPlayer.sub.Bitmap.ImageSize );
+    if (appMPlayer.sub.Bitmap.Image)
+        wsConvert(&appMPlayer.subWindow, appMPlayer.sub.Bitmap.Image, appMPlayer.sub.Bitmap.ImageSize);
+
+    btnModify(evSetVolume, guiIntfStruct.Volume);
+    btnModify(evSetBalance, guiIntfStruct.Balance);
+    btnModify(evSetMoviePosition, guiIntfStruct.Position);
 
- btnModify( evSetVolume,guiIntfStruct.Volume );
- btnModify( evSetBalance,guiIntfStruct.Balance );
- btnModify( evSetMoviePosition,guiIntfStruct.Position );
+    wsSetIcon(wsDisplay, appMPlayer.mainWindow.WindowID, guiIcon, guiIconMask);
+    wsSetIcon(wsDisplay, appMPlayer.subWindow.WindowID, guiIcon, guiIconMask);
+
+    guiIntfStruct.Playing = 0;
 
- wsSetIcon( wsDisplay,appMPlayer.mainWindow.WindowID,guiIcon,guiIconMask );
- wsSetIcon( wsDisplay,appMPlayer.subWindow.WindowID,guiIcon,guiIconMask );
+    if (!appMPlayer.mainDecoration)
+        wsWindowDecoration(&appMPlayer.mainWindow, 0);
 
- guiIntfStruct.Playing=0;
+    wsVisibleWindow(&appMPlayer.mainWindow, wsShowWindow);
 
- if ( !appMPlayer.mainDecoration ) wsWindowDecoration( &appMPlayer.mainWindow,0 );
-
- wsVisibleWindow( &appMPlayer.mainWindow,wsShowWindow );
 #if 0
- wsVisibleWindow( &appMPlayer.subWindow,wsShowWindow );
+    wsVisibleWindow(&appMPlayer.subWindow, wsShowWindow);
+    {
+        XEvent xev;
 
- {
-  XEvent xev;
-  do { XNextEvent( wsDisplay,&xev ); } while ( xev.type != MapNotify || xev.xmap.event != appMPlayer.subWindow.WindowID );
-  appMPlayer.subWindow.Mapped=wsMapped;
- }
+        do
+            XNextEvent(wsDisplay, &xev);
+        while (xev.type != MapNotify || xev.xmap.event != appMPlayer.subWindow.WindowID);
+
+        appMPlayer.subWindow.Mapped = wsMapped;
+    }
+
+    if (!fullscreen)
+        fullscreen = gtkLoadFullscreen;
 
- if ( !fullscreen ) fullscreen=gtkLoadFullscreen;
- if ( fullscreen )
-  {
-   mplFullScreen();
-   btnModify( evFullScreen,btnPressed );
-  }
-#else
- if ( !fullscreen ) fullscreen=gtkLoadFullscreen;
- if ( gtkShowVideoWindow )
- {
-       wsVisibleWindow( &appMPlayer.subWindow,wsShowWindow );
-       {
-        XEvent xev;
-        do { XNextEvent( wsDisplay,&xev ); } while ( xev.type != MapNotify || xev.xmap.event != appMPlayer.subWindow.WindowID );
-        appMPlayer.subWindow.Mapped=wsMapped;
-   }
-
-       if ( fullscreen )
-       {
+    if (fullscreen) {
         mplFullScreen();
-        btnModify( evFullScreen,btnPressed );
-       }
- }
- else
- {
-       if ( fullscreen )
-       {
-         wsVisibleWindow( &appMPlayer.subWindow,wsShowWindow );
-         {
-          XEvent xev;
-          do { XNextEvent( wsDisplay,&xev ); } while ( xev.type != MapNotify || xev.xmap.event != appMPlayer.subWindow.WindowID );
-          appMPlayer.subWindow.Mapped=wsMapped;
-         }
-         wsVisibleWindow( &appMPlayer.subWindow, wsShowWindow );
+        btnModify(evFullScreen, btnPressed);
+    }
+#else
+    if (!fullscreen)
+        fullscreen = gtkLoadFullscreen;
+
+    if (gtkShowVideoWindow) {
+        wsVisibleWindow(&appMPlayer.subWindow, wsShowWindow);
+        {
+            XEvent xev;
+
+            do
+                XNextEvent(wsDisplay, &xev);
+            while (xev.type != MapNotify || xev.xmap.event != appMPlayer.subWindow.WindowID);
+
+            appMPlayer.subWindow.Mapped = wsMapped;
+        }
 
-          mplFullScreen();
-          btnModify( evFullScreen,btnPressed );
-         }
- }
+        if (fullscreen) {
+            mplFullScreen();
+            btnModify(evFullScreen, btnPressed);
+        }
+    } else {
+        if (fullscreen) {
+            wsVisibleWindow(&appMPlayer.subWindow, wsShowWindow);
+            {
+                XEvent xev;
+
+                do
+                    XNextEvent(wsDisplay, &xev);
+                while (xev.type != MapNotify || xev.xmap.event != appMPlayer.subWindow.WindowID);
+
+                appMPlayer.subWindow.Mapped = wsMapped;
+            }
+            wsVisibleWindow(&appMPlayer.subWindow, wsShowWindow);
+            mplFullScreen();
+            btnModify(evFullScreen, btnPressed);
+        }
+    }
 #endif
- mplSubRender=1;
-// ---
+
+    mplSubRender = 1;
+
+    if (filename)
+        mplSetFileName(NULL, filename, STREAMTYPE_FILE);
 
- if ( filename ) mplSetFileName( NULL,filename,STREAMTYPE_FILE );
- if ( plCurrent && !filename ) mplSetFileName( plCurrent->path,plCurrent->name,STREAMTYPE_FILE );
- if ( subdata ) guiSetFilename( guiIntfStruct.Subtitlename, subdata->filename );
- guiLoadFont();
+    if (plCurrent && !filename)
+        mplSetFileName(plCurrent->path, plCurrent->name, STREAMTYPE_FILE);
+
+    if (subdata)
+        guiSetFilename(guiIntfStruct.Subtitlename, subdata->filename);
+
+    guiLoadFont();
 }
 
-void guiDone( void )
+void guiDone(void)
 {
- mplMainRender=0;
- mp_msg( MSGT_GPLAYER,MSGL_V,"[GUI] done.\n" );
+    mplMainRender = 0;
+
+    mp_msg(MSGT_GPLAYER, MSGL_V, "[GUI] done.\n");
 
- if ( gui_save_pos )
-  {
-   gui_main_pos_x=appMPlayer.mainWindow.X; gui_main_pos_y=appMPlayer.mainWindow.Y;
-   gui_sub_pos_x=appMPlayer.subWindow.X; gui_sub_pos_y=appMPlayer.subWindow.Y;
-  }
+    if (gui_save_pos) {
+        gui_main_pos_x = appMPlayer.mainWindow.X;
+        gui_main_pos_y = appMPlayer.mainWindow.Y;
+        gui_sub_pos_x  = appMPlayer.subWindow.X;
+        gui_sub_pos_y  = appMPlayer.subWindow.Y;
+    }
 
 #ifdef CONFIG_ASS
- ass_enabled = gtkASS.enabled;
- ass_use_margins = gtkASS.use_margins;
- ass_top_margin = gtkASS.top_margin;
- ass_bottom_margin = gtkASS.bottom_margin;
+    ass_enabled       = gtkASS.enabled;
+    ass_use_margins   = gtkASS.use_margins;
+    ass_top_margin    = gtkASS.top_margin;
+    ass_bottom_margin = gtkASS.bottom_margin;
 #endif
 
- cfg_write();
- wsXDone();
+    cfg_write();
+    wsXDone();
 }
 
-void guiLoadFont( void )
+void guiLoadFont(void)
 {
 #ifdef CONFIG_FREETYPE
-  load_font_ft(vo_image_width, vo_image_height, &vo_font, font_name, osd_font_scale_factor);
+    load_font_ft(vo_image_width, vo_image_height, &vo_font, font_name, osd_font_scale_factor);
 #else
- if ( vo_font )
-  {
-   int i;
-   free( vo_font->name );
-   free( vo_font->fpath );
-   for ( i=0;i<16;i++ )
-    if ( vo_font->pic_a[i] )
-     {
-      free( vo_font->pic_a[i]->bmp );
-      free( vo_font->pic_a[i]->pal );
-     }
-   for ( i=0;i<16;i++ )
-    if ( vo_font->pic_b[i] )
-     {
-      free( vo_font->pic_b[i]->bmp );
-      free( vo_font->pic_b[i]->pal );
-     }
-   free( vo_font ); vo_font=NULL;
-  }
- if ( font_name )
-  {
-   vo_font=read_font_desc( font_name,font_factor,0 );
-   if ( !vo_font ) mp_msg( MSGT_CPLAYER,MSGL_ERR,MSGTR_CantLoadFont,font_name );
-  }
-  else
-   {
-    font_name=gstrdup( get_path( "font/font.desc" ) );
-    vo_font=read_font_desc( font_name,font_factor,0 );
-    if ( !vo_font )
-     {
-      gfree( (void **)&font_name ); font_name=gstrdup(MPLAYER_DATADIR "/font/font.desc" );
-      vo_font=read_font_desc( font_name,font_factor,0 );
-     }
-   }
+    if (vo_font) {
+        int i;
+
+        free(vo_font->name);
+        free(vo_font->fpath);
+
+        for (i = 0; i < 16; i++) {
+            if (vo_font->pic_a[i]) {
+                free(vo_font->pic_a[i]->bmp);
+                free(vo_font->pic_a[i]->pal);
+            }
+        }
+
+        for (i = 0; i < 16; i++) {
+            if (vo_font->pic_b[i]) {
+                free(vo_font->pic_b[i]->bmp);
+                free(vo_font->pic_b[i]->pal);
+            }
+        }
+
+        free(vo_font);
+        vo_font = NULL;
+    }
+
+    if (font_name) {
+        vo_font = read_font_desc(font_name, font_factor, 0);
+
+        if (!vo_font)
+            mp_msg(MSGT_CPLAYER, MSGL_ERR, MSGTR_CantLoadFont, font_name);
+    } else {
+        font_name = gstrdup(get_path("font/font.desc"));
+        vo_font   = read_font_desc(font_name, font_factor, 0);
+
+        if (!vo_font) {
+            gfree((void **)&font_name);
+            font_name = gstrdup(MPLAYER_DATADIR "/font/font.desc");
+            vo_font   = read_font_desc(font_name, font_factor, 0);
+        }
+    }
 #endif
 }
 
-void guiLoadSubtitle( char * name )
+void guiLoadSubtitle(char *name)
 {
- if ( guiIntfStruct.Playing == 0 )
-  {
-   guiIntfStruct.SubtitleChanged=1; //what is this for? (mw)
-   return;
-  }
- if ( subdata )
-  {
-   mp_msg( MSGT_GPLAYER,MSGL_INFO,MSGTR_DeletingSubtitles );
-   sub_free( subdata );
-   subdata=NULL;
-   vo_sub=NULL;
-   if ( vo_osd_list )
-    {
-     int len;
-     mp_osd_obj_t * osd = vo_osd_list;
-     while ( osd )
-      {
-       if ( osd->type == OSDTYPE_SUBTITLE ) break;
-       osd=osd->next;
-      }
-     if ( osd && osd->flags&OSDFLAG_VISIBLE )
-      {
-       len=osd->stride * ( osd->bbox.y2 - osd->bbox.y1 );
-       memset( osd->bitmap_buffer,0,len );
-       memset( osd->alpha_buffer,0,len );
-      }
+    if (guiIntfStruct.Playing == 0) {
+        guiIntfStruct.SubtitleChanged = 1; // what is this for? (mw)
+        return;
     }
-  }
- if ( name )
-  {
-   mp_msg( MSGT_GPLAYER,MSGL_INFO,MSGTR_LoadingSubtitles,name );
-   subdata=sub_read_file( name, guiIntfStruct.FPS );
-   if ( !subdata ) mp_msg( MSGT_GPLAYER,MSGL_ERR,MSGTR_CantLoadSub,name );
-   sub_name = (malloc(2 * sizeof(char*))); //when mplayer will be restarted
-   sub_name[0] = strdup(name);             //sub_name[0] will be read
-   sub_name[1] = NULL;
-  }
- update_set_of_subtitles();
+
+    if (subdata) {
+        mp_msg(MSGT_GPLAYER, MSGL_INFO, MSGTR_DeletingSubtitles);
+
+        sub_free(subdata);
+        subdata = NULL;
+        vo_sub  = NULL;
+
+        if (vo_osd_list) {
+            int len;
+            mp_osd_obj_t *osd;
+
+            osd = vo_osd_list;
+
+            while (osd) {
+                if (osd->type == OSDTYPE_SUBTITLE)
+                    break;
+
+                osd = osd->next;
+            }
 
+            if (osd && (osd->flags & OSDFLAG_VISIBLE)) {
+                len = osd->stride * (osd->bbox.y2 - osd->bbox.y1);
+                memset(osd->bitmap_buffer, 0, len);
+                memset(osd->alpha_buffer, 0, len);
+            }
+        }
+    }
+
+    if (name) {
+        mp_msg(MSGT_GPLAYER, MSGL_INFO, MSGTR_LoadingSubtitles, name);
+
+        subdata = sub_read_file(name, guiIntfStruct.FPS);
+
+        if (!subdata)
+            mp_msg(MSGT_GPLAYER, MSGL_ERR, MSGTR_CantLoadSub, name);
+
+        sub_name    = (malloc(2 * sizeof(char *))); // when mplayer will be restarted
+        sub_name[0] = strdup(name);                 // sub_name[0] will be read
+        sub_name[1] = NULL;
+    }
+
+    update_set_of_subtitles();
 }
 
-static void add_vf( char * str )
+static void add_vf(char *str)
 {
- void *p;
+    void *p;
+
+    if (vf_settings) {
+        int i = 0;
+
+        while (vf_settings[i].name) {
+            if (!gstrcmp(vf_settings[i++].name, str)) {
+                i = -1;
+                break;
+            }
+        }
+
+        if (i != -1) {
+            p = realloc(vf_settings, (i + 2) * sizeof(m_obj_settings_t));
 
- if ( vf_settings )
-  {
-   int i = 0;
-   while ( vf_settings[i].name ) if ( !gstrcmp( vf_settings[i++].name,str ) ) { i=-1; break; }
-   if ( i != -1 )
-    {
-     if ( !( p=realloc( vf_settings,( i + 2 ) * sizeof( m_obj_settings_t ) ) ) ) return;
-     vf_settings=p;
-     vf_settings[i].name=strdup( str );
-     vf_settings[i].attribs = NULL;
-     vf_settings[i+1].name=NULL;
+            if (!p)
+                return;
+
+            vf_settings = p;
+            vf_settings[i].name     = strdup(str);
+            vf_settings[i].attribs  = NULL;
+            vf_settings[i + 1].name = NULL;
+        }
+    } else {
+        vf_settings = malloc(2 * sizeof(m_obj_settings_t));
+        vf_settings[0].name    = strdup(str);
+        vf_settings[0].attribs = NULL;
+        vf_settings[1].name    = NULL;
     }
-  }
- else { vf_settings=malloc( 2 * sizeof(  m_obj_settings_t ) ); vf_settings[0].name=strdup( str );vf_settings[0].attribs = NULL; vf_settings[1].name=NULL; }
 
- mp_msg( MSGT_GPLAYER,MSGL_STATUS,MSGTR_AddingVideoFilter,str );
+    mp_msg(MSGT_GPLAYER, MSGL_STATUS, MSGTR_AddingVideoFilter, str);
 }
 
-static void remove_vf( char * str )
+static void remove_vf(char *str)
 {
- int n = 0;
+    int n = 0;
+
+    if (!vf_settings)
+        return;
 
- if ( !vf_settings ) return;
+    mp_msg(MSGT_GPLAYER, MSGL_STATUS, MSGTR_RemovingVideoFilter, str);
+
+    while (vf_settings[n++].name) ;
 
- mp_msg( MSGT_GPLAYER,MSGL_STATUS,MSGTR_RemovingVideoFilter,str );
+    n--;
+
+    if (n > -1) {
+        int i = 0, m = -1;
 
- while ( vf_settings[n++].name ); n--;
- if ( n > -1 )
-  {
-   int i = 0,m = -1;
-   while ( vf_settings[i].name ) if ( !gstrcmp( vf_settings[i++].name,str ) ) { m=i - 1; break; }
-   i--;
-   if ( m > -1 )
-    {
-     if ( n == 1 ) { free( vf_settings[0].name );free( vf_settings[0].attribs ); free( vf_settings ); vf_settings=NULL; }
-     else { free( vf_settings[i].name );free( vf_settings[i].attribs ); memcpy( &vf_settings[i],&vf_settings[i + 1],( n - i ) * sizeof( m_obj_settings_t ) ); }
+        while (vf_settings[i].name) {
+            if (!gstrcmp(vf_settings[i++].name, str)) {
+                m = i - 1;
+                break;
+            }
+        }
+
+        i--;
+
+        if (m > -1) {
+            if (n == 1) {
+                free(vf_settings[0].name);
+                free(vf_settings[0].attribs);
+                free(vf_settings);
+                vf_settings = NULL;
+            } else {
+                free(vf_settings[i].name);
+                free(vf_settings[i].attribs);
+                memcpy(&vf_settings[i], &vf_settings[i + 1], (n - i) * sizeof(m_obj_settings_t));
+            }
+        }
     }
-  }
 }
 
-int guiGetEvent( int type,void * arg )
+int guiGetEvent(int type, void *arg)
 {
-  const ao_functions_t *audio_out = NULL;
-  const vo_functions_t *video_out = NULL;
-  mixer_t *mixer = NULL;
+    const ao_functions_t *audio_out = NULL;
+    const vo_functions_t *video_out = NULL;
+    mixer_t *mixer = NULL;
 
- stream_t * stream = arg;
+    stream_t *stream = arg;
+
 #ifdef CONFIG_DVDREAD
- dvd_priv_t * dvdp = arg;
+    dvd_priv_t *dvdp = arg;
 #endif
 
- if (guiIntfStruct.mpcontext) {
-   audio_out = mpctx_get_audio_out(guiIntfStruct.mpcontext);
-   video_out = mpctx_get_video_out(guiIntfStruct.mpcontext);
-   mixer = mpctx_get_mixer(guiIntfStruct.mpcontext);
- }
+    if (guiIntfStruct.mpcontext) {
+        audio_out = mpctx_get_audio_out(guiIntfStruct.mpcontext);
+        video_out = mpctx_get_video_out(guiIntfStruct.mpcontext);
+        mixer     = mpctx_get_mixer(guiIntfStruct.mpcontext);
+    }
 
- switch ( type )
-  {
-   case guiXEvent:
-        guiIntfStruct.event_struct=arg;
-        wsEvents( wsDisplay,arg,NULL );
+    switch (type) {
+    case guiXEvent:
+        guiIntfStruct.event_struct = arg;
+        wsEvents(wsDisplay, arg, NULL);
         gtkEventHandling();
         break;
-   case guiCEvent:
-        switch ( (int)arg )
-	 {
-	  case guiSetPlay:
-	       guiIntfStruct.Playing=1;
-//	       if ( !gtkShowVideoWindow ) wsVisibleWindow( &appMPlayer.subWindow,wsHideWindow );
-	       break;
-	  case guiSetStop:
-	       guiIntfStruct.Playing=0;
-//	       if ( !gtkShowVideoWindow ) wsVisibleWindow( &appMPlayer.subWindow,wsHideWindow );
-	       break;
-          case guiSetPause: guiIntfStruct.Playing=2; break;
-	 }
-	mplState();
+
+    case guiCEvent:
+
+        switch ((int)arg) {
+        case guiSetPlay:
+            guiIntfStruct.Playing = 1;
+// if ( !gtkShowVideoWindow ) wsVisibleWindow( &appMPlayer.subWindow,wsHideWindow );
+            break;
+
+        case guiSetStop:
+            guiIntfStruct.Playing = 0;
+// if ( !gtkShowVideoWindow ) wsVisibleWindow( &appMPlayer.subWindow,wsHideWindow );
+            break;
+
+        case guiSetPause:
+            guiIntfStruct.Playing = 2;
+            break;
+        }
+
+        mplState();
         break;
-   case guiSetState:
-	mplState();
+
+    case guiSetState:
+        mplState();
+        break;
+
+    case guiSetFileName:
+        if (arg)
+            guiSetFilename(guiIntfStruct.Filename, arg);
         break;
-   case guiSetFileName:
-        if ( arg ) guiSetFilename( guiIntfStruct.Filename,arg );
+
+    case guiSetAudioOnly:
+
+        guiIntfStruct.AudioOnly = (int)arg;
+
+        if ((int)arg) {
+            guiIntfStruct.NoWindow = True;
+            wsVisibleWindow(&appMPlayer.subWindow, wsHideWindow);
+        } else
+            wsVisibleWindow(&appMPlayer.subWindow, wsShowWindow);
+
         break;
-   case guiSetAudioOnly:
-	guiIntfStruct.AudioOnly=(int)arg;
-	if ( (int)arg ) { guiIntfStruct.NoWindow=True; wsVisibleWindow( &appMPlayer.subWindow,wsHideWindow ); }
-	  else wsVisibleWindow( &appMPlayer.subWindow,wsShowWindow );
-	break;
-   case guiSetContext:
-	guiIntfStruct.mpcontext=arg;
-   case guiSetDemuxer:
-	guiIntfStruct.demuxer=arg;
-	break;
-   case guiSetAfilter:
-	guiIntfStruct.afilter=arg;
-	break;
-   case guiSetShVideo:
-	 {
-	  if ( !appMPlayer.subWindow.isFullScreen )
-	   {
-	    wsResizeWindow( &appMPlayer.subWindow,vo_dwidth,vo_dheight );
-            wsMoveWindow( &appMPlayer.subWindow,True,appMPlayer.sub.x,appMPlayer.sub.y );
-	   }
-	  guiIntfStruct.MovieWidth=vo_dwidth;
-	  guiIntfStruct.MovieHeight=vo_dheight;
-          if (guiWinID>=0)
-            wsMoveWindow( &appMPlayer.mainWindow,0,0, vo_dheight);
-          WinID = appMPlayer.subWindow.WindowID;
-         }
-	break;
+
+    case guiSetContext:
+        guiIntfStruct.mpcontext = arg;
+    // NOTE TO MYSELF: is break missing?
+
+    case guiSetDemuxer:
+        guiIntfStruct.demuxer = arg;
+        break;
+
+    case guiSetAfilter:
+        guiIntfStruct.afilter = arg;
+        break;
+
+    case guiSetShVideo:
+
+        if (!appMPlayer.subWindow.isFullScreen) {
+            wsResizeWindow(&appMPlayer.subWindow, vo_dwidth, vo_dheight);
+            wsMoveWindow(&appMPlayer.subWindow, True, appMPlayer.sub.x, appMPlayer.sub.y);
+        }
+
+        guiIntfStruct.MovieWidth  = vo_dwidth;
+        guiIntfStruct.MovieHeight = vo_dheight;
+
+        if (guiWinID >= 0)
+            wsMoveWindow(&appMPlayer.mainWindow, 0, 0, vo_dheight);
+
+        WinID = appMPlayer.subWindow.WindowID;
+        break;
+
 #ifdef CONFIG_DVDREAD
-   case guiSetDVD:
-        guiIntfStruct.DVD.titles=dvdp->vmg_file->tt_srpt->nr_of_srpts;
-        guiIntfStruct.DVD.chapters=dvdp->vmg_file->tt_srpt->title[dvd_title].nr_of_ptts;
-        guiIntfStruct.DVD.angles=dvdp->vmg_file->tt_srpt->title[dvd_title].nr_of_angles;
-        guiIntfStruct.DVD.nr_of_audio_channels=dvdp->nr_of_channels;
-        memcpy( guiIntfStruct.DVD.audio_streams,dvdp->audio_streams,sizeof( dvdp->audio_streams ) );
-        guiIntfStruct.DVD.nr_of_subtitles=dvdp->nr_of_subtitles;
-        memcpy( guiIntfStruct.DVD.subtitles,dvdp->subtitles,sizeof( dvdp->subtitles ) );
-        guiIntfStruct.DVD.current_title=dvd_title + 1;
-        guiIntfStruct.DVD.current_chapter=dvd_chapter + 1;
-        guiIntfStruct.DVD.current_angle=dvd_angle + 1;
-        guiIntfStruct.Track=dvd_title + 1;
+    case guiSetDVD:
+        guiIntfStruct.DVD.titles   = dvdp->vmg_file->tt_srpt->nr_of_srpts;
+        guiIntfStruct.DVD.chapters = dvdp->vmg_file->tt_srpt->title[dvd_title].nr_of_ptts;
+        guiIntfStruct.DVD.angles   = dvdp->vmg_file->tt_srpt->title[dvd_title].nr_of_angles;
+        guiIntfStruct.DVD.nr_of_audio_channels = dvdp->nr_of_channels;
+        memcpy(guiIntfStruct.DVD.audio_streams, dvdp->audio_streams, sizeof(dvdp->audio_streams));
+        guiIntfStruct.DVD.nr_of_subtitles = dvdp->nr_of_subtitles;
+        memcpy(guiIntfStruct.DVD.subtitles, dvdp->subtitles, sizeof(dvdp->subtitles));
+        guiIntfStruct.DVD.current_title   = dvd_title + 1;
+        guiIntfStruct.DVD.current_chapter = dvd_chapter + 1;
+        guiIntfStruct.DVD.current_angle   = dvd_angle + 1;
+        guiIntfStruct.Track = dvd_title + 1;
         break;
 #endif
-   case guiSetStream:
-	guiIntfStruct.StreamType=stream->type;
-	switch( stream->type )
-	 {
+
+    case guiSetStream:
+
+        guiIntfStruct.StreamType = stream->type;
+
+        switch (stream->type) {
 #ifdef CONFIG_DVDREAD
-	  case STREAMTYPE_DVD:
-	       guiGetEvent( guiSetDVD,(char *)stream->priv );
-	       break;
+        case STREAMTYPE_DVD:
+            guiGetEvent(guiSetDVD, (char *)stream->priv);
+            break;
 #endif
+
 #ifdef CONFIG_VCD
-	  case STREAMTYPE_VCD:
-	       {
-	        int i;
+        case STREAMTYPE_VCD:
+        {
+            int i;
+
+            if (!stream->priv) {
+                guiIntfStruct.VCDTracks = 0;
+                break;
+            }
 
-		if (!stream->priv)
-		{
-		    guiIntfStruct.VCDTracks=0;
-		    break;
-		}
-		for ( i=1;i < 100;i++ )
-		  if ( vcd_seek_to_track( stream->priv,i ) < 0 ) break;
-		vcd_seek_to_track( stream->priv,vcd_track );
-		guiIntfStruct.VCDTracks=--i;
-	        break;
-	       }
+            for (i = 1; i < 100; i++)
+                if (vcd_seek_to_track(stream->priv, i) < 0)
+                    break;
+
+            vcd_seek_to_track(stream->priv, vcd_track);
+            guiIntfStruct.VCDTracks = --i;
+
+            break;
+        }
 #endif
-	  default: break;
-	 }
-	break;
-   case guiIEvent:
-        mp_msg( MSGT_GPLAYER,MSGL_V,"cmd: %d\n",(int)arg );
-	switch( (int)arg )
-	 {
-          case MP_CMD_QUIT:
-	       mplEventHandling( evExit,0 );
-	       break;
-	  case MP_CMD_VO_FULLSCREEN:
-	       mplEventHandling( evFullScreen,0 );
-	       break;
-	 }
-	break;
-   case guiReDraw:
-	mplEventHandling( evRedraw,0 );
-	break;
-   case guiSetVolume:
-        if ( audio_out )
-	{
-	 float l,r;
-	 mixer_getvolume( mixer,&l,&r );
-	 guiIntfStruct.Volume=(r>l?r:l);
-	 if ( r != l ) guiIntfStruct.Balance=( ( r - l ) + 100 ) * 0.5f;
-	   else guiIntfStruct.Balance=50.0f;
-	 btnModify( evSetVolume,guiIntfStruct.Volume );
-	 btnModify( evSetBalance,guiIntfStruct.Balance );
-	}
-	break;
-   case guiSetFileFormat:
-        guiIntfStruct.FileFormat=(int)arg;
-	break;
-   case guiSetValues:
-// -- video
-	guiIntfStruct.sh_video=arg;
-	if ( arg )
-	 {
-	  sh_video_t * sh = arg;
-	  guiIntfStruct.FPS=sh->fps;
-	 }
+
+        default:
+            break;
+        }
+
+        break;
+
+    case guiIEvent:
+
+        mp_msg(MSGT_GPLAYER, MSGL_V, "cmd: %d\n", (int)arg);
+
+        switch ((int)arg) {
+        case MP_CMD_QUIT:
+            mplEventHandling(evExit, 0);
+            break;
 
-	if ( guiIntfStruct.NoWindow ) wsVisibleWindow( &appMPlayer.subWindow,wsHideWindow );
+        case MP_CMD_VO_FULLSCREEN:
+            mplEventHandling(evFullScreen, 0);
+            break;
+        }
 
-	if ( guiIntfStruct.StreamType == STREAMTYPE_STREAM ) btnSet( evSetMoviePosition,btnDisabled );
-	 else btnSet( evSetMoviePosition,btnReleased );
+        break;
 
-// -- audio
-        if ( audio_out )
-	{
-	 float l,r;
-	 mixer_getvolume( mixer,&l,&r );
-	 guiIntfStruct.Volume=(r>l?r:l);
-	 if ( r != l ) guiIntfStruct.Balance=( ( r - l ) + 100 ) * 0.5f;
-	   else guiIntfStruct.Balance=50.0f;
-	 btnModify( evSetVolume,guiIntfStruct.Volume );
-	 btnModify( evSetBalance,guiIntfStruct.Balance );
-	}
+    case guiReDraw:
+        mplEventHandling(evRedraw, 0);
+        break;
+
+    case guiSetVolume:
+        if (audio_out) {
+            float l, r;
+
+            mixer_getvolume(mixer, &l, &r);
+            guiIntfStruct.Volume = (r > l ? r : l);
 
-	if ( gtkEnableAudioEqualizer )
-	 {
-	  equalizer_t eq;
-	  int i,j;
-	  for ( i=0;i<6;i++ )
-	    for ( j=0;j<10;j++ )
-	     {
-	      eq.channel=i; eq.band=j; eq.gain=gtkEquChannels[i][j];
-	      gtkSet( gtkSetEqualizer,0,&eq );
-	     }
-	 }
-// -- subtitle
-#ifdef CONFIG_DXR3
-	if ( video_driver_list && !gstrcmp( video_driver_list[0],"dxr3" ) && guiIntfStruct.FileFormat != DEMUXER_TYPE_MPEG_PS && !gtkVfLAVC )
-	 {
-	  gtkMessageBox( GTK_MB_FATAL,MSGTR_NEEDLAVC );
-	  guiIntfStruct.Playing=0;
-	  return True;
-	 }
-#endif
-	break;
-   case guiSetDefaults:
-//        if ( guiIntfStruct.Playing == 1 && guiIntfStruct.FilenameChanged )
-	if ( guiIntfStruct.FilenameChanged )
-         {
-          audio_id=-1;
-	  video_id=-1;
-	  dvdsub_id=-1;
-	  vobsub_id=-1;
-          stream_cache_size=-1;
-	  autosync=0;
-	  vcd_track=0;
-	  dvd_title=0;
-	  force_fps=0;
-	 }
-	guiIntfStruct.demuxer=NULL;
-	guiIntfStruct.sh_video=NULL;
-	wsPostRedisplay( &appMPlayer.subWindow );
-	break;
-   case guiSetParameters:
-        guiGetEvent( guiSetDefaults,NULL );
-        switch ( guiIntfStruct.StreamType )
-         {
-	  case STREAMTYPE_PLAYLIST:
-	       break;
-#ifdef CONFIG_VCD
-	  case STREAMTYPE_VCD:
-	       {
-	        char tmp[512];
-		sprintf( tmp,"vcd://%d",guiIntfStruct.Track + 1 );
-		guiSetFilename( guiIntfStruct.Filename,tmp );
-	       }
-	       break;
-#endif
-#ifdef CONFIG_DVDREAD
- 	  case STREAMTYPE_DVD:
-	       {
-	        char tmp[512];
-		sprintf( tmp,"dvd://%d",guiIntfStruct.Title );
-		guiSetFilename( guiIntfStruct.Filename,tmp );
-	       }
-	       dvd_chapter=guiIntfStruct.Chapter;
-	       dvd_angle=guiIntfStruct.Angle;
-	       break;
-#endif
-	 }
-	//if ( guiIntfStruct.StreamType != STREAMTYPE_PLAYLIST ) // Does not make problems anymore!
-	 {
-	  if ( guiIntfStruct.Filename ) filename=gstrdup( guiIntfStruct.Filename );
-	   else if ( filename ) guiSetFilename( guiIntfStruct.Filename,filename );
-	 }
-// --- video opts
+            if (r != l)
+                guiIntfStruct.Balance = ((r - l) + 100) * 0.5f;
+            else
+                guiIntfStruct.Balance = 50.0f;
+
+            btnModify(evSetVolume, guiIntfStruct.Volume);
+            btnModify(evSetBalance, guiIntfStruct.Balance);
+        }
+        break;
+
+    case guiSetFileFormat:
+        guiIntfStruct.FileFormat = (int)arg;
+        break;
+
+    case guiSetValues:
+
+        // video
+
+        guiIntfStruct.sh_video = arg;
+
+        if (arg) {
+            sh_video_t *sh = arg;
+            guiIntfStruct.FPS = sh->fps;
+        }
+
+        if (guiIntfStruct.NoWindow)
+            wsVisibleWindow(&appMPlayer.subWindow, wsHideWindow);
+
+        if (guiIntfStruct.StreamType == STREAMTYPE_STREAM)
+            btnSet(evSetMoviePosition, btnDisabled);
+        else
+            btnSet(evSetMoviePosition, btnReleased);
 
-       if ( !video_driver_list )
-	{
-         int i = 0;
-           while ( video_out_drivers[i++] )
-	    if ( video_out_drivers[i - 1]->control( VOCTRL_GUISUPPORT,NULL ) == VO_TRUE )
-	     {
-	      gaddlist( &video_driver_list,(char *)video_out_drivers[i - 1]->info->short_name );
-	      break;
-	     }
-	 }
+        // audio
+
+        if (audio_out) {
+            float l, r;
+
+            mixer_getvolume(mixer, &l, &r);
+            guiIntfStruct.Volume = (r > l ? r : l);
+
+            if (r != l)
+                guiIntfStruct.Balance = ((r - l) + 100) * 0.5f;
+            else
+                guiIntfStruct.Balance = 50.0f;
 
-	if ( !video_driver_list && !video_driver_list[0] ) { gtkMessageBox( GTK_MB_FATAL,MSGTR_IDFGCVD ); exit_player(EXIT_ERROR); }
+            btnModify(evSetVolume, guiIntfStruct.Volume);
+            btnModify(evSetBalance, guiIntfStruct.Balance);
+        }
+
+        if (gtkEnableAudioEqualizer) {
+            equalizer_t eq;
+            int i, j;
 
-	{
-	 int i = 0;
-         guiIntfStruct.NoWindow=False;
-         while ( video_out_drivers[i++] )
-	  if ( video_out_drivers[i - 1]->control( VOCTRL_GUISUPPORT,NULL ) == VO_TRUE )
-	   {
-	    if  ( ( video_driver_list && !gstrcmp( video_driver_list[0],(char *)video_out_drivers[i - 1]->info->short_name ) )&&( video_out_drivers[i - 1]->control( VOCTRL_GUI_NOWINDOW,NULL ) == VO_TRUE ) )
-	      { guiIntfStruct.NoWindow=True; break; }
-	   }
-	}
+            for (i = 0; i < 6; i++) {
+                for (j = 0; j < 10; j++) {
+                    eq.channel = i;
+                    eq.band    = j;
+                    eq.gain    = gtkEquChannels[i][j];
+                    gtkSet(gtkSetEqualizer, 0, &eq);
+                }
+            }
+        }
+
+        // subtitle
 
 #ifdef CONFIG_DXR3
-	remove_vf( "lavc" );
-	if ( video_driver_list && !gstrcmp( video_driver_list[0],"dxr3" ) )
-	 {
-	  if ( ( guiIntfStruct.StreamType != STREAMTYPE_DVD)&&( guiIntfStruct.StreamType != STREAMTYPE_VCD ) )
-	   {
-	    if ( gtkVfLAVC ) add_vf( "lavc" );
-	   }
-	 }
+        if (video_driver_list && !gstrcmp(video_driver_list[0], "dxr3") && (guiIntfStruct.FileFormat != DEMUXER_TYPE_MPEG_PS) && !gtkVfLAVC) {
+            gtkMessageBox(GTK_MB_FATAL, MSGTR_NEEDLAVC);
+            guiIntfStruct.Playing = 0;
+            return True;
+        }
 #endif
-// ---
-	if ( gtkVfPP ) add_vf( "pp" );
-	 else remove_vf( "pp" );
+
+        break;
+
+    case guiSetDefaults:
+
+// if ( guiIntfStruct.Playing == 1 && guiIntfStruct.FilenameChanged )
+        if (guiIntfStruct.FilenameChanged) {
+            audio_id  = -1;
+            video_id  = -1;
+            dvdsub_id = -1;
+            vobsub_id = -1;
+            stream_cache_size = -1;
+            autosync  = 0;
+            vcd_track = 0;
+            dvd_title = 0;
+            force_fps = 0;
+        }
+
+        guiIntfStruct.demuxer  = NULL;
+        guiIntfStruct.sh_video = NULL;
+        wsPostRedisplay(&appMPlayer.subWindow);
+
+        break;
+
+    case guiSetParameters:
+
+        guiGetEvent(guiSetDefaults, NULL);
+
+        switch (guiIntfStruct.StreamType) {
+        case STREAMTYPE_PLAYLIST:
+            break;
+
+#ifdef CONFIG_VCD
+        case STREAMTYPE_VCD:
+        {
+            char tmp[512];
+
+            sprintf(tmp, "vcd://%d", guiIntfStruct.Track + 1);
+            guiSetFilename(guiIntfStruct.Filename, tmp);
+        }
+        break;
+#endif
+
+#ifdef CONFIG_DVDREAD
+        case STREAMTYPE_DVD:
+        {
+            char tmp[512];
+
+            sprintf(tmp, "dvd://%d", guiIntfStruct.Title);
+            guiSetFilename(guiIntfStruct.Filename, tmp);
+        }
+
+            dvd_chapter = guiIntfStruct.Chapter;
+            dvd_angle   = guiIntfStruct.Angle;
+
+            break;
+#endif
+        }
+
+// if ( guiIntfStruct.StreamType != STREAMTYPE_PLAYLIST ) // Does not make problems anymore!
+        {
+            if (guiIntfStruct.Filename)
+                filename = gstrdup(guiIntfStruct.Filename);
+            else if (filename)
+                guiSetFilename(guiIntfStruct.Filename, filename);
+        }
+
+        // video opts
+
+        if (!video_driver_list) {
+            int i = 0;
 
-// --- audio opts
-//	if ( ao_plugin_cfg.plugin_list ) { free( ao_plugin_cfg.plugin_list ); ao_plugin_cfg.plugin_list=NULL; }
-	if (gtkAONorm)
-	  greplace(&af_cfg.list, "volnorm", "volnorm");
-	if (gtkEnableAudioEqualizer)
-	  greplace(&af_cfg.list, "equalizer", "equalizer");
-	if ( gtkAOExtraStereo )
-	 {
-	  char *name = malloc(12 + 20 + 1);
-	  snprintf(name, 12 + 20, "extrastereo=%f", gtkAOExtraStereoMul);
-	  name[12 + 20] = 0;
-	  greplace(&af_cfg.list, "extrastereo", name);
-	  free(name);
-	 }
+            while (video_out_drivers[i++]) {
+                if (video_out_drivers[i - 1]->control(VOCTRL_GUISUPPORT, NULL) == VO_TRUE) {
+                    gaddlist(&video_driver_list, (char *)video_out_drivers[i - 1]->info->short_name);
+                    break;
+                }
+            }
+        }
+
+        if (!video_driver_list && !video_driver_list[0]) {
+            gtkMessageBox(GTK_MB_FATAL, MSGTR_IDFGCVD);
+            exit_player(EXIT_ERROR);
+        }
+
+        {
+            int i = 0;
+
+            guiIntfStruct.NoWindow = False;
+
+            while (video_out_drivers[i++]) {
+                if (video_out_drivers[i - 1]->control(VOCTRL_GUISUPPORT, NULL) == VO_TRUE) {
+                    if ((video_driver_list && !gstrcmp(video_driver_list[0], (char *)video_out_drivers[i - 1]->info->short_name)) && (video_out_drivers[i - 1]->control(VOCTRL_GUI_NOWINDOW, NULL) == VO_TRUE)) {
+                        guiIntfStruct.NoWindow = True;
+                        break;
+                    }
+                }
+            }
+        }
+
+#ifdef CONFIG_DXR3
+        remove_vf("lavc");
+
+        if (video_driver_list && !gstrcmp(video_driver_list[0], "dxr3"))
+            if (guiIntfStruct.StreamType != STREAMTYPE_DVD && guiIntfStruct.StreamType != STREAMTYPE_VCD)
+                if (gtkVfLAVC)
+                    add_vf("lavc");
+#endif
+
+        if (gtkVfPP)
+            add_vf("pp");
+        else
+            remove_vf("pp");
+
+        // audio opts
+
+// if ( ao_plugin_cfg.plugin_list ) { free( ao_plugin_cfg.plugin_list ); ao_plugin_cfg.plugin_list=NULL; }
+        if (gtkAONorm)
+            greplace(&af_cfg.list, "volnorm", "volnorm");
+
+        if (gtkEnableAudioEqualizer)
+            greplace(&af_cfg.list, "equalizer", "equalizer");
+
+        if (gtkAOExtraStereo) {
+            char *name;
+
+            name = malloc(12 + 20 + 1);
+            snprintf(name, 12 + 20, "extrastereo=%f", gtkAOExtraStereoMul);
+            name[12 + 20] = 0;
+            greplace(&af_cfg.list, "extrastereo", name);
+            free(name);
+        }
+
 #ifdef CONFIG_OSS_AUDIO
-	if ( audio_driver_list && !gstrncmp( audio_driver_list[0],"oss",3 ) )
-	 {
-	  char *tmp;
-	  mixer_device = gtkAOOSSMixer;
-	  mixer_channel = gtkAOOSSMixerChannel;
-	  if (gtkAOOSSDevice) {
-	  tmp = calloc( 1,strlen( gtkAOOSSDevice ) + 7 );
-	  sprintf( tmp,"oss:%s",gtkAOOSSDevice );
-	  } else
-	    tmp = strdup("oss");
-	  gaddlist( &audio_driver_list,tmp );
-	  free(tmp);
-	 }
+        if (audio_driver_list && !gstrncmp(audio_driver_list[0], "oss", 3)) {
+            char *tmp;
+
+            mixer_device  = gtkAOOSSMixer;
+            mixer_channel = gtkAOOSSMixerChannel;
+
+            if (gtkAOOSSDevice) {
+                tmp = calloc(1, strlen(gtkAOOSSDevice) + 7);
+                sprintf(tmp, "oss:%s", gtkAOOSSDevice);
+            } else
+                tmp = strdup("oss");
+
+            gaddlist(&audio_driver_list, tmp);
+            free(tmp);
+        }
 #endif
+
 #ifdef CONFIG_ALSA
-	if ( audio_driver_list && !gstrncmp( audio_driver_list[0],"alsa",4 ) )
-	 {
-	  char *tmp;
-	  mixer_device = gtkAOALSAMixer;
-	  mixer_channel = gtkAOALSAMixerChannel;
-	  if (gtkAOALSADevice) {
-	    tmp = calloc( 1,strlen( gtkAOALSADevice ) + 14 );
-	    sprintf( tmp,"alsa:device=%s",gtkAOALSADevice );
-	  } else
-	    tmp = strdup("alsa");
-	  gaddlist( &audio_driver_list,tmp );
-	  free(tmp);
-	 }
+        if (audio_driver_list && !gstrncmp(audio_driver_list[0], "alsa", 4)) {
+            char *tmp;
+
+            mixer_device  = gtkAOALSAMixer;
+            mixer_channel = gtkAOALSAMixerChannel;
+
+            if (gtkAOALSADevice) {
+                tmp = calloc(1, strlen(gtkAOALSADevice) + 14);
+                sprintf(tmp, "alsa:device=%s", gtkAOALSADevice);
+            } else
+                tmp = strdup("alsa");
+
+            gaddlist(&audio_driver_list, tmp);
+            free(tmp);
+        }
 #endif
+
 #ifdef CONFIG_SDL
-	if ( audio_driver_list && !gstrncmp( audio_driver_list[0],"sdl",3 ) )
-	 {
-	  char *tmp;
-	  if (gtkAOSDLDriver) {
-	  tmp = calloc( 1,strlen( gtkAOSDLDriver ) + 10 );
-	  sprintf( tmp,"sdl:%s",gtkAOSDLDriver );
-	  } else
-	    tmp = strdup("sdl");
-	  gaddlist( &audio_driver_list,tmp );
-	  free(tmp);
-	 }
+        if (audio_driver_list && !gstrncmp(audio_driver_list[0], "sdl", 3)) {
+            char *tmp;
+
+            if (gtkAOSDLDriver) {
+                tmp = calloc(1, strlen(gtkAOSDLDriver) + 10);
+                sprintf(tmp, "sdl:%s", gtkAOSDLDriver);
+            } else
+                tmp = strdup("sdl");
+
+            gaddlist(&audio_driver_list, tmp);
+            free(tmp);
+        }
 #endif
+
 #ifdef CONFIG_ESD
-	if ( audio_driver_list && !gstrncmp( audio_driver_list[0],"esd",3 ) )
-	 {
-	  char *tmp;
-	  if (gtkAOESDDevice) {
-	  tmp = calloc( 1,strlen( gtkAOESDDevice ) + 10 );
-	  sprintf( tmp,"esd:%s",gtkAOESDDevice );
-	  } else
-	    tmp = strdup("esd");
-	  gaddlist( &audio_driver_list,tmp );
-	  free(tmp);
-	 }
+        if (audio_driver_list && !gstrncmp(audio_driver_list[0], "esd", 3)) {
+            char *tmp;
+
+            if (gtkAOESDDevice) {
+                tmp = calloc(1, strlen(gtkAOESDDevice) + 10);
+                sprintf(tmp, "esd:%s", gtkAOESDDevice);
+            } else
+                tmp = strdup("esd");
+
+            gaddlist(&audio_driver_list, tmp);
+            free(tmp);
+        }
 #endif
-// -- subtitle
-	//subdata->filename=gstrdup( guiIntfStruct.Subtitlename );
-	stream_dump_type=0;
-	if ( gtkSubDumpMPSub ) stream_dump_type=4;
-	if ( gtkSubDumpSrt ) stream_dump_type=6;
-	gtkSubDumpMPSub=gtkSubDumpSrt=0;
+
+        // subtitle
+
+// subdata->filename=gstrdup( guiIntfStruct.Subtitlename );
+        stream_dump_type = 0;
+
+        if (gtkSubDumpMPSub)
+            stream_dump_type = 4;
+
+        if (gtkSubDumpSrt)
+            stream_dump_type = 6;
+
+        gtkSubDumpMPSub = gtkSubDumpSrt = 0;
         guiLoadFont();
 
-// --- misc
-	if ( gtkCacheOn ) stream_cache_size=gtkCacheSize;
-	if ( gtkAutoSyncOn ) autosync=gtkAutoSync;
+        // misc
+
+        if (gtkCacheOn)
+            stream_cache_size = gtkCacheSize;
+
+        if (gtkAutoSyncOn)
+            autosync = gtkAutoSync;
 
-        if ( guiIntfStruct.AudioFile ) audio_stream=gstrdup( guiIntfStruct.AudioFile );
-	  else if ( guiIntfStruct.FilenameChanged ) gfree( (void**)&audio_stream );
-	  //audio_stream=NULL;
+        if (guiIntfStruct.AudioFile)
+            audio_stream = gstrdup(guiIntfStruct.AudioFile);
+        else if (guiIntfStruct.FilenameChanged)
+            gfree((void **)&audio_stream);
 
-        guiIntfStruct.DiskChanged=0;
-        guiIntfStruct.FilenameChanged=0;
-        guiIntfStruct.NewPlay=0;
+// audio_stream = NULL;
+
+        guiIntfStruct.DiskChanged     = 0;
+        guiIntfStruct.FilenameChanged = 0;
+        guiIntfStruct.NewPlay = 0;
 
 #ifdef CONFIG_ASS
-        ass_enabled = gtkASS.enabled;
-        ass_use_margins = gtkASS.use_margins;
-        ass_top_margin = gtkASS.top_margin;
+        ass_enabled       = gtkASS.enabled;
+        ass_use_margins   = gtkASS.use_margins;
+        ass_top_margin    = gtkASS.top_margin;
         ass_bottom_margin = gtkASS.bottom_margin;
 #endif
 
-	break;
-  }
- return False;
+        break;
+    }
+
+    return False;
 }
 
-void guiEventHandling( void )
+void guiEventHandling(void)
 {
- if ( !guiIntfStruct.Playing || guiIntfStruct.NoWindow ) wsHandleEvents();
- gtkEventHandling();
+    if (!guiIntfStruct.Playing || guiIntfStruct.NoWindow)
+        wsHandleEvents();
+
+    gtkEventHandling();
 }
 
 // ---
-
-float gtkEquChannels[6][10];
+#if defined(MP_DEBUG) && 0
+void list(void)
+{
+    plItem *next = plList;
 
-plItem * plCurrent = NULL;
-plItem * plList = NULL;
-plItem * plLastPlayed = NULL;
-
-URLItem *URLList = NULL;
-
-char    *fsHistory[fsPersistant_MaxPos] = { NULL,NULL,NULL,NULL,NULL };
+    printf("--- list ---\n");
 
-#if defined( MP_DEBUG ) && 0
-void list( void )
-{
- plItem * next = plList;
- printf( "--- list ---\n" );
- while( next || next->next )
-  {
-   printf( "item: %s/%s\n",next->path,next->name );
-   if ( next->next ) next=next->next; else break;
-  }
- printf( "--- end of list ---\n" );
+    while (next || next->next) {
+        printf("item: %s/%s\n", next->path, next->name);
+
+        if (next->next)
+            next = next->next;
+        else
+            break;
+    }
+
+    printf("--- end of list ---\n");
 }
 #else
 #define list();
 #endif
 
-void * gtkSet( int cmd,float fparam, void * vparam )
+void *gtkSet(int cmd, float fparam, void *vparam)
 {
- equalizer_t * eq = (equalizer_t *)vparam;
- plItem      * item = (plItem *)vparam;
+    equalizer_t *eq   = (equalizer_t *)vparam;
+    plItem *item      = (plItem *)vparam;
+    URLItem *url_item = (URLItem *)vparam;
+    int is_added      = True;
 
- URLItem     * url_item = (URLItem *)vparam;
- int           is_added = True;
+    switch (cmd) {
+    // handle playlist
+
+    // add item to playlist
+    case gtkAddPlItem:
 
- switch ( cmd )
-  {
-// --- handle playlist
-   case gtkAddPlItem: // add item to playlist
-	if ( plList )
-	 {
-	  plItem * next = plList;
-	  while ( next->next ) { /*printf( "%s\n",next->name );*/ next=next->next; }
-	  next->next=item; item->prev=next;
-	 } else { item->prev=item->next=NULL; plCurrent=plList=item; }
+        if (plList) {
+            plItem *next = plList;
+
+            while (next->next)
+// {
+// printf( "%s\n",next->name );
+                next = next->next;
+// }
+
+            next->next = item;
+            item->prev = next;
+        } else {
+            item->prev = item->next = NULL;
+            plCurrent  = plList = item;
+        }
+
         list();
         return NULL;
-   case gtkInsertPlItem: // add item into playlist after current
-	if ( plCurrent )
-	 {
-	  plItem * curr = plCurrent;
-	  item->next=curr->next;
-	  if (item->next)
-	    item->next->prev=item;
-	  item->prev=curr;
-	  curr->next=item;
-	  plCurrent=plCurrent->next;
-	  return plCurrent;
-	 }
-	 else
-	   return gtkSet(gtkAddPlItem,0,(void*)item);
+
+    // add item into playlist after current
+    case gtkInsertPlItem:
+        if (plCurrent) {
+            plItem *curr = plCurrent;
+            item->next = curr->next;
+
+            if (item->next)
+                item->next->prev = item;
+
+            item->prev = curr;
+            curr->next = item;
+            plCurrent  = plCurrent->next;
+
+            return plCurrent;
+        } else
+            return gtkSet(gtkAddPlItem, 0, (void *)item);
+        return NULL;   // NOTE TO MYSELF: remove this
+
+    // get current item from playlist
+    case gtkGetNextPlItem:
+        if (plCurrent && plCurrent->next) {
+            plCurrent = plCurrent->next;
+// if (!plCurrent && plList)
+// {
+// plItem *next = plList;
+//
+// while (next->next)
+// {
+// if (!next->next) break;
+// next = next->next;
+// }
+//
+// plCurrent = next;
+// }
+            return plCurrent;
+        }
         return NULL;
-   case gtkGetNextPlItem: // get current item from playlist
-	if ( plCurrent && plCurrent->next)
-	 {
-	  plCurrent=plCurrent->next;
-	  /*if ( !plCurrent && plList )
-	   {
-	    plItem * next = plList;
-	    while ( next->next ) { if ( !next->next ) break; next=next->next; }
-	    plCurrent=next;
-	   }*/
-	  return plCurrent;
-	 }
+
+    case gtkGetPrevPlItem:
+        if (plCurrent && plCurrent->prev) {
+            plCurrent = plCurrent->prev;
+// if ( !plCurrent && plList ) plCurrent=plList;
+            return plCurrent;
+        }
         return NULL;
-   case gtkGetPrevPlItem:
-	if ( plCurrent && plCurrent->prev)
-	 {
-	  plCurrent=plCurrent->prev;
-	  //if ( !plCurrent && plList ) plCurrent=plList;
-	  return plCurrent;
-	 }
-	return NULL;
-   case gtkSetCurrPlItem: // set current item
-	plCurrent=item;
+
+    // set current item
+    case gtkSetCurrPlItem:
+        plCurrent = item;
+        return plCurrent;
+
+    // get current item
+    case gtkGetCurrPlItem:
         return plCurrent;
-   case gtkGetCurrPlItem: // get current item
-        return plCurrent;
-   case gtkDelCurrPlItem: // delete current item
-	{
-	 plItem * curr = plCurrent;
+
+    // delete current item
+    case gtkDelCurrPlItem:
+    {
+        plItem *curr = plCurrent;
+
+        if (!curr)
+            return NULL;
 
-	 if (!curr)
-	   return NULL;
-	 if (curr->prev)
-	   curr->prev->next=curr->next;
-	 if (curr->next)
-	   curr->next->prev=curr->prev;
-	 if (curr==plList)
-	   plList=curr->next;
-	 plCurrent=curr->next;
-	 // Free it
-	 free( curr->path );
-	 free( curr->name );
-	 free( curr );
-        }
-	mplCurr(); // Instead of using mplNext && mplPrev
+        if (curr->prev)
+            curr->prev->next = curr->next;
+        if (curr->next)
+            curr->next->prev = curr->prev;
+        if (curr == plList)
+            plList = curr->next;
+
+        plCurrent = curr->next;
+
+        // free it
+        free(curr->path);
+        free(curr->name);
+        free(curr);
+    }
+
+        mplCurr();   // instead of using mplNext && mplPrev
+        return plCurrent;
+
+    // delete list
+    case gtkDelPl:
+    {
+        plItem *curr = plList;
+        plItem *next;
+
+        if (!plList)
+            return NULL;
 
-	return plCurrent;
-   case gtkDelPl: // delete list
-        {
-	 plItem * curr = plList;
-	 plItem * next;
-	 if ( !plList ) return NULL;
-	 if ( !curr->next )
-	  {
-	   free( curr->path );
-	   free( curr->name );
-	   free( curr );
-	  }
-	  else
-	   {
-	    while ( curr->next )
-	     {
-	      next=curr->next;
-	      free( curr->path );
-	      free( curr->name );
-	      free( curr );
-	      curr=next;
-	     }
-	   }
-	  plList=NULL; plCurrent=NULL;
-	}
+        if (!curr->next) {
+            free(curr->path);
+            free(curr->name);
+            free(curr);
+        } else {
+            while (curr->next) {
+                next = curr->next;
+                free(curr->path);
+                free(curr->name);
+                free(curr);
+                curr = next;
+            }
+        }
+
+        plList    = NULL;
+        plCurrent = NULL;
+    }
         return NULL;
-   // ----- Handle url
-   case gtkAddURLItem:
-        if ( URLList )
-	 {
-          URLItem * next_url = URLList;
-          is_added = False;
-          while ( next_url->next )
-           {
-            if ( !gstrcmp( next_url->url,url_item->url ) )
-             {
-              is_added=True;
-              break;
-             }
-            next_url=next_url->next;
-           }
-          if ( ( !is_added )&&( gstrcmp( next_url->url,url_item->url ) ) ) next_url->next=url_item;
-         } else { url_item->next=NULL; URLList=url_item; }
+
+    // handle url
+    case gtkAddURLItem:
+        if (URLList) {
+            URLItem *next_url = URLList;
+            is_added = False;
+
+            while (next_url->next) {
+                if (!gstrcmp(next_url->url, url_item->url)) {
+                    is_added = True;
+                    break;
+                }
+
+                next_url = next_url->next;
+            }
+
+            if (!is_added && gstrcmp(next_url->url, url_item->url))
+                next_url->next = url_item;
+        } else {
+            url_item->next = NULL;
+            URLList = url_item;
+        }
         return NULL;
-// --- subtitle
+
+        // subtitle
+
 #ifndef CONFIG_FREETYPE
-   case gtkSetFontFactor:
-        font_factor=fparam;
-	guiLoadFont();
-	return NULL;
+    case gtkSetFontFactor:
+        font_factor = fparam;
+        guiLoadFont();
+        return NULL;
 #else
-   case gtkSetFontOutLine:
-        subtitle_font_thickness=( 8.0f / 100.0f ) * fparam;
-	guiLoadFont();
-	return NULL;
-   case gtkSetFontBlur:
-	subtitle_font_radius=( 8.0f / 100.0f ) * fparam;
-	guiLoadFont();
-	return NULL;
-   case gtkSetFontTextScale:
-	text_font_scale_factor=fparam;
-	guiLoadFont();
-	return NULL;
-   case gtkSetFontOSDScale:
-	osd_font_scale_factor=fparam;
-	guiLoadFont();
-	return NULL;
-   case gtkSetFontEncoding:
-	gfree( (void **)&subtitle_font_encoding );
-	subtitle_font_encoding=gstrdup( (char *)vparam );
-	guiLoadFont();
-	return NULL;
-   case gtkSetFontAutoScale:
-	subtitle_autoscale=(int)fparam;
-	guiLoadFont();
-	return NULL;
+    case gtkSetFontOutLine:
+        subtitle_font_thickness = (8.0f / 100.0f) * fparam;
+        guiLoadFont();
+        return NULL;
+
+    case gtkSetFontBlur:
+        subtitle_font_radius = (8.0f / 100.0f) * fparam;
+        guiLoadFont();
+        return NULL;
+
+    case gtkSetFontTextScale:
+        text_font_scale_factor = fparam;
+        guiLoadFont();
+        return NULL;
+
+    case gtkSetFontOSDScale:
+        osd_font_scale_factor = fparam;
+        guiLoadFont();
+        return NULL;
+
+    case gtkSetFontEncoding:
+        gfree((void **)&subtitle_font_encoding);
+        subtitle_font_encoding = gstrdup((char *)vparam);
+        guiLoadFont();
+        return NULL;
+
+    case gtkSetFontAutoScale:
+        subtitle_autoscale = (int)fparam;
+        guiLoadFont();
+        return NULL;
 #endif
+
 #ifdef CONFIG_ICONV
-   case gtkSetSubEncoding:
-	gfree( (void **)&sub_cp );
-	sub_cp=gstrdup( (char *)vparam );
-	break;
+    case gtkSetSubEncoding:
+        gfree((void **)&sub_cp);
+        sub_cp = gstrdup((char *)vparam);
+        break;
 #endif
-// --- misc
-   case gtkClearStruct:
-        if ( (unsigned int)vparam & guiFilenames )
-	 {
-	  gfree( (void **)&guiIntfStruct.Filename );
-	  gfree( (void **)&guiIntfStruct.Subtitlename );
-	  gfree( (void **)&guiIntfStruct.AudioFile );
-	  gtkSet( gtkDelPl,0,NULL );
-	 }
+
+    // misc
+
+    case gtkClearStruct:
+
+        if ((unsigned int)vparam & guiFilenames) {
+            gfree((void **)&guiIntfStruct.Filename);
+            gfree((void **)&guiIntfStruct.Subtitlename);
+            gfree((void **)&guiIntfStruct.AudioFile);
+            gtkSet(gtkDelPl, 0, NULL);
+        }
+
 #ifdef CONFIG_DVDREAD
-	if ( (unsigned int)vparam & guiDVD ) memset( &guiIntfStruct.DVD,0,sizeof( guiDVDStruct ) );
+        if ((unsigned int)vparam & guiDVD)
+            memset(&guiIntfStruct.DVD, 0, sizeof(guiDVDStruct));
 #endif
+
 #ifdef CONFIG_VCD
-	if ( (unsigned int)vparam & guiVCD ) guiIntfStruct.VCDTracks=0;
+        if ((unsigned int)vparam & guiVCD)
+            guiIntfStruct.VCDTracks = 0;
 #endif
-	return NULL;
-   case gtkSetExtraStereo:
-        gtkAOExtraStereoMul=fparam;
+
+        return NULL;
+
+    case gtkSetExtraStereo:
+        gtkAOExtraStereoMul = fparam;
         if (guiIntfStruct.afilter)
-          af_control_any_rev(guiIntfStruct.afilter,
-             AF_CONTROL_ES_MUL | AF_CONTROL_SET, &gtkAOExtraStereoMul);
+            af_control_any_rev(guiIntfStruct.afilter, AF_CONTROL_ES_MUL | AF_CONTROL_SET, &gtkAOExtraStereoMul);
+        return NULL;
+
+    case gtkSetPanscan:
+    {
+        mp_cmd_t *mp_cmd;
+
+        mp_cmd       = calloc(1, sizeof(*mp_cmd));
+        mp_cmd->id   = MP_CMD_PANSCAN;
+        mp_cmd->name = strdup("panscan");
+        mp_cmd->args[0].v.f = fparam;
+        mp_cmd->args[1].v.i = 1;
+        mp_input_queue_cmd(mp_cmd);
+    }
         return NULL;
-   case gtkSetPanscan:
-        {
-	 mp_cmd_t * mp_cmd;
-         mp_cmd=calloc( 1,sizeof( *mp_cmd ) );
-         mp_cmd->id=MP_CMD_PANSCAN;    mp_cmd->name=strdup( "panscan" );
-	 mp_cmd->args[0].v.f=fparam;   mp_cmd->args[1].v.i=1;
-	 mp_input_queue_cmd( mp_cmd );
-	}
+
+    case gtkSetAutoq:
+        auto_quality = (int)fparam;
+        return NULL;
+
+    // set equalizers
+
+    case gtkSetContrast:
+        if (guiIntfStruct.sh_video)
+            set_video_colors(guiIntfStruct.sh_video, "contrast", (int)fparam);
+        return NULL;
+
+    case gtkSetBrightness:
+        if (guiIntfStruct.sh_video)
+            set_video_colors(guiIntfStruct.sh_video, "brightness", (int)fparam);
+        return NULL;
+
+    case gtkSetHue:
+        if (guiIntfStruct.sh_video)
+            set_video_colors(guiIntfStruct.sh_video, "hue", (int)fparam);
         return NULL;
-   case gtkSetAutoq:
-	auto_quality=(int)fparam;
-	return NULL;
-// --- set equalizers
-   case gtkSetContrast:
-        if ( guiIntfStruct.sh_video ) set_video_colors( guiIntfStruct.sh_video,"contrast",(int)fparam );
-	return NULL;
-   case gtkSetBrightness:
-        if ( guiIntfStruct.sh_video ) set_video_colors( guiIntfStruct.sh_video,"brightness",(int)fparam );
-	return NULL;
-   case gtkSetHue:
-        if ( guiIntfStruct.sh_video ) set_video_colors( guiIntfStruct.sh_video,"hue",(int)fparam );
-	return NULL;
-   case gtkSetSaturation:
-        if ( guiIntfStruct.sh_video ) set_video_colors( guiIntfStruct.sh_video,"saturation",(int)fparam );
-	return NULL;
-   case gtkSetEqualizer:
-     {
+
+    case gtkSetSaturation:
+        if (guiIntfStruct.sh_video)
+            set_video_colors(guiIntfStruct.sh_video, "saturation", (int)fparam);
+        return NULL;
+
+    case gtkSetEqualizer:
+    {
         af_control_ext_t tmp;
-        if ( eq )
-	 {
-          gtkEquChannels[eq->channel][eq->band]=eq->gain;
-          tmp.ch = eq->channel;
-          tmp.arg = gtkEquChannels[eq->channel];
-          if (guiIntfStruct.afilter)
-            af_control_any_rev(guiIntfStruct.afilter,
-               AF_CONTROL_EQUALIZER_GAIN | AF_CONTROL_SET, &tmp);
-	 }
-	 else
-	  {
-	   int i;
-	   memset( gtkEquChannels,0,sizeof( gtkEquChannels ) );
-	   if (guiIntfStruct.afilter)
-	   for ( i=0;i<6;i++ )
-	    {
-	     tmp.ch = i;
-	     tmp.arg = gtkEquChannels[i];
-	     af_control_any_rev(guiIntfStruct.afilter,
-	        AF_CONTROL_EQUALIZER_GAIN | AF_CONTROL_SET, &tmp);
-	    }
-	  }
-	return NULL;
-     }
-  }
- return NULL;
+
+        if (eq) {
+            gtkEquChannels[eq->channel][eq->band] = eq->gain;
+            tmp.ch  = eq->channel;
+            tmp.arg = gtkEquChannels[eq->channel];
+
+            if (guiIntfStruct.afilter)
+                af_control_any_rev(guiIntfStruct.afilter, AF_CONTROL_EQUALIZER_GAIN | AF_CONTROL_SET, &tmp);
+        } else {
+            int i;
+
+            memset(gtkEquChannels, 0, sizeof(gtkEquChannels));
+
+            if (guiIntfStruct.afilter) {
+                for (i = 0; i < 6; i++) {
+                    tmp.ch  = i;
+                    tmp.arg = gtkEquChannels[i];
+                    af_control_any_rev(guiIntfStruct.afilter, AF_CONTROL_EQUALIZER_GAIN | AF_CONTROL_SET, &tmp);
+                }
+            }
+        }
+
+        return NULL;
+    }
+    }
+
+    return NULL;
 }
 
-#include "playtree.h"
-
-//This function adds/inserts one file into the gui playlist
+// This function adds/inserts one file into the gui playlist.
+static int import_file_into_gui(char *temp, int insert)
+{
+    char *filename, *pathname;
+    plItem *item;
 
-static int import_file_into_gui(char* temp, int insert)
-{
-  char *filename, *pathname;
-  plItem * item;
+    filename = strdup(mp_basename(temp));
+    pathname = strdup(temp);
+
+    if (strlen(pathname) - strlen(filename) > 0)
+        pathname[strlen(pathname) - strlen(filename) - 1] = 0;                                            // we have some path, so remove / at end
+    else
+        pathname[strlen(pathname) - strlen(filename)] = 0;
 
-  filename = strdup(mp_basename(temp));
-  pathname = strdup(temp);
-  if (strlen(pathname)-strlen(filename)>0)
-    pathname[strlen(pathname)-strlen(filename)-1]='\0'; // We have some path so remove / at end
-  else
-    pathname[strlen(pathname)-strlen(filename)]='\0';
-  mp_msg(MSGT_PLAYTREE,MSGL_V, "Adding filename %s && pathname %s\n",filename,pathname); //FIXME: Change to MSGL_DBG2 ?
-  item=calloc( 1,sizeof( plItem ) );
-  if (!item)
-     return 0;
-  item->name=filename;
-  item->path=pathname;
-  if (insert)
-    gtkSet( gtkInsertPlItem,0,(void*)item ); // Inserts the item after current, and makes current=item
-  else
-    gtkSet( gtkAddPlItem,0,(void*)item );
-  return 1;
+    // NOTE TO MYSELF: FIXME: Change to MSGL_DBG2?
+    mp_msg(MSGT_PLAYTREE, MSGL_V, "Adding filename %s && pathname %s\n", filename, pathname);
+
+    item = calloc(1, sizeof(plItem));
+
+    if (!item)
+        return 0;
+
+    item->name = filename;
+    item->path = pathname;
+
+    if (insert)
+        gtkSet(gtkInsertPlItem, 0, (void *)item);            // inserts the item after current, and makes current=item
+    else
+        gtkSet(gtkAddPlItem, 0, (void *)item);
+
+    return 1;
 }
 
-
-// This function imports the initial playtree (based on cmd-line files) into the gui playlist
-// by either:
-//   - overwriting gui pl (enqueue=0)
-//   - appending it to gui pl (enqueue=1)
+// This function imports the initial playtree (based on cmd-line files)
+// into the gui playlist by either:
+// - overwriting gui pl (enqueue=0)
+// - appending it to gui pl (enqueue=1)
+int import_initial_playtree_into_gui(play_tree_t *my_playtree, m_config_t *config, int enqueue)
+{
+    play_tree_iter_t *my_pt_iter = NULL;
+    int result = 0;
 
-int import_initial_playtree_into_gui(play_tree_t* my_playtree, m_config_t* config, int enqueue)
-{
-  play_tree_iter_t* my_pt_iter=NULL;
-  int result=0;
-
-  if (!enqueue) // Delete playlist before "appending"
-    gtkSet(gtkDelPl,0,0);
+    if (!enqueue)
+        gtkSet(gtkDelPl, 0, 0);             // delete playlist before "appending"
 
-  if((my_pt_iter=pt_iter_create(&my_playtree,config)))
-  {
-    while ((filename=pt_iter_get_next_file(my_pt_iter))!=NULL)
-    {
-      if (import_file_into_gui(filename, 0)) // Add it to end of list
-        result=1;
+    if ((my_pt_iter = pt_iter_create(&my_playtree, config))) {
+        while ((filename = pt_iter_get_next_file(my_pt_iter)) != NULL)
+            // add it to end of list
+            if (import_file_into_gui(filename, 0))
+                result = 1;
     }
-  }
 
-  mplCurr(); // Update filename
-  mplGotoTheNext=1;
+    mplCurr();   // update filename
+    mplGotoTheNext = 1;
 
-  if (!enqueue)
-    filename=guiIntfStruct.Filename; // Backward compatibility; if file is specified on commandline,
-  				     // gmplayer does directly start in Play-Mode.
-  else
-    filename=NULL;
+    if (!enqueue)
+        filename = guiIntfStruct.Filename;             // Backward compatibility; if file is specified on commandline,
+                                                       // gmplayer does directly start in Play-Mode.
+    else
+        filename = NULL;
 
-  return result;
+    return result;
 }
 
-// This function imports and inserts an playtree, that is created "on the fly", for example by
-// parsing some MOV-Reference-File; or by loading an playlist with "File Open"
-//
+// This function imports and inserts an playtree, that is created "on the fly",
+// for example by parsing some MOV-Reference-File; or by loading an playlist
+// with "File Open".
 // The file which contained the playlist is thereby replaced with it's contents.
+int import_playtree_playlist_into_gui(play_tree_t *my_playtree, m_config_t *config)
+{
+    play_tree_iter_t *my_pt_iter = NULL;
+    int result = 0;
+    plItem *save;
 
-int import_playtree_playlist_into_gui(play_tree_t* my_playtree, m_config_t* config)
-{
-  play_tree_iter_t* my_pt_iter=NULL;
-  int result=0;
-  plItem * save=(plItem*)gtkSet( gtkGetCurrPlItem, 0, 0); // Save current item
+    save = (plItem *)gtkSet(gtkGetCurrPlItem, 0, 0);    // save current item
 
-  if((my_pt_iter=pt_iter_create(&my_playtree,config)))
-  {
-    while ((filename=pt_iter_get_next_file(my_pt_iter))!=NULL)
-    {
-      if (import_file_into_gui(filename, 1)) // insert it into the list and set plCurrent=new item
-        result=1;
+    if ((my_pt_iter = pt_iter_create(&my_playtree, config))) {
+        while ((filename = pt_iter_get_next_file(my_pt_iter)) != NULL)
+            // insert it into the list and set plCurrent=new item
+            if (import_file_into_gui(filename, 1))
+                result = 1;
+
+        pt_iter_destroy(&my_pt_iter);
     }
-    pt_iter_destroy(&my_pt_iter);
-  }
 
-  if (save)
-    gtkSet(gtkSetCurrPlItem, 0, (void*)save);
-  else
-    gtkSet(gtkSetCurrPlItem, 0, (void*)plList); // go to head, if plList was empty before
+    if (save)
+        gtkSet(gtkSetCurrPlItem, 0, (void *)save);
+    else
+        gtkSet(gtkSetCurrPlItem, 0, (void *)plList);     // go to head, if plList was empty before
 
-  if (save && result)
-    gtkSet(gtkDelCurrPlItem, 0, 0);
+    if (save && result)
+        gtkSet(gtkDelCurrPlItem, 0, 0);
 
-  mplCurr();  // Update filename
-  filename=NULL;
+    mplCurr();   // update filename
+    filename = NULL;
 
-  return result;
+    return result;
 }
--- a/gui/interface.h	Thu Mar 10 18:59:44 2011 +0000
+++ b/gui/interface.h	Fri Mar 11 00:58:09 2011 +0000
@@ -22,191 +22,52 @@
 #include "config.h"
 #include "m_config.h"
 #include "playtree.h"
-#include "mplayer/play.h"
-#include "sub/font_load.h"
-#include "cfg.h"
 #include "stream/stream.h"
 
-typedef struct
-{
- int x;
- int y;
- int width;
- int height;
-} guiResizeStruct;
-
-typedef struct
-{
- int  signal;
- char module[512];
-} guiUnknownErrorStruct;
-
-typedef struct
-{
- int  seek;
- int  format;
- int  width;
- int  height;
- char codecdll[128];
-} guiVideoStruct;
-
-#ifdef CONFIG_DVDREAD
-typedef struct
-{
- int titles;
- int chapters;
- int angles;
- int current_chapter;
- int current_title;
- int current_angle;
- int nr_of_audio_channels;
- stream_language_t audio_streams[32];
- int nr_of_subtitles;
- stream_language_t subtitles[32];
-} guiDVDStruct;
-#endif
-
-typedef struct
-{
- int message;
-   guiResizeStruct       resize;
-   guiVideoStruct        videodata;
-   guiUnknownErrorStruct error;
-
-   struct MPContext * mpcontext;
-   void * sh_video;
-   void * afilter;
-   void * demuxer;
-   void * event_struct;
-
-   int    DiskChanged;
-   int    NewPlay;
+// these are in support of the non-GUI files that interact with
+// the GUI and that only need to include interface.h for this
+#include "cfg.h"
+#include "mplayer/play.h"
 
-#ifdef CONFIG_DVDREAD
-   guiDVDStruct         DVD;
-   int			Title;
-   int			Angle;
-   int			Chapter;
-#endif
-
-#ifdef CONFIG_VCD
-   int    VCDTracks;
-#endif
-
-   int    Playing;
-   float  Position;
-
-   int    MovieWidth;
-   int    MovieHeight;
-   int    NoWindow;
-
-   float  Volume;
-   float  Balance;
-
-   int    Track;
-   int    AudioType;
-   int    StreamType;
-   int	  AudioOnly;
-   int    TimeSec;
-   int    LengthInSec;
-   int    FrameDrop;
-   int    FileFormat;
-   float  FPS;
-
-   char * Filename;
-   int    FilenameChanged;
-
-   char * Subtitlename;
-   int    SubtitleChanged;
-
-   char * Othername;
-   int    OtherChanged;
-
-   char * AudioFile;
-   int    AudioFileChanged;
-
-   int    SkinChange;
-} guiInterface_t;
-
-extern guiInterface_t guiIntfStruct;
-
-#define guiXEvent           0
-#define guiCEvent           1
-#define guiIEvent           2
-#define guiSetDVD           3
-#define guiSetFileName      4
-#define guiSetState         5
-#define guiSetAudioOnly     6
-#define guiReDrawSubWindow  7
-#define guiSetShVideo       8
-#define guiSetStream        9
-#define guiReDraw	    10
-#define guiSetVolume        11
-#define guiSetDefaults	    12
-#define guiSetValues	    13
-#define guiSetFileFormat    14
-#define guiSetDemuxer       15
-#define guiSetParameters    16
-#define guiSetAfilter       17
-#define guiSetContext       18
+#define guiXEvent          0
+#define guiCEvent          1
+#define guiIEvent          2
+#define guiSetDVD          3
+#define guiSetFileName     4
+#define guiSetState        5
+#define guiSetAudioOnly    6
+#define guiReDrawSubWindow 7
+#define guiSetShVideo      8
+#define guiSetStream       9
+#define guiReDraw          10
+#define guiSetVolume       11
+#define guiSetDefaults     12
+#define guiSetValues       13
+#define guiSetFileFormat   14
+#define guiSetDemuxer      15
+#define guiSetParameters   16
+#define guiSetAfilter      17
+#define guiSetContext      18
 
 #define guiSetStop  0
 #define guiSetPlay  1
 #define guiSetPause 2
 
-#define guiDVD      	1
-#define guiVCD		2
-#define guiFilenames	4
-#define guiALL		0xffffffff
-
-extern int use_gui;
-extern int guiWinID;
-
-void guiInit( void );
-void guiDone( void );
-int  guiGetEvent( int type,void * arg );
-void guiEventHandling( void );
-void guiLoadFont( void );
-void guiLoadSubtitle( char * name );
-
-typedef struct plItem
-{
- struct plItem * prev,* next;
- int       played;
- char    * path;
- char    * name;
-} plItem;
+#define guiDVD       1
+#define guiVCD       2
+#define guiFilenames 4
+#define guiALL       0xffffffff
 
-typedef struct urlItem
-{
- struct urlItem *next;
- char    * url;
-} URLItem;
-
-extern char   * skinName;
-extern char   * skinDirInHome;
-extern char   * skinMPlayerDir;
-
-extern plItem * plList;
-extern plItem * plCurrent;
-extern plItem * plLastPlayed;
-
-extern URLItem * URLList;
-
-#define fsPersistant_MaxPath 512
-#define fsPersistant_MaxPos 5
-extern char * fsHistory[fsPersistant_MaxPos];
-
-#define gtkSetContrast       0
-#define gtkSetBrightness     1
-#define gtkSetHue	     2
-#define gtkSetSaturation     3
-#define gtkSetEqualizer      4
-#define gtkAddPlItem         5
-#define gtkGetNextPlItem     6
-#define gtkGetPrevPlItem     7
-#define gtkGetCurrPlItem     8
-#define gtkDelPl             9
+#define gtkSetContrast      0
+#define gtkSetBrightness    1
+#define gtkSetHue           2
+#define gtkSetSaturation    3
+#define gtkSetEqualizer     4
+#define gtkAddPlItem        5
+#define gtkGetNextPlItem    6
+#define gtkGetPrevPlItem    7
+#define gtkGetCurrPlItem    8
+#define gtkDelPl            9
 #define gtkSetExtraStereo   10
 #define gtkSetPanscan       11
 #define gtkSetFontFactor    12
@@ -224,28 +85,161 @@
 #define gtkInsertPlItem     24
 #define gtkSetCurrPlItem    25
 
+#define fsPersistant_MaxPos 5
+
+#define guiSetFilename(s, n) \
+    { \
+        gfree((void **)&s); \
+        s = gstrdup(n); \
+    }
+
+#define guiSetDF(s, d, n) \
+    { \
+        gfree((void **)&s); \
+        s = malloc(strlen(d) + strlen(n) + 5); \
+        sprintf(s, "%s/%s", d, n); \
+    }
+
+typedef struct {
+    int x;
+    int y;
+    int width;
+    int height;
+} guiResizeStruct;
+
+typedef struct {
+    int signal;
+    char module[512];
+} guiUnknownErrorStruct;
+
+typedef struct {
+    int seek;
+    int format;
+    int width;
+    int height;
+    char codecdll[128];
+} guiVideoStruct;
+
+#ifdef CONFIG_DVDREAD
+typedef struct {
+    int titles;
+    int chapters;
+    int angles;
+    int current_chapter;
+    int current_title;
+    int current_angle;
+    int nr_of_audio_channels;
+    stream_language_t audio_streams[32];
+    int nr_of_subtitles;
+    stream_language_t subtitles[32];
+} guiDVDStruct;
+#endif
+
+typedef struct {
+    int message;
+    guiResizeStruct resize;
+    guiVideoStruct videodata;
+    guiUnknownErrorStruct error;
+
+    struct MPContext *mpcontext;
+    void *sh_video;
+    void *afilter;
+    void *demuxer;
+    void *event_struct;
+
+    int DiskChanged;
+    int NewPlay;
+
+#ifdef CONFIG_DVDREAD
+    guiDVDStruct DVD;
+    int Title;
+    int Angle;
+    int Chapter;
+#endif
+
+#ifdef CONFIG_VCD
+    int VCDTracks;
+#endif
+
+    int Playing;
+    float Position;
+
+    int MovieWidth;
+    int MovieHeight;
+    int NoWindow;
+
+    float Volume;
+    float Balance;
+
+    int Track;
+    int AudioType;
+    int StreamType;
+    int AudioOnly;
+    int TimeSec;
+    int LengthInSec;
+    int FrameDrop;
+    int FileFormat;
+    float FPS;
+
+    char *Filename;
+    int FilenameChanged;
+
+    char *Subtitlename;
+    int SubtitleChanged;
+
+    char *Othername;
+    int OtherChanged;
+
+    char *AudioFile;
+    int AudioFileChanged;
+
+    int SkinChange;
+} guiInterface_t;
+
+typedef struct plItem {
+    struct plItem *prev, *next;
+    int played;
+    char *path;
+    char *name;
+} plItem;
+
+typedef struct urlItem {
+    struct urlItem *next;
+    char *url;
+} URLItem;
+
+extern guiInterface_t guiIntfStruct;
+
+extern int use_gui;   // this is defined in mplayer.c
+extern int guiWinID;
+
+extern char *skinName;
+extern char *skinDirInHome;
+extern char *skinMPlayerDir;
+
+extern plItem *plList;
+extern plItem *plCurrent;
+extern plItem *plLastPlayed;
+
+extern URLItem *URLList;
+
+extern char *fsHistory[fsPersistant_MaxPos];
+
 extern float gtkEquChannels[6][10];
 
-void * gtkSet( int cmd, float param, void * vparam );
-
-char * gstrdup( const char * str );
-int    gstrcmp( const char * a, const char * b );
-void   gfree( void ** p );
-void   gaddlist( char *** list, const char * entry );
-char * gstrchr( char * str, int c );
-
-int import_initial_playtree_into_gui(play_tree_t* my_playtree,
-                                     m_config_t* config, int enqueue);
-int import_playtree_playlist_into_gui(play_tree_t* my_playtree,
-                                      m_config_t* config);
-
-#define guiSetFilename( s,n ) { gfree( (void **)&s ); s=gstrdup( n ); }
-
-#define guiSetDF( s,d,n )                       \
- {                                              \
-  gfree( (void **)&s );                          \
-  s=malloc( strlen( d ) + strlen( n ) + 5 );    \
-  sprintf( s,"%s/%s",d,n );                     \
- }
+void gaddlist(char ***list, const char *entry);
+void gfree(void **p);
+char *gstrchr(char *str, int c);
+int gstrcmp(const char *a, const char *b);
+char *gstrdup(const char *str);
+void *gtkSet(int cmd, float fparam, void *vparam);
+void guiDone(void);
+void guiEventHandling(void);
+int guiGetEvent(int type, void *arg);
+void guiInit(void);
+void guiLoadFont(void);
+void guiLoadSubtitle(char *name);
+int import_initial_playtree_into_gui(play_tree_t *my_playtree, m_config_t *config, int enqueue);
+int import_playtree_playlist_into_gui(play_tree_t *my_playtree, m_config_t *config);
 
 #endif /* MPLAYER_GUI_INTERFACE_H */