summaryrefslogtreecommitdiffstats
path: root/libvo/x11_common.c
diff options
context:
space:
mode:
authorarpi_esp <arpi_esp@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-06-17 01:22:09 +0000
committerarpi_esp <arpi_esp@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-06-17 01:22:09 +0000
commit9e90ab54309dcdb720ef8a70e11db90b1ddb46f0 (patch)
treeca25178f2f9b6b95d78c487f2254ca750aa06f81 /libvo/x11_common.c
parent255ab08f9d1ae90c541b9ccab12fa55cf3304f6a (diff)
downloadmpv-9e90ab54309dcdb720ef8a70e11db90b1ddb46f0.tar.bz2
mpv-9e90ab54309dcdb720ef8a70e11db90b1ddb46f0.tar.xz
patch: some X11 compliance fixed: set ClassHint and better fullscreen mode
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@1138 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libvo/x11_common.c')
-rw-r--r--libvo/x11_common.c27
1 files changed, 25 insertions, 2 deletions
diff --git a/libvo/x11_common.c b/libvo/x11_common.c
index 9d4f30dea9..5e5180f0dd 100644
--- a/libvo/x11_common.c
+++ b/libvo/x11_common.c
@@ -49,6 +49,7 @@ int vo_init( void )
{
// int mScreen;
int bpp;
+ unsigned int mask;
// char * DisplayName = ":0.0";
// Display * mDisplay;
XImage * mXImage;
@@ -78,12 +79,19 @@ int vo_init( void )
// get bits/pixel:
mXImage=XGetImage( mDisplay,mRootWin,0,0,1,1,AllPlanes,ZPixmap );
bpp=mXImage->bits_per_pixel;
+ if((vo_depthonscreen+7)/8 != (bpp+7)/8) vo_depthonscreen=bpp; // by A'rpi
+ mask=mXImage->red_mask|mXImage->green_mask|mXImage->blue_mask;
+ printf("vo: X11 color mask: %X (R:%lX G:%lX B:%lX)\n",
+ mask,mXImage->red_mask,mXImage->green_mask,mXImage->blue_mask);
+ if(((vo_depthonscreen+7)/8)==2){
+ if(mask==0x7FFF) vo_depthonscreen=15; else
+ if(mask==0xFFFF) vo_depthonscreen=16;
+ }
XDestroyImage( mXImage );
- if((vo_depthonscreen+7)/8 != (bpp+7)/8) vo_depthonscreen=bpp; // by A'rpi
// XCloseDisplay( mDisplay );
#warning Better local display detection method is needed.
if (*mDisplayName==':') mLocalDisplay=1; else mLocalDisplay=0;
- printf("X11 running at %dx%d depth: %d (\"%s\" => %s display)\n",vo_screenwidth,vo_screenheight,vo_depthonscreen,mDisplayName,mLocalDisplay?"local":"remote");
+ printf("vo: X11 running at %dx%d depth: %d (\"%s\" => %s display)\n",vo_screenwidth,vo_screenheight,vo_depthonscreen,mDisplayName,mLocalDisplay?"local":"remote");
return 1;
}
@@ -149,6 +157,14 @@ static Atom vo_MotifHints = None;
void vo_x11_decoration( Display * vo_Display,Window w,int d )
{
+
+#if 1
+ XSetWindowAttributes attr;
+ attr.override_redirect = True;
+ XChangeWindowAttributes(vo_Display, w, CWOverrideRedirect, &attr);
+// XMapWindow(vo_Display], w);
+#endif
+
vo_MotifHints=XInternAtom( vo_Display,"_MOTIF_WM_HINTS",0 );
if ( vo_MotifHints != None )
{
@@ -159,6 +175,13 @@ void vo_x11_decoration( Display * vo_Display,Window w,int d )
}
}
+void vo_x11_classhint( Display * display,Window window,char *name ){
+ XClassHint wmClass;
+ wmClass.res_name = name;
+ wmClass.res_class = "MPlayer";
+ XSetClassHint(display,window,&wmClass);
+}
+
#ifdef HAVE_GUI
Window vo_window = None;
GC vo_gc;