[Mplayer-cvslog] CVS: main/libvo mga_common.c,1.32,1.33 vo_xmga.c,1.64,1.65 vo_xv.c,1.83,1.84 vo_xvidix.c,1.32,1.33 x11_common.c,1.73,1.74

Zoltan Ponekker pontscho at mplayerhq.hu
Tue May 7 15:31:33 CEST 2002


Update of /cvsroot/mplayer/main/libvo
In directory mail:/var/tmp.root/cvs-serv27592/libvo

Modified Files:
	mga_common.c vo_xmga.c vo_xv.c vo_xvidix.c x11_common.c 
Log Message:
wm detection -- round two

Index: mga_common.c
===================================================================
RCS file: /cvsroot/mplayer/main/libvo/mga_common.c,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -r1.32 -r1.33
--- mga_common.c	5 May 2002 18:58:42 -0000	1.32
+++ mga_common.c	7 May 2002 13:31:29 -0000	1.33
@@ -276,6 +276,10 @@
     mga_fullscreen();
 #endif
     return VO_TRUE;
+#if defined( VO_XMGA ) && defined( HAVE_NEW_GUI )
+  case VOCTRL_GUISUPPORT:
+    return VO_TRUE;
+#endif
   }
   return VO_NOTIMPL;
 }

Index: vo_xmga.c
===================================================================
RCS file: /cvsroot/mplayer/main/libvo/vo_xmga.c,v
retrieving revision 1.64
retrieving revision 1.65
diff -u -r1.64 -r1.65
--- vo_xmga.c	6 May 2002 16:56:41 -0000	1.64
+++ vo_xmga.c	7 May 2002 13:31:29 -0000	1.65
@@ -292,8 +292,6 @@
    vo_x11_classhint( mDisplay,vo_window,"xmga" );
    vo_hidecursor(mDisplay,vo_window);
 
-//   if ( vo_fs ) vo_x11_decoration( mDisplay,vo_window,0 );
-
    XStoreName( mDisplay,vo_window,mTitle );
    XMapWindow( mDisplay,vo_window );
 

Index: vo_xv.c
===================================================================
RCS file: /cvsroot/mplayer/main/libvo/vo_xv.c,v
retrieving revision 1.83
retrieving revision 1.84
diff -u -r1.83 -r1.84
--- vo_xv.c	6 May 2002 16:56:41 -0000	1.83
+++ vo_xv.c	7 May 2002 13:31:29 -0000	1.84
@@ -436,7 +436,6 @@
    );
    XSetStandardProperties(mDisplay, vo_window, hello, hello, None, NULL, 0, &hint);
    XSetWMNormalHints( mDisplay,vo_window,&hint );
-//   if ( vo_fs ) vo_x11_decoration( mDisplay,vo_window,0 );
    XMapWindow(mDisplay, vo_window);
    if ( flags&1 ) vo_x11_fullscreen();
 #ifdef HAVE_XINERAMA

Index: vo_xvidix.c
===================================================================
RCS file: /cvsroot/mplayer/main/libvo/vo_xvidix.c,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -r1.32 -r1.33
--- vo_xvidix.c	4 May 2002 22:52:56 -0000	1.32
+++ vo_xvidix.c	7 May 2002 13:31:29 -0000	1.33
@@ -33,6 +33,10 @@
 #include "vosub_vidix.h"
 #include "../vidix/vidixlib.h"
 
+#ifdef HAVE_NEW_GUI
+#include "../Gui/interface.h"
+#endif
+
 LIBVO_EXTERN(xvidix)
 
 static vo_info_t vo_info = 
@@ -228,9 +232,9 @@
     window_width = d_width;
     window_height = d_height;
 
-    vo_fs = flags&0x01;
-    if (vo_fs)
-     { vo_old_width=d_width; vo_old_height=d_height; }
+//    vo_fs = flags&0x01;
+//    if (vo_fs)
+//     { vo_old_width=d_width; vo_old_height=d_height; }
 
     X_already_started++;
     
@@ -254,26 +258,29 @@
     }
 
     aspect(&d_width, &d_height, A_NOZOOM);
+    
+    vo_dwidth=d_width; vo_dheight=d_height;
 
 #ifdef HAVE_NEW_GUI
-if (vo_window == None)
+if(use_gui) guiGetEvent( guiSetShVideo,0 ); // the GUI will set up / resize the window
+else
 {
 #endif
 
 #ifdef X11_FULLSCREEN
-    if (vo_fs) /* fullscreen */
+    if ( flags&1 ) /* fullscreen */
     {
         if (flags & 0x04)
         {
     	    aspect(&d_width, &d_height, A_ZOOM);
         }
-    	else
-    	{
-	    d_width = vo_screenwidth;
-	    d_height = vo_screenheight;
-    	}
-	window_width = vo_screenwidth;
-	window_height = vo_screenheight;
+//    	else
+//    	{
+//	    d_width = vo_screenwidth;
+//	    d_height = vo_screenheight;
+//    	}
+//	window_width = vo_screenwidth;
+//	window_height = vo_screenheight;
     }
 #endif
     dwidth = d_width;
@@ -310,10 +317,10 @@
     vo_x11_classhint(mDisplay, vo_window, "xvidix");
     vo_hidecursor(mDisplay, vo_window);
 
-#ifdef X11_FULLSCREEN
-    if (vo_fs) /* fullscreen */
-	vo_x11_decoration(mDisplay, vo_window, 0);
-#endif
+//#ifdef X11_FULLSCREEN
+//    if (vo_fs && vo_wm_type == 0) /* fullscreen */
+//	vo_x11_decoration(mDisplay, vo_window, 0);
+//#endif
 
     XGetNormalHints(mDisplay, vo_window, &hint);
     hint.x = window_x;
@@ -327,13 +334,16 @@
     /* Map window. */
 
     XMapWindow(mDisplay, vo_window);
+    
+    if ( flags&1 ) vo_x11_fullscreen();
+    
 #ifdef HAVE_XINERAMA
     vo_x11_xinerama_move(mDisplay, vo_window);
 #endif
 
     vo_gc = XCreateGC(mDisplay, vo_window, GCForeground, &mGCV);
 
-    XSelectInput( mDisplay,vo_window,StructureNotifyMask | KeyPressMask | ButtonPressMask | ButtonReleaseMask );
+//    XSelectInput( mDisplay,vo_window,StructureNotifyMask | KeyPressMask | ButtonPressMask | ButtonReleaseMask );
 #ifdef HAVE_NEW_GUI
 }
 #endif

Index: x11_common.c
===================================================================
RCS file: /cvsroot/mplayer/main/libvo/x11_common.c,v
retrieving revision 1.73
retrieving revision 1.74
diff -u -r1.73 -r1.74
--- x11_common.c	6 May 2002 15:48:07 -0000	1.73
+++ x11_common.c	7 May 2002 13:31:29 -0000	1.74
@@ -174,6 +174,59 @@
 #undef MSGLEN
 }
 
+int vo_wm_detect( void )
+{
+ Atom            type;
+ Window		 win;
+ XEvent          xev;
+ int		 c = 0;
+ int             wm = vo_wm_Unknown;
+ int             format;
+ unsigned long   nitems, bytesafter;
+ unsigned char * args = NULL;
+#if 1
+// --- netwm 
+ type=XInternAtom( mDisplay,"_NET_SUPPORTED",False );
+ if ( Success == XGetWindowProperty( mDisplay,mRootWin,type,0,65536 / sizeof( long ),False,AnyPropertyType,&type,&format,&nitems,&bytesafter,&args ) && nitems > 0 )
+  {
+   mp_dbg( MSGT_VO,MSGL_STATUS,"[x11] Detected wm is NetWM.\n" );
+   XFree( args );
+   return vo_wm_NetWM;
+  }
+#endif
+// --- other wm
+ mp_dbg( MSGT_VO,MSGL_STATUS,"[x11] Create window for WM detect ...\n" );
+ win=XCreateSimpleWindow( mDisplay,mRootWin,vo_screenwidth,vo_screenheight,1,1,0,0,0 );
+ XSelectInput( mDisplay,win,PropertyChangeMask | StructureNotifyMask );
+ XMapWindow( mDisplay,win );
+ XMoveWindow( mDisplay,win,vo_screenwidth,vo_screenheight );
+ do 
+  { 
+   XCheckWindowEvent( mDisplay,win,PropertyChangeMask | StructureNotifyMask,&xev );
+
+   if ( xev.type == PropertyNotify )
+    {
+     char * name = XGetAtomName( mDisplay,xev.xproperty.atom );
+     if ( !name ) break;
+
+     if ( !strncmp( name,"_ICEWM_TRAY",11 ) )
+      { mp_dbg( MSGT_VO,MSGL_STATUS,"[x11] Detected wm is IceWM.\n" ); wm=vo_wm_IceWM; break; }
+     if ( !strncmp( name,"_KDE_",5 ) )
+      { mp_dbg( MSGT_VO,MSGL_STATUS,"[x11] Detected wm is KDE.\n" ); wm=vo_wm_KDE; break; }
+     if ( !strncmp( name,"KWM_WIN_DESKTOP",15 ) )
+      { mp_dbg( MSGT_VO,MSGL_STATUS,"[x11] Detected wm is WindowMaker style.\n" ); wm=vo_wm_WMakerStyle; break; }
+//     fprintf(stderr,"[ws] PropertyNotify ( 0x%x ) %s ( 0x%x )\n",win,name,xev.xproperty.atom );
+
+     XFree( name );
+    }
+ } while( c++ < 25 );
+ XDestroyWindow( mDisplay,win );
+#ifdef MP_DEBUG
+ if ( wm == vo_wm_Unknown ) mp_dbg( MSGT_VO,MSGL_STATUS,"[x11] Unknown wm type...\n" );
+#endif
+ return wm;
+}    
+
 int vo_init( void )
 {
 // int       mScreen;
@@ -297,19 +350,7 @@
 	depth, vo_depthonscreen,
 	dispName,mLocalDisplay?"local":"remote");
 
- {
-  Atom            type;
-  int             format;
-  unsigned long   nitems, bytesafter;
-  unsigned char * args = NULL;
-  type=XInternAtom( mDisplay,"_NET_SUPPORTED",False );
-  if ( Success == XGetWindowProperty( mDisplay,mRootWin,type,0,65536 / sizeof( long ),False,AnyPropertyType,&type,&format,&nitems,&bytesafter,&args ) && nitems > 0 )
-   {
-    mp_dbg( MSGT_VO,MSGL_STATUS,"[x11] Detected wm is NetWM.\n" );
-    XFree( args );
-    vo_wm_type=vo_wm_NetWM;
-   }
- }    
+ vo_wm_type=vo_wm_detect();
 
  return 1;
 }
@@ -564,6 +605,7 @@
            mplayer_put_key(MOUSE_BTN0+Event.xbutton.button-1);
            break;
 #endif
+#if 1
       case PropertyNotify: 
     	   {
 	    char * name = XGetAtomName( mydisplay,Event.xproperty.atom );
@@ -590,9 +632,9 @@
 	    XFree( name );
 	   }
 	   break;
+#endif
      }
   }
-
   return ret;
 }
 
@@ -675,7 +717,11 @@
 
  switch ( vo_wm_type )
   {
+//   case vo_wm_WMakerStyle:
+//          vo_x11_decoration( mDisplay,vo_window,(vo_fs) ? 1 : 0 );
+	  break;
    case vo_wm_Unknown:
+          vo_x11_decoration( mDisplay,vo_window,(vo_fs) ? 1 : 0 );
 	  XUnmapWindow( mDisplay,vo_window );
 	  break;
    case vo_wm_IceWM:




More information about the MPlayer-cvslog mailing list