[Mplayer-cvslog] CVS: main/libvo x11_common.c,1.165,1.166

Adam Tla/lka CVS syncmail at mplayerhq.hu
Thu Apr 1 22:59:10 CEST 2004


CVS change done by Adam Tla/lka CVS

Update of /cvsroot/mplayer/main/libvo
In directory mail:/var2/tmp/cvs-serv17449/libvo

Modified Files:
	x11_common.c 
Log Message:
ALSA syc is not so good as OSS - small corrections
added Motif hints memorizing before switching to full screen because
WM can modify decorations of the app window


Index: x11_common.c
===================================================================
RCS file: /cvsroot/mplayer/main/libvo/x11_common.c,v
retrieving revision 1.165
retrieving revision 1.166
diff -u -r1.165 -r1.166
--- x11_common.c	16 Mar 2004 05:16:58 -0000	1.165
+++ x11_common.c	1 Apr 2004 20:59:07 -0000	1.166
@@ -608,19 +608,15 @@
 static MotifWmHints   vo_MotifWmHints;
 static Atom           vo_MotifHints  = None;
 
-// Note: always d==0 !
 void vo_x11_decoration( Display * vo_Display,Window w,int d )
 {
-
+	static unsigned int olddecor = MWM_DECOR_ALL;
+	static unsigned int oldfuncs = MWM_FUNC_MOVE | MWM_FUNC_CLOSE | MWM_FUNC_MINIMIZE | MWM_FUNC_MAXIMIZE | MWM_FUNC_RESIZE;
+	Atom mtype;
+	int  mformat;
+	unsigned long mn,mb;
   if ( !WinID ) return;
 
-  if(vo_fsmode&1){
-    XSetWindowAttributes attr;
-    attr.override_redirect = (!d) ? True : False;
-    XChangeWindowAttributes(vo_Display, w, CWOverrideRedirect, &attr);
-//    XMapWindow(vo_Display, w);
-  }
-
   if(vo_fsmode&8){
     XSetTransientForHint (vo_Display, w, RootWindow(vo_Display,mScreen));
   }
@@ -628,12 +624,26 @@
  vo_MotifHints=XInternAtom( vo_Display,"_MOTIF_WM_HINTS",0 );
  if ( vo_MotifHints != None )
   {
+	  if (!d) {
+		  MotifWmHints *mhints=NULL;
+		  XGetWindowProperty(vo_Display,w, vo_MotifHints, 0, 20, False,
+				  vo_MotifHints, &mtype, &mformat, &mn,
+				  &mb, (unsigned char **)&mhints) ;
+		  if (mhints){
+			  if (mhints->flags & MWM_HINTS_DECORATIONS)
+				  olddecor = mhints->decorations;
+			  if (mhints->flags & MWM_HINTS_FUNCTIONS)
+				  oldfuncs = mhints->functions;
+			  XFree (mhints);
+		  }
+	  }
+
    memset( &vo_MotifWmHints,0,sizeof( MotifWmHints ) );
    vo_MotifWmHints.flags=MWM_HINTS_FUNCTIONS | MWM_HINTS_DECORATIONS;
    if ( d )
     {
-     vo_MotifWmHints.functions=MWM_FUNC_MOVE | MWM_FUNC_CLOSE | MWM_FUNC_MINIMIZE | MWM_FUNC_MAXIMIZE | MWM_FUNC_RESIZE;
-     d=MWM_DECOR_ALL;
+     vo_MotifWmHints.functions= oldfuncs;
+     d=olddecor;
     }
 #if 0
    vo_MotifWmHints.decorations=d|((vo_fsmode&2)?0:MWM_DECOR_MENU);




More information about the MPlayer-cvslog mailing list