diff --git a/Gui/mplayer/menu.h b/Gui/mplayer/menu.h
index 787a4627fd..f72467ad96 100644
--- a/Gui/mplayer/menu.h
+++ b/Gui/mplayer/menu.h
@@ -11,7 +11,7 @@ void mplMenuDraw( wsParamDisplay )
 {
  unsigned long * buf = NULL;
  unsigned long * drw = NULL;
- unsigned long   x,y,tmp;
+ int             x,y,tmp;
 
  if ( !appMPlayer.menuBase.Bitmap.Image ) return;
  if ( !mplMenuRender && !appMPlayer.menuWindow.Visible ) return;
diff --git a/Gui/mplayer/mw.h b/Gui/mplayer/mw.h
index e9db758027..5194563be8 100644
--- a/Gui/mplayer/mw.h
+++ b/Gui/mplayer/mw.h
@@ -222,8 +222,8 @@ play_dvd_2:
 #endif
    case evPlay:
    case evPlaySwitchToPause:
-        btnModify( evPlaySwitchToPause,btnDisabled );
-        btnModify( evPauseSwitchToPlay,btnReleased );
+//        btnModify( evPlaySwitchToPause,btnDisabled );
+//        btnModify( evPauseSwitchToPlay,btnReleased );
         if ( ( msg == evPlaySwitchToPause )&( mplShMem->Playing == 1 ) ) goto NoPause;
         mplMainRender=1;
 
@@ -241,6 +241,7 @@ play_dvd_2:
 #endif
          }
         mplPlay();
+	mplState();
         break;
    case evSetDVDSubtitle:
 #ifdef USE_DVDREAD
@@ -292,10 +293,11 @@ NoPause:
 
    case evStop:
         IZE("evStop");
-        btnModify( evPlaySwitchToPause,btnReleased );
-        btnModify( evPauseSwitchToPlay,btnDisabled );
+//        btnModify( evPlaySwitchToPause,btnReleased );
+//        btnModify( evPauseSwitchToPlay,btnDisabled );
         mplMainRender=1;
         mplStop();
+	mplState();
         break;
 
    case evLoadPlay:
diff --git a/Gui/mplayer/play.c b/Gui/mplayer/play.c
index 5d9ee13424..ec7d52204c 100644
--- a/Gui/mplayer/play.c
+++ b/Gui/mplayer/play.c
@@ -97,18 +97,33 @@ void mplPause( void )
   {
    case 1: // playing
         mplShMem->Playing=2;
-	btnModify( evPlaySwitchToPause,btnReleased );
-	btnModify( evPauseSwitchToPlay,btnDisabled );
+//	btnModify( evPlaySwitchToPause,btnReleased );
+//	btnModify( evPauseSwitchToPlay,btnDisabled );
 	break;
-    case 2: // paused
+   case 2: // paused
 	mplShMem->Playing=1;
-	btnModify( evPlaySwitchToPause,btnDisabled );
-	btnModify( evPauseSwitchToPlay,btnReleased );
+//	btnModify( evPlaySwitchToPause,btnDisabled );
+//	btnModify( evPauseSwitchToPlay,btnReleased );
 	break;
   }
+ mplState();
  mplSubRender=0;
 }
 
+void mplState( void )
+{
+ if ( ( mplShMem->Playing == 0 )||( mplShMem->Playing == 2 ) )
+  {
+   btnModify( evPlaySwitchToPause,btnReleased );
+   btnModify( evPauseSwitchToPlay,btnDisabled );
+  }
+  else 
+   {
+    btnModify( evPlaySwitchToPause,btnDisabled );
+    btnModify( evPauseSwitchToPlay,btnReleased );
+   }
+}
+
 void mplResize( unsigned int X,unsigned int Y,unsigned int width,unsigned int height )
 {
 // printf( "----resize---> %dx%d --- \n",width,height );
diff --git a/Gui/mplayer/play.h b/Gui/mplayer/play.h
index 20ed0cb4ca..8fccf74bc1 100644
--- a/Gui/mplayer/play.h
+++ b/Gui/mplayer/play.h
@@ -103,6 +103,7 @@ extern void mplStop();
 extern void mplFullScreen( void );
 extern void mplPlay( void );
 extern void mplPause( void );
+extern void mplState( void );
 extern void mplResize( unsigned int X,unsigned int Y,unsigned int width,unsigned int height );
 extern void mplResizeToMovieSize( unsigned int width,unsigned int height );
 
diff --git a/Gui/mplayer/psignal.c b/Gui/mplayer/psignal.c
index 074ed8ec09..27b2e7a142 100644
--- a/Gui/mplayer/psignal.c
+++ b/Gui/mplayer/psignal.c
@@ -4,6 +4,7 @@
 #include <string.h>
 #include <signal.h>
 #include <unistd.h>
+#include <inttypes.h>
 
 #include "widgets.h"
 #include "gtk/menu.h"
diff --git a/Gui/wm/ws.c b/Gui/wm/ws.c
index b269447ed6..c373508841 100644
--- a/Gui/wm/ws.c
+++ b/Gui/wm/ws.c
@@ -42,8 +42,8 @@ typedef struct
 
 Atom                 wsMotifHints;
 
-unsigned int         wsMaxX         = 0; // Screen width.
-unsigned int         wsMaxY         = 0; // Screen height.
+int                  wsMaxX         = 0; // Screen width.
+int                  wsMaxY         = 0; // Screen height.
 
 Display            * wsDisplay;
 int                  wsScreen;
@@ -103,11 +103,13 @@ inline int wsSearch( Window win );
 
 void wsWindowDecoration( wsTWindow * win,long d )
 {
+#if 0
  MotifWmHints *hints = &wsMotifWmHints;
  Atom type;
  int format;
  unsigned long nitems;
  unsigned long bytes_after;
+#endif
 
  wsMotifHints=XInternAtom( wsDisplay,"_MOTIF_WM_HINTS",0 );
  if ( wsMotifHints == None ) return;
diff --git a/Gui/wm/ws.h b/Gui/wm/ws.h
index 27d99c41ab..ddbb3ea683 100644
--- a/Gui/wm/ws.h
+++ b/Gui/wm/ws.h
@@ -161,8 +161,8 @@ typedef struct
  XColor               wsColor;
 } wsTWindow;
 
-extern unsigned int         wsMaxX;
-extern unsigned int         wsMaxY;
+extern int                  wsMaxX;
+extern int                  wsMaxY;
 
 extern Display            * wsDisplay;
 extern int                  wsScreen;