Mercurial > mplayer.hg
annotate libvo/x11_common.c @ 7946:f483ab704252
postprocessing cleanup:
remove opendivx #ifdefs
remove rk1 filter
remove unused / obsolete stuff
add -1,4,2,4,-1 deinterlacing filter (ffmpeg uses that)
threadsafe / no more non-const globals
some optimizations
different strides for Y,U,V possible
remove ebx usage (someone really should fix gcc, this is really lame)
change the dering filter slightly (tell me if its worse for any files)
author | michael |
---|---|
date | Mon, 28 Oct 2002 19:31:04 +0000 |
parents | 52171f231d4d |
children | 143d730908ae |
rev | line source |
---|---|
448
198b46b739d8
qrva eletbe nem kene cvs-t elbaszni inkabb ne nyuljatok hozza baz+
arpi_esp
parents:
440
diff
changeset
|
1 |
32 | 2 #include <stdio.h> |
3 #include <stdlib.h> | |
6401 | 4 #include <inttypes.h> |
448
198b46b739d8
qrva eletbe nem kene cvs-t elbaszni inkabb ne nyuljatok hozza baz+
arpi_esp
parents:
440
diff
changeset
|
5 |
198b46b739d8
qrva eletbe nem kene cvs-t elbaszni inkabb ne nyuljatok hozza baz+
arpi_esp
parents:
440
diff
changeset
|
6 #include "config.h" |
5998 | 7 #include "mp_msg.h" |
6401 | 8 #include "x11_common.h" |
448
198b46b739d8
qrva eletbe nem kene cvs-t elbaszni inkabb ne nyuljatok hozza baz+
arpi_esp
parents:
440
diff
changeset
|
9 |
198b46b739d8
qrva eletbe nem kene cvs-t elbaszni inkabb ne nyuljatok hozza baz+
arpi_esp
parents:
440
diff
changeset
|
10 #ifdef X11_FULLSCREEN |
198b46b739d8
qrva eletbe nem kene cvs-t elbaszni inkabb ne nyuljatok hozza baz+
arpi_esp
parents:
440
diff
changeset
|
11 |
440
d19a3da6ac13
Pontscho's mixer, select, and hell-a-lot-of-stuff patch ;)
gabucino
parents:
416
diff
changeset
|
12 #include <string.h> |
32 | 13 #include <unistd.h> |
14 #include <sys/mman.h> | |
15 | |
16 #include "video_out.h" | |
17 | |
324 | 18 #include <X11/Xmd.h> |
32 | 19 #include <X11/Xlib.h> |
20 #include <X11/Xutil.h> | |
21 #include <X11/Xatom.h> | |
22 | |
1345
be674b95b485
x11_common does not compile, when the XDPMS extension is not available on the
jkeil
parents:
1266
diff
changeset
|
23 #ifdef HAVE_XDPMS |
448
198b46b739d8
qrva eletbe nem kene cvs-t elbaszni inkabb ne nyuljatok hozza baz+
arpi_esp
parents:
440
diff
changeset
|
24 #include <X11/extensions/dpms.h> |
1345
be674b95b485
x11_common does not compile, when the XDPMS extension is not available on the
jkeil
parents:
1266
diff
changeset
|
25 #endif |
448
198b46b739d8
qrva eletbe nem kene cvs-t elbaszni inkabb ne nyuljatok hozza baz+
arpi_esp
parents:
440
diff
changeset
|
26 |
2149
6358db6ad3d0
Xinerama screen size fix by Lev Babiev <harley@hosers.org>
arpi
parents:
1746
diff
changeset
|
27 #ifdef HAVE_XINERAMA |
6358db6ad3d0
Xinerama screen size fix by Lev Babiev <harley@hosers.org>
arpi
parents:
1746
diff
changeset
|
28 #include <X11/extensions/Xinerama.h> |
6358db6ad3d0
Xinerama screen size fix by Lev Babiev <harley@hosers.org>
arpi
parents:
1746
diff
changeset
|
29 #endif |
1732 | 30 |
4425
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
31 #ifdef HAVE_XF86VM |
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
32 #include <X11/extensions/xf86vmode.h> |
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
33 #endif |
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
34 |
4658 | 35 #include "../input/input.h" |
36 #include "../input/mouse.h" | |
37 | |
4798 | 38 #ifdef HAVE_NEW_GUI |
39 #include "../Gui/interface.h" | |
6013
7f6e02a16ac4
some bugfix, x[11|mga|v] ( fullscreen with more files )
pontscho
parents:
6009
diff
changeset
|
40 #include "../mplayer.h" |
4798 | 41 #endif |
42 | |
5997
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
43 #define vo_wm_Unknown 0 |
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
44 #define vo_wm_NetWM 1 |
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
45 #define vo_wm_KDE 2 |
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
46 #define vo_wm_IceWM 3 |
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
47 #define vo_wm_WMakerStyle 4 |
1732 | 48 |
6202 | 49 int ice_layer=12; |
6303 | 50 int stop_xscreensaver=0; |
6202 | 51 |
4812 | 52 extern int verbose; |
1456
8c57a5a3c645
printfs cleanup - moved to higher -v level or moved to stderr
arpi
parents:
1447
diff
changeset
|
53 |
324 | 54 static int dpms_disabled=0; |
55 static int timeout_save=0; | |
6303 | 56 static int xscreensaver_was_running=0; |
324 | 57 |
922
db06ae8967eb
Centralized and cleaned up X11 connecting, fixed remote X11 playing, -display option for mplayer. SHOULD BE TESTED.
lgb
parents:
741
diff
changeset
|
58 char* mDisplayName=NULL; |
6111
582960ab7cc7
Workaround the bug in x11 vo's (if it's one) wich let a window in the way
albeu
parents:
6095
diff
changeset
|
59 Display* mDisplay=NULL; |
922
db06ae8967eb
Centralized and cleaned up X11 connecting, fixed remote X11 playing, -display option for mplayer. SHOULD BE TESTED.
lgb
parents:
741
diff
changeset
|
60 Window mRootWin; |
db06ae8967eb
Centralized and cleaned up X11 connecting, fixed remote X11 playing, -display option for mplayer. SHOULD BE TESTED.
lgb
parents:
741
diff
changeset
|
61 int mScreen; |
db06ae8967eb
Centralized and cleaned up X11 connecting, fixed remote X11 playing, -display option for mplayer. SHOULD BE TESTED.
lgb
parents:
741
diff
changeset
|
62 int mLocalDisplay; |
db06ae8967eb
Centralized and cleaned up X11 connecting, fixed remote X11 playing, -display option for mplayer. SHOULD BE TESTED.
lgb
parents:
741
diff
changeset
|
63 |
3830 | 64 /* output window id */ |
65 int WinID=-1; | |
5955
caac20b1ca79
fix xmga fs, resize to movie size and mouse auto hide + dga
pontscho
parents:
5919
diff
changeset
|
66 int vo_mouse_autohide = 0; |
6089 | 67 int vo_wm_type = -1; |
384 | 68 |
7435 | 69 static int vo_old_x = 0; |
70 static int vo_old_y = 0; | |
71 static int vo_old_width = 0; | |
72 static int vo_old_height = 0; | |
73 | |
74 | |
4017 | 75 #ifdef HAVE_XINERAMA |
76 int xinerama_screen = 0; | |
77 int xinerama_x = 0; | |
78 int xinerama_y = 0; | |
79 #endif | |
4425
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
80 #ifdef HAVE_XF86VM |
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
81 XF86VidModeModeInfo **vidmodes=NULL; |
4977
7b65a4f0b74e
vm pecs applied from daniel carter <hedonist@win.co.nz>
pontscho
parents:
4974
diff
changeset
|
82 XF86VidModeModeLine modeline; |
4425
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
83 #endif |
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
84 |
384 | 85 void vo_hidecursor ( Display *disp , Window win ) |
86 { | |
458
49b0474b2e26
I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents:
456
diff
changeset
|
87 Cursor no_ptr; |
49b0474b2e26
I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents:
456
diff
changeset
|
88 Pixmap bm_no; |
49b0474b2e26
I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents:
456
diff
changeset
|
89 XColor black,dummy; |
49b0474b2e26
I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents:
456
diff
changeset
|
90 Colormap colormap; |
49b0474b2e26
I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents:
456
diff
changeset
|
91 static unsigned char bm_no_data[] = { 0,0,0,0, 0,0,0,0 }; |
3954 | 92 |
93 if(WinID==0) return; // do not hide, if we're playing at rootwin | |
458
49b0474b2e26
I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents:
456
diff
changeset
|
94 |
49b0474b2e26
I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents:
456
diff
changeset
|
95 colormap = DefaultColormap(disp,DefaultScreen(disp)); |
49b0474b2e26
I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents:
456
diff
changeset
|
96 XAllocNamedColor(disp,colormap,"black",&black,&dummy); |
49b0474b2e26
I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents:
456
diff
changeset
|
97 bm_no = XCreateBitmapFromData(disp, win, bm_no_data, 8,8); |
49b0474b2e26
I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents:
456
diff
changeset
|
98 no_ptr=XCreatePixmapCursor(disp, bm_no, bm_no,&black, &black,0, 0); |
49b0474b2e26
I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents:
456
diff
changeset
|
99 XDefineCursor(disp,win,no_ptr); |
5651
b8d8d72776f2
fix playlist bug with gui and rewrite mousecursor show/hide code
pontscho
parents:
5538
diff
changeset
|
100 XFreeCursor( disp,no_ptr ); |
384 | 101 } |
102 | |
5651
b8d8d72776f2
fix playlist bug with gui and rewrite mousecursor show/hide code
pontscho
parents:
5538
diff
changeset
|
103 void vo_showcursor( Display *disp, Window win ) |
5955
caac20b1ca79
fix xmga fs, resize to movie size and mouse auto hide + dga
pontscho
parents:
5919
diff
changeset
|
104 { |
caac20b1ca79
fix xmga fs, resize to movie size and mouse auto hide + dga
pontscho
parents:
5919
diff
changeset
|
105 if ( WinID==0 ) return; |
caac20b1ca79
fix xmga fs, resize to movie size and mouse auto hide + dga
pontscho
parents:
5919
diff
changeset
|
106 XDefineCursor( disp,win,0 ); |
caac20b1ca79
fix xmga fs, resize to movie size and mouse auto hide + dga
pontscho
parents:
5919
diff
changeset
|
107 } |
384 | 108 |
6077 | 109 static int x11_errorhandler(Display *display, XErrorEvent *event) |
4742 | 110 { |
111 #define MSGLEN 60 | |
112 char msg[MSGLEN]; | |
113 | |
4812 | 114 XGetErrorText(display, event->error_code, (char *)&msg, MSGLEN); |
4742 | 115 |
6296 | 116 mp_msg(MSGT_VO,MSGL_ERR,"X11 error: %s\n", msg); |
4742 | 117 |
6296 | 118 mp_msg(MSGT_VO,MSGL_V,"Type: %x, display: %x, resourceid: %x, serial: %x\n", |
4742 | 119 event->type, event->display, event->resourceid, event->serial); |
6296 | 120 mp_msg(MSGT_VO,MSGL_V,"Error code: %x, request code: %x, minor code: %x\n", |
4742 | 121 event->error_code, event->request_code, event->minor_code); |
122 | |
6095 | 123 abort(); |
124 //exit_player("X11 error"); | |
4742 | 125 #undef MSGLEN |
126 } | |
1732 | 127 |
6046 | 128 int vo_wm_string_test( char * name ) |
129 { | |
130 if ( !strncmp( name,"_ICEWM_TRAY",11 ) ) | |
131 { mp_dbg( MSGT_VO,MSGL_STATUS,"[x11] Detected wm is IceWM.\n" ); return vo_wm_IceWM; } | |
132 if ( !strncmp( name,"_KDE_",5 ) ) | |
133 { mp_dbg( MSGT_VO,MSGL_STATUS,"[x11] Detected wm is KDE.\n" ); return vo_wm_KDE; } | |
134 if ( !strncmp( name,"KWM_WIN_DESKTOP",15 ) ) | |
135 { mp_dbg( MSGT_VO,MSGL_STATUS,"[x11] Detected wm is WindowMaker style.\n" ); return vo_wm_WMakerStyle; } | |
136 // fprintf(stderr,"[ws] PropertyNotify ( 0x%x ) %s ( 0x%x )\n",win,name,xev.xproperty.atom ); | |
137 return vo_wm_Unknown; | |
138 } | |
139 | |
6009 | 140 int vo_wm_detect( void ) |
141 { | |
142 Atom type; | |
143 Window win; | |
144 XEvent xev; | |
145 int c = 0; | |
146 int wm = vo_wm_Unknown; | |
147 int format; | |
148 unsigned long nitems, bytesafter; | |
149 unsigned char * args = NULL; | |
6043 | 150 char * name = NULL; |
151 | |
152 if ( WinID >= 0 ) return vo_wm_Unknown; | |
153 | |
6009 | 154 #if 1 |
155 // --- netwm | |
156 type=XInternAtom( mDisplay,"_NET_SUPPORTED",False ); | |
6164
aee9c32349a9
applied 64bit patch from Ulrich Hecht <uli at suse dot de>
alex
parents:
6140
diff
changeset
|
157 if ( Success == XGetWindowProperty( mDisplay,mRootWin,type,0,16384,False,AnyPropertyType,&type,&format,&nitems,&bytesafter,&args ) && nitems > 0 ) |
6009 | 158 { |
6043 | 159 mp_dbg( MSGT_VO,MSGL_STATUS,"[x11] Detected wm is of class NetWM.\n" ); |
6009 | 160 XFree( args ); |
161 return vo_wm_NetWM; | |
162 } | |
163 #endif | |
164 // --- other wm | |
165 mp_dbg( MSGT_VO,MSGL_STATUS,"[x11] Create window for WM detect ...\n" ); | |
166 win=XCreateSimpleWindow( mDisplay,mRootWin,vo_screenwidth,vo_screenheight,1,1,0,0,0 ); | |
167 XSelectInput( mDisplay,win,PropertyChangeMask | StructureNotifyMask ); | |
168 XMapWindow( mDisplay,win ); | |
169 XMoveWindow( mDisplay,win,vo_screenwidth,vo_screenheight ); | |
170 do | |
171 { | |
172 XCheckWindowEvent( mDisplay,win,PropertyChangeMask | StructureNotifyMask,&xev ); | |
173 | |
174 if ( xev.type == PropertyNotify ) | |
175 { | |
6043 | 176 name=XGetAtomName( mDisplay,xev.xproperty.atom ); |
6009 | 177 if ( !name ) break; |
178 | |
6046 | 179 wm=vo_wm_string_test( name ); |
180 if ( wm != vo_wm_Unknown ) break; | |
6043 | 181 XFree( name ); name=NULL; |
6009 | 182 } |
183 } while( c++ < 25 ); | |
6043 | 184 if ( name ) XFree( name ); |
6089 | 185 XUnmapWindow( mDisplay,win ); |
6009 | 186 XDestroyWindow( mDisplay,win ); |
187 #ifdef MP_DEBUG | |
188 if ( wm == vo_wm_Unknown ) mp_dbg( MSGT_VO,MSGL_STATUS,"[x11] Unknown wm type...\n" ); | |
189 #endif | |
190 return wm; | |
191 } | |
192 | |
32 | 193 int vo_init( void ) |
194 { | |
922
db06ae8967eb
Centralized and cleaned up X11 connecting, fixed remote X11 playing, -display option for mplayer. SHOULD BE TESTED.
lgb
parents:
741
diff
changeset
|
195 // int mScreen; |
1732 | 196 int depth, bpp; |
1137
4c7b219e126c
patch: some X11 compliance fixed: set ClassHint and better fullscreen mode
arpi_esp
parents:
1109
diff
changeset
|
197 unsigned int mask; |
922
db06ae8967eb
Centralized and cleaned up X11 connecting, fixed remote X11 playing, -display option for mplayer. SHOULD BE TESTED.
lgb
parents:
741
diff
changeset
|
198 // char * DisplayName = ":0.0"; |
db06ae8967eb
Centralized and cleaned up X11 connecting, fixed remote X11 playing, -display option for mplayer. SHOULD BE TESTED.
lgb
parents:
741
diff
changeset
|
199 // Display * mDisplay; |
1732 | 200 XImage * mXImage = NULL; |
922
db06ae8967eb
Centralized and cleaned up X11 connecting, fixed remote X11 playing, -display option for mplayer. SHOULD BE TESTED.
lgb
parents:
741
diff
changeset
|
201 // Window mRootWin; |
1732 | 202 XWindowAttributes attribs; |
4815
178b524e5213
Bugfix in x11_common.c mainly. Don't screw up the display name,
albeu
parents:
4812
diff
changeset
|
203 char* dispName; |
32 | 204 |
205 if(vo_depthonscreen) return 1; // already called | |
206 | |
4812 | 207 XSetErrorHandler(x11_errorhandler); |
208 | |
209 #if 0 | |
922
db06ae8967eb
Centralized and cleaned up X11 connecting, fixed remote X11 playing, -display option for mplayer. SHOULD BE TESTED.
lgb
parents:
741
diff
changeset
|
210 if (!mDisplayName) |
db06ae8967eb
Centralized and cleaned up X11 connecting, fixed remote X11 playing, -display option for mplayer. SHOULD BE TESTED.
lgb
parents:
741
diff
changeset
|
211 if (!(mDisplayName=getenv("DISPLAY"))) |
db06ae8967eb
Centralized and cleaned up X11 connecting, fixed remote X11 playing, -display option for mplayer. SHOULD BE TESTED.
lgb
parents:
741
diff
changeset
|
212 mDisplayName=strdup(":0.0"); |
4812 | 213 #else |
4815
178b524e5213
Bugfix in x11_common.c mainly. Don't screw up the display name,
albeu
parents:
4812
diff
changeset
|
214 dispName = XDisplayName(mDisplayName); |
4812 | 215 #endif |
216 | |
6296 | 217 mp_msg(MSGT_VO,MSGL_V,"X11 opening display: %s\n", dispName); |
922
db06ae8967eb
Centralized and cleaned up X11 connecting, fixed remote X11 playing, -display option for mplayer. SHOULD BE TESTED.
lgb
parents:
741
diff
changeset
|
218 |
4815
178b524e5213
Bugfix in x11_common.c mainly. Don't screw up the display name,
albeu
parents:
4812
diff
changeset
|
219 mDisplay=XOpenDisplay(dispName); |
32 | 220 if ( !mDisplay ) |
221 { | |
6296 | 222 mp_msg(MSGT_VO,MSGL_ERR,"vo: couldn't open the X11 display (%s)!\n",dispName ); |
32 | 223 return 0; |
224 } | |
225 mScreen=DefaultScreen( mDisplay ); // Screen ID. | |
226 mRootWin=RootWindow( mDisplay,mScreen );// Root window ID. | |
2149
6358db6ad3d0
Xinerama screen size fix by Lev Babiev <harley@hosers.org>
arpi
parents:
1746
diff
changeset
|
227 |
6358db6ad3d0
Xinerama screen size fix by Lev Babiev <harley@hosers.org>
arpi
parents:
1746
diff
changeset
|
228 #ifdef HAVE_XINERAMA |
6358db6ad3d0
Xinerama screen size fix by Lev Babiev <harley@hosers.org>
arpi
parents:
1746
diff
changeset
|
229 if(XineramaIsActive(mDisplay)) |
6358db6ad3d0
Xinerama screen size fix by Lev Babiev <harley@hosers.org>
arpi
parents:
1746
diff
changeset
|
230 { |
6358db6ad3d0
Xinerama screen size fix by Lev Babiev <harley@hosers.org>
arpi
parents:
1746
diff
changeset
|
231 XineramaScreenInfo *screens; |
6358db6ad3d0
Xinerama screen size fix by Lev Babiev <harley@hosers.org>
arpi
parents:
1746
diff
changeset
|
232 int num_screens; |
3990 | 233 |
2149
6358db6ad3d0
Xinerama screen size fix by Lev Babiev <harley@hosers.org>
arpi
parents:
1746
diff
changeset
|
234 screens = XineramaQueryScreens(mDisplay, &num_screens); |
4017 | 235 if(xinerama_screen >= num_screens) xinerama_screen = 0; |
3461
6b4ff1eb79bf
xinerama: allow to override xinerama screen_w/screen_h and setting size of screen where the window is placed
alex
parents:
2364
diff
changeset
|
236 if (! vo_screenwidth) |
4017 | 237 vo_screenwidth=screens[xinerama_screen].width; |
3461
6b4ff1eb79bf
xinerama: allow to override xinerama screen_w/screen_h and setting size of screen where the window is placed
alex
parents:
2364
diff
changeset
|
238 if (! vo_screenheight) |
4017 | 239 vo_screenheight=screens[xinerama_screen].height; |
240 xinerama_x = screens[xinerama_screen].x_org; | |
241 xinerama_y = screens[xinerama_screen].y_org; | |
242 | |
3990 | 243 XFree(screens); |
2149
6358db6ad3d0
Xinerama screen size fix by Lev Babiev <harley@hosers.org>
arpi
parents:
1746
diff
changeset
|
244 } |
6358db6ad3d0
Xinerama screen size fix by Lev Babiev <harley@hosers.org>
arpi
parents:
1746
diff
changeset
|
245 else |
6358db6ad3d0
Xinerama screen size fix by Lev Babiev <harley@hosers.org>
arpi
parents:
1746
diff
changeset
|
246 #endif |
4977
7b65a4f0b74e
vm pecs applied from daniel carter <hedonist@win.co.nz>
pontscho
parents:
4974
diff
changeset
|
247 #ifdef HAVE_XF86VM |
7b65a4f0b74e
vm pecs applied from daniel carter <hedonist@win.co.nz>
pontscho
parents:
4974
diff
changeset
|
248 { |
7b65a4f0b74e
vm pecs applied from daniel carter <hedonist@win.co.nz>
pontscho
parents:
4974
diff
changeset
|
249 int clock; |
7b65a4f0b74e
vm pecs applied from daniel carter <hedonist@win.co.nz>
pontscho
parents:
4974
diff
changeset
|
250 XF86VidModeGetModeLine( mDisplay,mScreen,&clock ,&modeline ); |
7b65a4f0b74e
vm pecs applied from daniel carter <hedonist@win.co.nz>
pontscho
parents:
4974
diff
changeset
|
251 if ( !vo_screenwidth ) vo_screenwidth=modeline.hdisplay; |
7b65a4f0b74e
vm pecs applied from daniel carter <hedonist@win.co.nz>
pontscho
parents:
4974
diff
changeset
|
252 if ( !vo_screenheight ) vo_screenheight=modeline.vdisplay; |
7b65a4f0b74e
vm pecs applied from daniel carter <hedonist@win.co.nz>
pontscho
parents:
4974
diff
changeset
|
253 } |
7b65a4f0b74e
vm pecs applied from daniel carter <hedonist@win.co.nz>
pontscho
parents:
4974
diff
changeset
|
254 #endif |
2149
6358db6ad3d0
Xinerama screen size fix by Lev Babiev <harley@hosers.org>
arpi
parents:
1746
diff
changeset
|
255 { |
2364 | 256 if (! vo_screenwidth) |
257 vo_screenwidth=DisplayWidth( mDisplay,mScreen ); | |
258 if (! vo_screenheight) | |
259 vo_screenheight=DisplayHeight( mDisplay,mScreen ); | |
2149
6358db6ad3d0
Xinerama screen size fix by Lev Babiev <harley@hosers.org>
arpi
parents:
1746
diff
changeset
|
260 } |
1732 | 261 // get color depth (from root window, or the best visual): |
32 | 262 XGetWindowAttributes(mDisplay, mRootWin, &attribs); |
1732 | 263 depth=attribs.depth; |
264 | |
265 if (depth != 15 && depth != 16 && depth != 24 && depth != 32) { | |
266 Visual *visual; | |
267 | |
268 depth = vo_find_depth_from_visuals(mDisplay, mScreen, &visual); | |
269 if (depth != -1) | |
270 mXImage=XCreateImage(mDisplay, visual, depth, ZPixmap, | |
271 0, NULL, 1, 1, 8, 1); | |
272 } else | |
7256
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
273 mXImage=XGetImage( mDisplay,mRootWin,0,0,1,1,AllPlanes,ZPixmap ); |
1732 | 274 |
275 vo_depthonscreen = depth; // display depth on screen | |
276 | |
277 // get bits/pixel from XImage structure: | |
278 if (mXImage == NULL) { | |
279 mask = 0; | |
280 } else { | |
281 /* | |
282 * for the depth==24 case, the XImage structures might use | |
283 * 24 or 32 bits of data per pixel. The global variable | |
284 * vo_depthonscreen stores the amount of data per pixel in the | |
285 * XImage structure! | |
286 * | |
287 * Maybe we should rename vo_depthonscreen to (or add) vo_bpp? | |
288 */ | |
32 | 289 bpp=mXImage->bits_per_pixel; |
1137
4c7b219e126c
patch: some X11 compliance fixed: set ClassHint and better fullscreen mode
arpi_esp
parents:
1109
diff
changeset
|
290 if((vo_depthonscreen+7)/8 != (bpp+7)/8) vo_depthonscreen=bpp; // by A'rpi |
4c7b219e126c
patch: some X11 compliance fixed: set ClassHint and better fullscreen mode
arpi_esp
parents:
1109
diff
changeset
|
291 mask=mXImage->red_mask|mXImage->green_mask|mXImage->blue_mask; |
6296 | 292 mp_msg(MSGT_VO,MSGL_V,"vo: X11 color mask: %X (R:%lX G:%lX B:%lX)\n", |
1732 | 293 mask,mXImage->red_mask,mXImage->green_mask,mXImage->blue_mask); |
4181 | 294 XDestroyImage( mXImage ); |
1732 | 295 } |
296 if(((vo_depthonscreen+7)/8)==2){ | |
297 if(mask==0x7FFF) vo_depthonscreen=15; else | |
298 if(mask==0xFFFF) vo_depthonscreen=16; | |
299 } | |
922
db06ae8967eb
Centralized and cleaned up X11 connecting, fixed remote X11 playing, -display option for mplayer. SHOULD BE TESTED.
lgb
parents:
741
diff
changeset
|
300 // XCloseDisplay( mDisplay ); |
1447
e82fbd67ae60
better local display connection patch by Adam Tla/lka atlka@pg.gda.pl
arpi
parents:
1415
diff
changeset
|
301 /* slightly improved local display detection AST */ |
4815
178b524e5213
Bugfix in x11_common.c mainly. Don't screw up the display name,
albeu
parents:
4812
diff
changeset
|
302 if ( strncmp(dispName, "unix:", 5) == 0) |
178b524e5213
Bugfix in x11_common.c mainly. Don't screw up the display name,
albeu
parents:
4812
diff
changeset
|
303 dispName += 4; |
178b524e5213
Bugfix in x11_common.c mainly. Don't screw up the display name,
albeu
parents:
4812
diff
changeset
|
304 else if ( strncmp(dispName, "localhost:", 10) == 0) |
178b524e5213
Bugfix in x11_common.c mainly. Don't screw up the display name,
albeu
parents:
4812
diff
changeset
|
305 dispName += 9; |
7492
5465cbd5c5ef
Modern versions of OpenSSH listen on localhost to forward the X11 connection
arpi
parents:
7435
diff
changeset
|
306 if (*dispName==':' && atoi(dispName+1)<10) mLocalDisplay=1; else mLocalDisplay=0; |
6296 | 307 mp_msg(MSGT_VO,MSGL_INFO,"vo: X11 running at %dx%d with depth %d and %d bpp (\"%s\" => %s display)\n", |
1732 | 308 vo_screenwidth,vo_screenheight, |
309 depth, vo_depthonscreen, | |
4815
178b524e5213
Bugfix in x11_common.c mainly. Don't screw up the display name,
albeu
parents:
4812
diff
changeset
|
310 dispName,mLocalDisplay?"local":"remote"); |
5997
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
311 |
6009 | 312 vo_wm_type=vo_wm_detect(); |
5997
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
313 |
7111 | 314 saver_off(mDisplay); |
32 | 315 return 1; |
316 } | |
317 | |
6013
7f6e02a16ac4
some bugfix, x[11|mga|v] ( fullscreen with more files )
pontscho
parents:
6009
diff
changeset
|
318 void vo_uninit( void ) |
7f6e02a16ac4
some bugfix, x[11|mga|v] ( fullscreen with more files )
pontscho
parents:
6009
diff
changeset
|
319 { |
6077 | 320 if (!mDisplay) |
321 { | |
322 mp_msg(MSGT_VO, MSGL_V, "vo: x11 uninit called but X11 not inited..\n"); | |
323 return; | |
324 } | |
325 // if( !vo_depthonscreen ) return; | |
6296 | 326 mp_msg(MSGT_VO,MSGL_V,"vo: uninit ...\n" ); |
6016 | 327 XSetErrorHandler(NULL); |
6013
7f6e02a16ac4
some bugfix, x[11|mga|v] ( fullscreen with more files )
pontscho
parents:
6009
diff
changeset
|
328 XCloseDisplay( mDisplay ); |
6016 | 329 vo_depthonscreen = 0; |
6111
582960ab7cc7
Workaround the bug in x11 vo's (if it's one) wich let a window in the way
albeu
parents:
6095
diff
changeset
|
330 mDisplay=NULL; |
6013
7f6e02a16ac4
some bugfix, x[11|mga|v] ( fullscreen with more files )
pontscho
parents:
6009
diff
changeset
|
331 } |
4436 | 332 |
32 | 333 #include "../linux/keycodes.h" |
334 #include "wskeys.h" | |
335 | |
336 extern void mplayer_put_key(int code); | |
337 | |
338 void vo_x11_putkey(int key){ | |
339 switch ( key ) | |
340 { | |
341 case wsLeft: mplayer_put_key(KEY_LEFT); break; | |
342 case wsRight: mplayer_put_key(KEY_RIGHT); break; | |
343 case wsUp: mplayer_put_key(KEY_UP); break; | |
344 case wsDown: mplayer_put_key(KEY_DOWN); break; | |
345 case wsSpace: mplayer_put_key(' '); break; | |
346 case wsEscape: mplayer_put_key(KEY_ESC); break; | |
347 case wsEnter: mplayer_put_key(KEY_ENTER); break; | |
651 | 348 case wsPageUp: mplayer_put_key(KEY_PAGE_UP); break; |
349 case wsPageDown: mplayer_put_key(KEY_PAGE_DOWN); break; | |
32 | 350 case wsq: |
351 case wsQ: mplayer_put_key('q'); break; | |
352 case wsp: | |
353 case wsP: mplayer_put_key('p'); break; | |
354 case wsMinus: | |
355 case wsGrayMinus: mplayer_put_key('-'); break; | |
356 case wsPlus: | |
357 case wsGrayPlus: mplayer_put_key('+'); break; | |
464 | 358 case wsGrayMul: |
359 case wsMul: mplayer_put_key('*'); break; | |
360 case wsGrayDiv: | |
361 case wsDiv: mplayer_put_key('/'); break; | |
3490 | 362 case wsLess: mplayer_put_key('<'); break; |
363 case wsMore: mplayer_put_key('>'); break; | |
516 | 364 case wsm: |
365 case wsM: mplayer_put_key('m'); break; | |
655 | 366 case wso: |
367 case wsO: mplayer_put_key('o'); break; | |
1501
d40f2b686846
changes according to -utf8 option, draw_osd() function added
atlka
parents:
1456
diff
changeset
|
368 default: if((key>='a' && key<='z')||(key>='A' && key<='Z')|| |
d40f2b686846
changes according to -utf8 option, draw_osd() function added
atlka
parents:
1456
diff
changeset
|
369 (key>='0' && key<='9')) mplayer_put_key(key); |
32 | 370 } |
369 | 371 |
32 | 372 } |
373 | |
374 | |
375 // ----- Motif header: ------- | |
376 | |
1236 | 377 #define MWM_HINTS_FUNCTIONS (1L << 0) |
378 #define MWM_HINTS_DECORATIONS (1L << 1) | |
379 #define MWM_HINTS_INPUT_MODE (1L << 2) | |
380 #define MWM_HINTS_STATUS (1L << 3) | |
381 | |
382 #define MWM_FUNC_ALL (1L << 0) | |
383 #define MWM_FUNC_RESIZE (1L << 1) | |
384 #define MWM_FUNC_MOVE (1L << 2) | |
385 #define MWM_FUNC_MINIMIZE (1L << 3) | |
386 #define MWM_FUNC_MAXIMIZE (1L << 4) | |
387 #define MWM_FUNC_CLOSE (1L << 5) | |
388 | |
389 #define MWM_DECOR_ALL (1L << 0) | |
390 #define MWM_DECOR_BORDER (1L << 1) | |
391 #define MWM_DECOR_RESIZEH (1L << 2) | |
392 #define MWM_DECOR_TITLE (1L << 3) | |
393 #define MWM_DECOR_MENU (1L << 4) | |
394 #define MWM_DECOR_MINIMIZE (1L << 5) | |
395 #define MWM_DECOR_MAXIMIZE (1L << 6) | |
396 | |
397 #define MWM_INPUT_MODELESS 0 | |
398 #define MWM_INPUT_PRIMARY_APPLICATION_MODAL 1 | |
399 #define MWM_INPUT_SYSTEM_MODAL 2 | |
400 #define MWM_INPUT_FULL_APPLICATION_MODAL 3 | |
401 #define MWM_INPUT_APPLICATION_MODAL MWM_INPUT_PRIMARY_APPLICATION_MODAL | |
402 | |
403 #define MWM_TEAROFF_WINDOW (1L<<0) | |
32 | 404 |
405 typedef struct | |
406 { | |
407 long flags; | |
408 long functions; | |
409 long decorations; | |
410 long input_mode; | |
1236 | 411 long state; |
32 | 412 } MotifWmHints; |
413 | |
414 extern MotifWmHints vo_MotifWmHints; | |
415 extern Atom vo_MotifHints; | |
416 extern int vo_depthonscreen; | |
417 extern int vo_screenwidth; | |
418 extern int vo_screenheight; | |
419 | |
420 static MotifWmHints vo_MotifWmHints; | |
421 static Atom vo_MotifHints = None; | |
422 | |
1266 | 423 // Note: always d==0 ! |
32 | 424 void vo_x11_decoration( Display * vo_Display,Window w,int d ) |
425 { | |
1266 | 426 |
5955
caac20b1ca79
fix xmga fs, resize to movie size and mouse auto hide + dga
pontscho
parents:
5919
diff
changeset
|
427 if ( !WinID ) return; |
caac20b1ca79
fix xmga fs, resize to movie size and mouse auto hide + dga
pontscho
parents:
5919
diff
changeset
|
428 |
1266 | 429 if(vo_fsmode&1){ |
430 XSetWindowAttributes attr; | |
5981 | 431 attr.override_redirect = (!d) ? True : False; |
1266 | 432 XChangeWindowAttributes(vo_Display, w, CWOverrideRedirect, &attr); |
4437 | 433 // XMapWindow(vo_Display, w); |
1266 | 434 } |
435 | |
1415 | 436 if(vo_fsmode&8){ |
437 XSetTransientForHint (vo_Display, w, RootWindow(vo_Display,mScreen)); | |
438 } | |
439 | |
32 | 440 vo_MotifHints=XInternAtom( vo_Display,"_MOTIF_WM_HINTS",0 ); |
441 if ( vo_MotifHints != None ) | |
442 { | |
1236 | 443 memset( &vo_MotifWmHints,0,sizeof( MotifWmHints ) ); |
444 vo_MotifWmHints.flags=MWM_HINTS_FUNCTIONS | MWM_HINTS_DECORATIONS; | |
4993 | 445 if ( d ) |
446 { | |
6059 | 447 vo_MotifWmHints.functions=MWM_FUNC_MOVE | MWM_FUNC_CLOSE | MWM_FUNC_MINIMIZE | MWM_FUNC_MAXIMIZE | MWM_FUNC_RESIZE; |
4993 | 448 d=MWM_DECOR_ALL; |
449 } | |
450 #if 0 | |
1266 | 451 vo_MotifWmHints.decorations=d|((vo_fsmode&2)?0:MWM_DECOR_MENU); |
4993 | 452 #else |
453 vo_MotifWmHints.decorations=d|((vo_fsmode&2)?MWM_DECOR_MENU:0); | |
454 #endif | |
32 | 455 XChangeProperty( vo_Display,w,vo_MotifHints,vo_MotifHints,32, |
1266 | 456 PropModeReplace,(unsigned char *)&vo_MotifWmHints,(vo_fsmode&4)?4:5 ); |
32 | 457 } |
458 } | |
459 | |
1137
4c7b219e126c
patch: some X11 compliance fixed: set ClassHint and better fullscreen mode
arpi_esp
parents:
1109
diff
changeset
|
460 void vo_x11_classhint( Display * display,Window window,char *name ){ |
4c7b219e126c
patch: some X11 compliance fixed: set ClassHint and better fullscreen mode
arpi_esp
parents:
1109
diff
changeset
|
461 XClassHint wmClass; |
6401 | 462 pid_t pid=getpid(); |
1137
4c7b219e126c
patch: some X11 compliance fixed: set ClassHint and better fullscreen mode
arpi_esp
parents:
1109
diff
changeset
|
463 wmClass.res_name = name; |
4c7b219e126c
patch: some X11 compliance fixed: set ClassHint and better fullscreen mode
arpi_esp
parents:
1109
diff
changeset
|
464 wmClass.res_class = "MPlayer"; |
4c7b219e126c
patch: some X11 compliance fixed: set ClassHint and better fullscreen mode
arpi_esp
parents:
1109
diff
changeset
|
465 XSetClassHint(display,window,&wmClass); |
6401 | 466 XChangeProperty(display,window, XInternAtom(display,"_NET_WM_PID", False), XA_CARDINAL, 32, PropModeReplace, (unsigned char *)&pid, 1); |
1137
4c7b219e126c
patch: some X11 compliance fixed: set ClassHint and better fullscreen mode
arpi_esp
parents:
1109
diff
changeset
|
467 } |
4c7b219e126c
patch: some X11 compliance fixed: set ClassHint and better fullscreen mode
arpi_esp
parents:
1109
diff
changeset
|
468 |
4993 | 469 Window vo_window = None; |
6095 | 470 GC vo_gc = NULL; |
4993 | 471 XSizeHints vo_hint; |
4795 | 472 |
1723
5e4214a7540e
GUI stuff. now seeking works, and xmga renders to video window
arpi
parents:
1501
diff
changeset
|
473 #ifdef HAVE_NEW_GUI |
5e4214a7540e
GUI stuff. now seeking works, and xmga renders to video window
arpi
parents:
1501
diff
changeset
|
474 void vo_setwindow( Window w,GC g ) { |
5e4214a7540e
GUI stuff. now seeking works, and xmga renders to video window
arpi
parents:
1501
diff
changeset
|
475 vo_window=w; vo_gc=g; |
1746 | 476 } |
723 | 477 #endif |
478 | |
6095 | 479 void vo_x11_uninit() |
4437 | 480 { |
7111 | 481 saver_on(mDisplay); |
6095 | 482 if(vo_window!=None) vo_showcursor( mDisplay,vo_window ); |
4742 | 483 |
4437 | 484 #ifdef HAVE_NEW_GUI |
485 /* destroy window only if it's not controlled by GUI */ | |
6013
7f6e02a16ac4
some bugfix, x[11|mga|v] ( fullscreen with more files )
pontscho
parents:
6009
diff
changeset
|
486 if ( !use_gui ) |
4437 | 487 #endif |
488 { | |
6095 | 489 if(vo_gc){ |
490 XSetBackground( mDisplay,vo_gc,0 ); | |
7766 | 491 XFreeGC( mDisplay,vo_gc ); |
6095 | 492 vo_gc=NULL; |
493 } | |
494 if(vo_window!=None){ | |
495 XClearWindow( mDisplay,vo_window ); | |
496 if (WinID < 0){ | |
6179 | 497 XEvent xev; |
6095 | 498 XUnmapWindow( mDisplay,vo_window ); |
499 XDestroyWindow(mDisplay, vo_window); | |
6179 | 500 do { XNextEvent( mDisplay,&xev ); } while ( xev.type != DestroyNotify || xev.xdestroywindow.event != vo_window ); |
6095 | 501 } |
502 vo_window=None; | |
503 } | |
6013
7f6e02a16ac4
some bugfix, x[11|mga|v] ( fullscreen with more files )
pontscho
parents:
6009
diff
changeset
|
504 vo_fs=0; |
7435 | 505 vo_old_width=vo_old_height=0; |
4437 | 506 } |
507 } | |
508 | |
5651
b8d8d72776f2
fix playlist bug with gui and rewrite mousecursor show/hide code
pontscho
parents:
5538
diff
changeset
|
509 int vo_mouse_timer_const = 30; |
b8d8d72776f2
fix playlist bug with gui and rewrite mousecursor show/hide code
pontscho
parents:
5538
diff
changeset
|
510 static int vo_mouse_counter = 30; |
b8d8d72776f2
fix playlist bug with gui and rewrite mousecursor show/hide code
pontscho
parents:
5538
diff
changeset
|
511 |
32 | 512 int vo_x11_check_events(Display *mydisplay){ |
513 int ret=0; | |
514 XEvent Event; | |
515 char buf[100]; | |
516 KeySym keySym; | |
1038
b36fb1ae4b53
applied solaris8/netbsd/other fixes patch by Jrgen Keil <jk@tools.de>
arpi_esp
parents:
922
diff
changeset
|
517 static XComposeStatus stat; |
5651
b8d8d72776f2
fix playlist bug with gui and rewrite mousecursor show/hide code
pontscho
parents:
5538
diff
changeset
|
518 |
32 | 519 // unsigned long vo_KeyTable[512]; |
520 | |
5955
caac20b1ca79
fix xmga fs, resize to movie size and mouse auto hide + dga
pontscho
parents:
5919
diff
changeset
|
521 if ( ( vo_mouse_autohide )&&( --vo_mouse_counter == 0 ) ) vo_hidecursor( mydisplay,vo_window ); |
6095 | 522 |
4795 | 523 while ( XPending( mydisplay ) ) |
524 { | |
525 XNextEvent( mydisplay,&Event ); | |
4798 | 526 #ifdef HAVE_NEW_GUI |
5061 | 527 if ( use_gui ) |
528 { | |
529 guiGetEvent( 0,(char*)&Event ); | |
530 if ( vo_window != Event.xany.window ) continue; | |
531 } | |
4798 | 532 #endif |
6095 | 533 // printf("\rEvent.type=%X \n",Event.type); |
4795 | 534 switch( Event.type ) |
535 { | |
536 case Expose: | |
537 ret|=VO_EVENT_EXPOSE; | |
538 break; | |
539 case ConfigureNotify: | |
7435 | 540 // if (!vo_fs && (Event.xconfigure.width == vo_screenwidth || Event.xconfigure.height == vo_screenheight)) break; |
541 // if (vo_fs && Event.xconfigure.width != vo_screenwidth && Event.xconfigure.height != vo_screenheight) break; | |
4795 | 542 vo_dwidth=Event.xconfigure.width; |
543 vo_dheight=Event.xconfigure.height; | |
4812 | 544 #if 0 |
545 /* when resizing, x and y are zero :( */ | |
546 vo_dx=Event.xconfigure.x; | |
547 vo_dy=Event.xconfigure.y; | |
548 #else | |
549 { | |
550 Window root; | |
551 int foo; | |
6140
44dcc49a0d80
64bit incompatibility bug, patch by Artur Grabowski <art@blahonga.org>
arpi
parents:
6111
diff
changeset
|
552 Window win; |
4812 | 553 XGetGeometry(mydisplay, vo_window, &root, &foo, &foo, |
554 &foo/*width*/, &foo/*height*/, &foo, &foo); | |
555 XTranslateCoordinates(mydisplay, vo_window, root, 0, 0, | |
6140
44dcc49a0d80
64bit incompatibility bug, patch by Artur Grabowski <art@blahonga.org>
arpi
parents:
6111
diff
changeset
|
556 &vo_dx, &vo_dy, &win); |
4812 | 557 } |
558 #endif | |
4795 | 559 ret|=VO_EVENT_RESIZE; |
560 break; | |
561 case KeyPress: | |
4974 | 562 { |
563 int key; | |
564 XLookupString( &Event.xkey,buf,sizeof(buf),&keySym,&stat ); | |
565 key=( (keySym&0xff00) != 0?( (keySym&0x00ff) + 256 ):( keySym ) ); | |
566 #ifdef HAVE_NEW_GUI | |
567 if ( ( use_gui )&&( key == wsEnter ) ) break; | |
568 #endif | |
569 vo_x11_putkey( key ); | |
570 ret|=VO_EVENT_KEYPRESS; | |
571 } | |
4795 | 572 break; |
5651
b8d8d72776f2
fix playlist bug with gui and rewrite mousecursor show/hide code
pontscho
parents:
5538
diff
changeset
|
573 case MotionNotify: |
5955
caac20b1ca79
fix xmga fs, resize to movie size and mouse auto hide + dga
pontscho
parents:
5919
diff
changeset
|
574 if ( vo_mouse_autohide ) { vo_showcursor( mydisplay,vo_window ); vo_mouse_counter=vo_mouse_timer_const; } |
5651
b8d8d72776f2
fix playlist bug with gui and rewrite mousecursor show/hide code
pontscho
parents:
5538
diff
changeset
|
575 break; |
4795 | 576 case ButtonPress: |
5955
caac20b1ca79
fix xmga fs, resize to movie size and mouse auto hide + dga
pontscho
parents:
5919
diff
changeset
|
577 if ( vo_mouse_autohide ) { vo_showcursor( mydisplay,vo_window ); vo_mouse_counter=vo_mouse_timer_const; } |
4795 | 578 // Ignore mouse whell press event |
5656
70031f0cc4d2
Bug fix in mouse button handling for 2 scroller (I hope it work
albeu
parents:
5651
diff
changeset
|
579 if(Event.xbutton.button > 3) { |
70031f0cc4d2
Bug fix in mouse button handling for 2 scroller (I hope it work
albeu
parents:
5651
diff
changeset
|
580 mplayer_put_key(MOUSE_BTN0+Event.xbutton.button-1); |
70031f0cc4d2
Bug fix in mouse button handling for 2 scroller (I hope it work
albeu
parents:
5651
diff
changeset
|
581 break; |
70031f0cc4d2
Bug fix in mouse button handling for 2 scroller (I hope it work
albeu
parents:
5651
diff
changeset
|
582 } |
5062 | 583 #ifdef HAVE_NEW_GUI |
584 // Ignor mouse button 1 - 3 under gui | |
585 if ( use_gui && ( Event.xbutton.button >= 1 )&&( Event.xbutton.button <= 3 ) ) break; | |
586 #endif | |
4795 | 587 mplayer_put_key((MOUSE_BTN0+Event.xbutton.button-1)|MP_KEY_DOWN); |
588 break; | |
589 case ButtonRelease: | |
5955
caac20b1ca79
fix xmga fs, resize to movie size and mouse auto hide + dga
pontscho
parents:
5919
diff
changeset
|
590 if ( vo_mouse_autohide ) { vo_showcursor( mydisplay,vo_window ); vo_mouse_counter=vo_mouse_timer_const; } |
5062 | 591 #ifdef HAVE_NEW_GUI |
592 // Ignor mouse button 1 - 3 under gui | |
593 if ( use_gui && ( Event.xbutton.button >= 1 )&&( Event.xbutton.button <= 3 ) ) break; | |
594 #endif | |
4795 | 595 mplayer_put_key(MOUSE_BTN0+Event.xbutton.button-1); |
596 break; | |
5835 | 597 case PropertyNotify: |
5910
20c335d98ab3
fix fullscreen bug es ilyen libvo not initialized bug with gui igy
pontscho
parents:
5835
diff
changeset
|
598 { |
20c335d98ab3
fix fullscreen bug es ilyen libvo not initialized bug with gui igy
pontscho
parents:
5835
diff
changeset
|
599 char * name = XGetAtomName( mydisplay,Event.xproperty.atom ); |
6046 | 600 int wm = vo_wm_Unknown; |
601 | |
5910
20c335d98ab3
fix fullscreen bug es ilyen libvo not initialized bug with gui igy
pontscho
parents:
5835
diff
changeset
|
602 if ( !name ) break; |
5997
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
603 |
6046 | 604 wm=vo_wm_string_test(name); |
605 if ( wm != vo_wm_Unknown ) vo_wm_type=wm; | |
5997
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
606 |
6046 | 607 // fprintf(stderr,"[ws] PropertyNotify ( 0x%x ) %s ( 0x%x )\n",vo_window,name,Event.xproperty.atom ); |
5910
20c335d98ab3
fix fullscreen bug es ilyen libvo not initialized bug with gui igy
pontscho
parents:
5835
diff
changeset
|
608 |
20c335d98ab3
fix fullscreen bug es ilyen libvo not initialized bug with gui igy
pontscho
parents:
5835
diff
changeset
|
609 XFree( name ); |
20c335d98ab3
fix fullscreen bug es ilyen libvo not initialized bug with gui igy
pontscho
parents:
5835
diff
changeset
|
610 } |
5835 | 611 break; |
723 | 612 } |
4795 | 613 } |
32 | 614 return ret; |
615 } | |
616 | |
5835 | 617 void vo_x11_sizehint( int x, int y, int width, int height, int max ) |
4993 | 618 { |
6046 | 619 vo_hint.flags=PPosition | PSize | PWinGravity; |
4993 | 620 vo_hint.x=x; vo_hint.y=y; vo_hint.width=width; vo_hint.height=height; |
5835 | 621 if ( max ) |
622 { | |
623 vo_hint.max_width=width; vo_hint.max_height=height; | |
624 vo_hint.flags|=PMaxSize; | |
625 } else { vo_hint.max_width=0; vo_hint.max_height=0; } | |
4993 | 626 vo_hint.win_gravity=StaticGravity; |
627 XSetWMNormalHints( mDisplay,vo_window,&vo_hint ); | |
628 } | |
629 | |
5997
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
630 #define WIN_LAYER_ONBOTTOM 2 |
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
631 #define WIN_LAYER_NORMAL 4 |
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
632 #define WIN_LAYER_ONTOP 6 |
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
633 |
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
634 void vo_x11_setlayer( int layer ) |
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
635 { |
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
636 Atom type; |
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
637 int format; |
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
638 unsigned long nitems, bytesafter; |
7747 | 639 Atom * args = NULL; |
5997
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
640 |
6034
7570f4666c15
fullscreen -- round three -- icewm fullscreen fixed
pontscho
parents:
6016
diff
changeset
|
641 if ( WinID >= 0 ) return; |
7570f4666c15
fullscreen -- round three -- icewm fullscreen fixed
pontscho
parents:
6016
diff
changeset
|
642 |
7570f4666c15
fullscreen -- round three -- icewm fullscreen fixed
pontscho
parents:
6016
diff
changeset
|
643 if ( vo_wm_type == vo_wm_IceWM ) |
7570f4666c15
fullscreen -- round three -- icewm fullscreen fixed
pontscho
parents:
6016
diff
changeset
|
644 { |
6202 | 645 XClientMessageEvent xev; |
646 memset(&xev, 0, sizeof(xev)); | |
647 xev.type = ClientMessage; | |
648 xev.window = vo_window; | |
649 xev.message_type = XInternAtom(mDisplay, "_WIN_LAYER", False); | |
650 xev.format = 32; | |
651 xev.data.l[0] = layer?ice_layer:4; // if not fullscreen, stay on layer "Normal" | |
652 xev.data.l[1] = CurrentTime; | |
653 mp_dbg( MSGT_VO,MSGL_STATUS,"[x11] IceWM style stay on top ( layer %d ).\n",xev.data.l[0] ); | |
654 XSendEvent(mDisplay, mRootWin, False, SubstructureNotifyMask, (XEvent *) &xev); | |
6034
7570f4666c15
fullscreen -- round three -- icewm fullscreen fixed
pontscho
parents:
6016
diff
changeset
|
655 return; |
7570f4666c15
fullscreen -- round three -- icewm fullscreen fixed
pontscho
parents:
6016
diff
changeset
|
656 } |
5997
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
657 |
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
658 type=XInternAtom( mDisplay,"_NET_SUPPORTED",False ); |
7747 | 659 if ( Success == XGetWindowProperty( mDisplay,mRootWin,type,0,16384,False,AnyPropertyType,&type,&format,&nitems,&bytesafter,(unsigned char**)(&args) ) && nitems > 0 ) |
5997
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
660 { |
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
661 XEvent e; |
7572 | 662 int i; |
5997
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
663 |
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
664 mp_dbg( MSGT_VO,MSGL_STATUS,"[x11] NET style stay on top ( layer %d ).\n",layer ); |
6034
7570f4666c15
fullscreen -- round three -- icewm fullscreen fixed
pontscho
parents:
6016
diff
changeset
|
665 memset( &e,0,sizeof( e ) ); |
5997
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
666 e.xclient.type=ClientMessage; |
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
667 e.xclient.message_type=XInternAtom( mDisplay,"_NET_WM_STATE",False ); |
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
668 e.xclient.display=mDisplay; |
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
669 e.xclient.window=vo_window; |
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
670 e.xclient.format=32; |
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
671 e.xclient.data.l[0]=layer; |
7572 | 672 |
7544
544c0974b6d9
Fix kde 3.1 fullscreen issues, closes my latest bugreport on that issue.
atmos4
parents:
7542
diff
changeset
|
673 e.xclient.data.l[1]=XInternAtom( mDisplay,"_NET_WM_STATE_STAYS_ON_TOP",False ); |
7572 | 674 type=XInternAtom( mDisplay,"_NET_WM_STATE_FULLSCREEN",False ); |
675 for ( i=0;i < nitems;i++ ) | |
676 if ( args[i] == type ) { e.xclient.data.l[1]=XInternAtom( mDisplay,"_NET_WM_STATE_FULLSCREEN",False ); break; } | |
677 | |
5997
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
678 XSendEvent( mDisplay,mRootWin,False,SubstructureRedirectMask,&e ); |
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
679 |
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
680 XFree( args ); |
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
681 return; |
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
682 } |
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
683 type=XInternAtom( mDisplay,"_WIN_SUPPORTING_WM_CHECK",False ); |
7747 | 684 if ( Success == XGetWindowProperty( mDisplay,mRootWin,type,0,16384,False,AnyPropertyType,&type,&format,&nitems,&bytesafter,(unsigned char**)(&args) ) && nitems > 0 ) |
5997
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
685 { |
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
686 XClientMessageEvent xev; |
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
687 |
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
688 mp_dbg( MSGT_VO,MSGL_STATUS,"[x11] Gnome style stay on top ( layer %d ).\n",layer ); |
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
689 memset( &xev,0,sizeof( xev ) ); |
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
690 xev.type=ClientMessage; |
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
691 xev.window=vo_window; |
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
692 xev.message_type=XInternAtom( mDisplay,"_WIN_LAYER",False ); |
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
693 xev.format=32; |
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
694 switch ( layer ) |
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
695 { |
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
696 case -1: xev.data.l[0] = WIN_LAYER_ONBOTTOM; break; |
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
697 case 0: xev.data.l[0] = WIN_LAYER_NORMAL; break; |
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
698 case 1: xev.data.l[0] = WIN_LAYER_ONTOP; break; |
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
699 } |
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
700 XSendEvent( mDisplay,mRootWin,False,SubstructureNotifyMask,(XEvent*)&xev ); |
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
701 if ( layer ) XRaiseWindow( mDisplay,vo_window ); |
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
702 |
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
703 XFree( args ); |
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
704 return; |
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
705 } |
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
706 } |
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
707 |
4981 | 708 void vo_x11_fullscreen( void ) |
709 { | |
7435 | 710 int x,y,w,h; |
5919 | 711 |
6034
7570f4666c15
fullscreen -- round three -- icewm fullscreen fixed
pontscho
parents:
6016
diff
changeset
|
712 if ( WinID >= 0 ) return; |
7570f4666c15
fullscreen -- round three -- icewm fullscreen fixed
pontscho
parents:
6016
diff
changeset
|
713 |
7435 | 714 if ( vo_fs ){ |
715 // fs->win | |
716 if(vo_dwidth != vo_screenwidth && vo_dheight != vo_screenheight) return; | |
717 vo_fs=VO_FALSE; | |
718 x=vo_old_x; y=vo_old_y; w=vo_old_width; h=vo_old_height; | |
719 } else { | |
720 // win->fs | |
721 if(vo_old_width && | |
722 (vo_dwidth==vo_screenwidth && vo_dwidth!=vo_old_width) && | |
723 (vo_dheight==vo_screenheight && vo_dheight!=vo_old_height) ) return; | |
724 vo_fs=VO_TRUE; | |
725 vo_old_x=vo_dx; vo_old_y=vo_dy; vo_old_width=vo_dwidth; vo_old_height=vo_dheight; | |
726 x=0; y=0; w=vo_screenwidth; h=vo_screenheight; | |
727 } | |
5997
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
728 |
6043 | 729 vo_x11_decoration( mDisplay,vo_window,(vo_fs) ? 0 : 1 ); |
5997
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
730 vo_x11_sizehint( x,y,w,h,0 ); |
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
731 vo_x11_setlayer( vo_fs ); |
6064
55b2b5da9bd2
small cleanup, new flag in -fsmode to avoid unmapping window for unknown wm
arpi
parents:
6059
diff
changeset
|
732 if(vo_wm_type==vo_wm_Unknown && !(vo_fsmode&16)) |
7542
190d14d9130e
fullscreen fixes, based on mail by Havoc Pennington <hp@redhat.com>
arpi
parents:
7492
diff
changeset
|
733 // XUnmapWindow( mDisplay,vo_window ); // required for MWM |
190d14d9130e
fullscreen fixes, based on mail by Havoc Pennington <hp@redhat.com>
arpi
parents:
7492
diff
changeset
|
734 XWithdrawWindow(mDisplay,vo_window,mScreen); |
5997
b5fb9a927bf3
add WM detection, and wm specific fullscreen code. (???)
pontscho
parents:
5981
diff
changeset
|
735 XMoveResizeWindow( mDisplay,vo_window,x,y,w,h ); |
6342
40027495a6ed
xinerama fullscreen switching fix by Joachim Breitner <mail@joachim-breitner.de>
attila
parents:
6303
diff
changeset
|
736 #ifdef HAVE_XINERAMA |
40027495a6ed
xinerama fullscreen switching fix by Joachim Breitner <mail@joachim-breitner.de>
attila
parents:
6303
diff
changeset
|
737 vo_x11_xinerama_move(mDisplay,vo_window); |
40027495a6ed
xinerama fullscreen switching fix by Joachim Breitner <mail@joachim-breitner.de>
attila
parents:
6303
diff
changeset
|
738 #endif |
5835 | 739 XMapRaised( mDisplay,vo_window ); |
740 XRaiseWindow( mDisplay,vo_window ); | |
741 XFlush( mDisplay ); | |
4981 | 742 } |
743 | |
324 | 744 void saver_on(Display *mDisplay) { |
745 | |
1345
be674b95b485
x11_common does not compile, when the XDPMS extension is not available on the
jkeil
parents:
1266
diff
changeset
|
746 #ifdef HAVE_XDPMS |
324 | 747 int nothing; |
748 if (dpms_disabled) | |
749 { | |
458
49b0474b2e26
I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents:
456
diff
changeset
|
750 if (DPMSQueryExtension(mDisplay, ¬hing, ¬hing)) |
49b0474b2e26
I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents:
456
diff
changeset
|
751 { |
741 | 752 if (!DPMSEnable(mDisplay)) { // restoring power saving settings |
6296 | 753 mp_msg(MSGT_VO,MSGL_WARN,"DPMS not available?\n"); |
741 | 754 } else { |
755 // DPMS does not seem to be enabled unless we call DPMSInfo | |
756 BOOL onoff; | |
757 CARD16 state; | |
758 DPMSInfo(mDisplay, &state, &onoff); | |
759 if (onoff) { | |
6296 | 760 mp_msg(MSGT_VO,MSGL_INFO,"Successfully enabled DPMS\n"); |
741 | 761 } else { |
6296 | 762 mp_msg(MSGT_VO,MSGL_WARN,"Could not enable DPMS\n"); |
741 | 763 } |
764 } | |
458
49b0474b2e26
I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents:
456
diff
changeset
|
765 } |
7633 | 766 dpms_disabled=0; |
324 | 767 } |
1345
be674b95b485
x11_common does not compile, when the XDPMS extension is not available on the
jkeil
parents:
1266
diff
changeset
|
768 #endif |
be674b95b485
x11_common does not compile, when the XDPMS extension is not available on the
jkeil
parents:
1266
diff
changeset
|
769 |
324 | 770 if (timeout_save) |
771 { | |
458
49b0474b2e26
I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents:
456
diff
changeset
|
772 int dummy, interval, prefer_blank, allow_exp; |
49b0474b2e26
I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents:
456
diff
changeset
|
773 XGetScreenSaver(mDisplay, &dummy, &interval, &prefer_blank, &allow_exp); |
49b0474b2e26
I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents:
456
diff
changeset
|
774 XSetScreenSaver(mDisplay, timeout_save, interval, prefer_blank, allow_exp); |
49b0474b2e26
I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents:
456
diff
changeset
|
775 XGetScreenSaver(mDisplay, &timeout_save, &interval, &prefer_blank, &allow_exp); |
7633 | 776 timeout_save=0; |
324 | 777 } |
778 | |
6303 | 779 if (xscreensaver_was_running && stop_xscreensaver) |
780 system("xscreensaver -no-splash &"); | |
781 | |
324 | 782 } |
783 | |
784 void saver_off(Display *mDisplay) { | |
785 | |
1345
be674b95b485
x11_common does not compile, when the XDPMS extension is not available on the
jkeil
parents:
1266
diff
changeset
|
786 int interval, prefer_blank, allow_exp; |
be674b95b485
x11_common does not compile, when the XDPMS extension is not available on the
jkeil
parents:
1266
diff
changeset
|
787 #ifdef HAVE_XDPMS |
be674b95b485
x11_common does not compile, when the XDPMS extension is not available on the
jkeil
parents:
1266
diff
changeset
|
788 int nothing; |
324 | 789 |
790 if (DPMSQueryExtension(mDisplay, ¬hing, ¬hing)) | |
791 { | |
458
49b0474b2e26
I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents:
456
diff
changeset
|
792 BOOL onoff; |
49b0474b2e26
I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents:
456
diff
changeset
|
793 CARD16 state; |
49b0474b2e26
I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents:
456
diff
changeset
|
794 DPMSInfo(mDisplay, &state, &onoff); |
49b0474b2e26
I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents:
456
diff
changeset
|
795 if (onoff) |
49b0474b2e26
I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents:
456
diff
changeset
|
796 { |
741 | 797 Status stat; |
6296 | 798 mp_msg(MSGT_VO,MSGL_INFO,"Disabling DPMS\n"); |
458
49b0474b2e26
I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents:
456
diff
changeset
|
799 dpms_disabled=1; |
741 | 800 stat = DPMSDisable(mDisplay); // monitor powersave off |
6296 | 801 mp_msg(MSGT_VO,MSGL_V,"DPMSDisable stat: %d\n", stat); |
458
49b0474b2e26
I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents:
456
diff
changeset
|
802 } |
324 | 803 } |
1345
be674b95b485
x11_common does not compile, when the XDPMS extension is not available on the
jkeil
parents:
1266
diff
changeset
|
804 #endif |
324 | 805 XGetScreenSaver(mDisplay, &timeout_save, &interval, &prefer_blank, &allow_exp); |
806 if (timeout_save) | |
458
49b0474b2e26
I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents:
456
diff
changeset
|
807 XSetScreenSaver(mDisplay, 0, interval, prefer_blank, allow_exp); |
6303 | 808 xscreensaver_was_running = stop_xscreensaver && ! system("xscreensaver-command -exit"); |
458
49b0474b2e26
I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents:
456
diff
changeset
|
809 // turning off screensaver |
326 | 810 } |
448
198b46b739d8
qrva eletbe nem kene cvs-t elbaszni inkabb ne nyuljatok hozza baz+
arpi_esp
parents:
440
diff
changeset
|
811 |
6953
ce67cc1f0beb
ignore BadAccess error at XSelectInput() (grabbing mouse etc) with warning
arpi
parents:
6401
diff
changeset
|
812 static XErrorHandler old_handler = NULL; |
ce67cc1f0beb
ignore BadAccess error at XSelectInput() (grabbing mouse etc) with warning
arpi
parents:
6401
diff
changeset
|
813 static int selectinput_err = 0; |
ce67cc1f0beb
ignore BadAccess error at XSelectInput() (grabbing mouse etc) with warning
arpi
parents:
6401
diff
changeset
|
814 static int x11_selectinput_errorhandler(Display *display, XErrorEvent *event) |
ce67cc1f0beb
ignore BadAccess error at XSelectInput() (grabbing mouse etc) with warning
arpi
parents:
6401
diff
changeset
|
815 { |
ce67cc1f0beb
ignore BadAccess error at XSelectInput() (grabbing mouse etc) with warning
arpi
parents:
6401
diff
changeset
|
816 if (event->error_code == BadAccess) { |
ce67cc1f0beb
ignore BadAccess error at XSelectInput() (grabbing mouse etc) with warning
arpi
parents:
6401
diff
changeset
|
817 selectinput_err = 1; |
ce67cc1f0beb
ignore BadAccess error at XSelectInput() (grabbing mouse etc) with warning
arpi
parents:
6401
diff
changeset
|
818 mp_msg(MSGT_VO, MSGL_ERR, "X11 error : BadAccess during XSelectInput Call\n"); |
ce67cc1f0beb
ignore BadAccess error at XSelectInput() (grabbing mouse etc) with warning
arpi
parents:
6401
diff
changeset
|
819 mp_msg(MSGT_VO, MSGL_ERR, "X11 error : The 'ButtonPressMask' mask of specified window has probably already used by another appication(see man XSelectInput) \n"); |
ce67cc1f0beb
ignore BadAccess error at XSelectInput() (grabbing mouse etc) with warning
arpi
parents:
6401
diff
changeset
|
820 /* If you think mplayer should shutdown with this error, comments out following line */ |
ce67cc1f0beb
ignore BadAccess error at XSelectInput() (grabbing mouse etc) with warning
arpi
parents:
6401
diff
changeset
|
821 return 0; |
ce67cc1f0beb
ignore BadAccess error at XSelectInput() (grabbing mouse etc) with warning
arpi
parents:
6401
diff
changeset
|
822 } |
ce67cc1f0beb
ignore BadAccess error at XSelectInput() (grabbing mouse etc) with warning
arpi
parents:
6401
diff
changeset
|
823 if (old_handler != NULL) old_handler(display, event); |
ce67cc1f0beb
ignore BadAccess error at XSelectInput() (grabbing mouse etc) with warning
arpi
parents:
6401
diff
changeset
|
824 else x11_errorhandler(display, event); |
ce67cc1f0beb
ignore BadAccess error at XSelectInput() (grabbing mouse etc) with warning
arpi
parents:
6401
diff
changeset
|
825 return 0; |
ce67cc1f0beb
ignore BadAccess error at XSelectInput() (grabbing mouse etc) with warning
arpi
parents:
6401
diff
changeset
|
826 } |
3990 | 827 |
6953
ce67cc1f0beb
ignore BadAccess error at XSelectInput() (grabbing mouse etc) with warning
arpi
parents:
6401
diff
changeset
|
828 void vo_x11_selectinput_witherr(Display *display, Window w, long event_mask) |
ce67cc1f0beb
ignore BadAccess error at XSelectInput() (grabbing mouse etc) with warning
arpi
parents:
6401
diff
changeset
|
829 { |
ce67cc1f0beb
ignore BadAccess error at XSelectInput() (grabbing mouse etc) with warning
arpi
parents:
6401
diff
changeset
|
830 XSync(display, False); |
ce67cc1f0beb
ignore BadAccess error at XSelectInput() (grabbing mouse etc) with warning
arpi
parents:
6401
diff
changeset
|
831 old_handler = XSetErrorHandler(x11_selectinput_errorhandler); |
ce67cc1f0beb
ignore BadAccess error at XSelectInput() (grabbing mouse etc) with warning
arpi
parents:
6401
diff
changeset
|
832 selectinput_err = 0; |
ce67cc1f0beb
ignore BadAccess error at XSelectInput() (grabbing mouse etc) with warning
arpi
parents:
6401
diff
changeset
|
833 XSelectInput(display, w, event_mask); |
ce67cc1f0beb
ignore BadAccess error at XSelectInput() (grabbing mouse etc) with warning
arpi
parents:
6401
diff
changeset
|
834 XSync(display, False); |
ce67cc1f0beb
ignore BadAccess error at XSelectInput() (grabbing mouse etc) with warning
arpi
parents:
6401
diff
changeset
|
835 XSetErrorHandler(old_handler); |
ce67cc1f0beb
ignore BadAccess error at XSelectInput() (grabbing mouse etc) with warning
arpi
parents:
6401
diff
changeset
|
836 if (selectinput_err) { |
ce67cc1f0beb
ignore BadAccess error at XSelectInput() (grabbing mouse etc) with warning
arpi
parents:
6401
diff
changeset
|
837 mp_msg(MSGT_VO, MSGL_ERR, "X11 error : Mplayer discards mouse control and retry XSelectInput...\n"); |
ce67cc1f0beb
ignore BadAccess error at XSelectInput() (grabbing mouse etc) with warning
arpi
parents:
6401
diff
changeset
|
838 XSelectInput(display, w, event_mask & (~(ButtonPressMask | ButtonReleaseMask | PointerMotionMask)) ); |
ce67cc1f0beb
ignore BadAccess error at XSelectInput() (grabbing mouse etc) with warning
arpi
parents:
6401
diff
changeset
|
839 } |
ce67cc1f0beb
ignore BadAccess error at XSelectInput() (grabbing mouse etc) with warning
arpi
parents:
6401
diff
changeset
|
840 } |
3990 | 841 |
842 #ifdef HAVE_XINERAMA | |
843 void vo_x11_xinerama_move(Display *dsp, Window w) | |
844 { | |
845 if(XineramaIsActive(dsp)) | |
846 { | |
4017 | 847 /* printf("XXXX Xinerama screen: x: %hd y: %hd\n",xinerama_x,xinerama_y); */ |
848 XMoveWindow(dsp,w,xinerama_x,xinerama_y); | |
3990 | 849 } |
850 } | |
448
198b46b739d8
qrva eletbe nem kene cvs-t elbaszni inkabb ne nyuljatok hozza baz+
arpi_esp
parents:
440
diff
changeset
|
851 #endif |
3990 | 852 |
4425
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
853 #ifdef HAVE_XF86VM |
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
854 void vo_vm_switch(uint32_t X, uint32_t Y, int* modeline_width, int* modeline_height) |
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
855 { |
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
856 unsigned int vm_event, vm_error; |
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
857 unsigned int vm_ver, vm_rev; |
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
858 int i,j,have_vm=0; |
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
859 |
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
860 int modecount; |
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
861 |
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
862 if (XF86VidModeQueryExtension(mDisplay, &vm_event, &vm_error)) { |
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
863 XF86VidModeQueryVersion(mDisplay, &vm_ver, &vm_rev); |
6296 | 864 mp_msg(MSGT_VO,MSGL_V,"XF86VidMode Extension v%i.%i\n", vm_ver, vm_rev); |
4425
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
865 have_vm=1; |
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
866 } else |
6296 | 867 mp_msg(MSGT_VO,MSGL_WARN,"XF86VidMode Extenstion not available.\n"); |
4425
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
868 |
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
869 if (have_vm) { |
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
870 if (vidmodes==NULL) |
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
871 XF86VidModeGetAllModeLines(mDisplay,mScreen,&modecount,&vidmodes); |
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
872 j=0; |
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
873 *modeline_width=vidmodes[0]->hdisplay; |
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
874 *modeline_height=vidmodes[0]->vdisplay; |
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
875 |
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
876 for (i=1; i<modecount; i++) |
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
877 if ((vidmodes[i]->hdisplay >= X) && (vidmodes[i]->vdisplay >= Y)) |
5538 | 878 if ( (vidmodes[i]->hdisplay <= *modeline_width ) && (vidmodes[i]->vdisplay <= *modeline_height) ) |
4425
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
879 { |
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
880 *modeline_width=vidmodes[i]->hdisplay; |
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
881 *modeline_height=vidmodes[i]->vdisplay; |
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
882 j=i; |
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
883 } |
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
884 |
6296 | 885 mp_msg(MSGT_VO,MSGL_INFO,"XF86VM: Selected video mode %dx%d for image size %dx%d.\n",*modeline_width, *modeline_height, X, Y); |
4425
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
886 XF86VidModeLockModeSwitch(mDisplay,mScreen,0); |
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
887 XF86VidModeSwitchToMode(mDisplay,mScreen,vidmodes[j]); |
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
888 XF86VidModeSwitchToMode(mDisplay,mScreen,vidmodes[j]); |
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
889 X=(vo_screenwidth-*modeline_width)/2; |
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
890 Y=(vo_screenheight-*modeline_height)/2; |
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
891 XF86VidModeSetViewPort(mDisplay,mScreen,X,Y); |
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
892 } |
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
893 } |
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
894 |
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
895 void vo_vm_close(Display *dpy) |
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
896 { |
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
897 #ifdef HAVE_NEW_GUI |
5019 | 898 if (vidmodes!=NULL && vo_window != None) |
4425
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
899 #else |
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
900 if (vidmodes!=NULL) |
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
901 #endif |
5019 | 902 { |
903 int i, modecount; | |
904 int screen; screen=DefaultScreen( dpy ); | |
905 | |
906 free(vidmodes); vidmodes=NULL; | |
907 XF86VidModeGetAllModeLines(mDisplay,mScreen,&modecount,&vidmodes); | |
908 for (i=0; i<modecount; i++) | |
909 if ((vidmodes[i]->hdisplay == vo_screenwidth) && (vidmodes[i]->vdisplay == vo_screenheight)) | |
910 { | |
6296 | 911 mp_msg(MSGT_VO,MSGL_INFO,"\nReturning to original mode %dx%d\n", vo_screenwidth, vo_screenheight); |
5019 | 912 break; |
913 } | |
914 | |
915 XF86VidModeSwitchToMode(dpy,screen,vidmodes[i]); | |
916 XF86VidModeSwitchToMode(dpy,screen,vidmodes[i]); | |
917 free(vidmodes); | |
918 } | |
4425
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
919 } |
3990 | 920 #endif |
4425
6144f63cbaa1
common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents:
4181
diff
changeset
|
921 |
7256
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
922 #endif /* X11_FULLSCREEN */ |
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
923 |
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
924 |
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
925 /* |
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
926 * Scan the available visuals on this Display/Screen. Try to find |
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
927 * the 'best' available TrueColor visual that has a decent color |
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
928 * depth (at least 15bit). If there are multiple visuals with depth |
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
929 * >= 15bit, we prefer visuals with a smaller color depth. |
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
930 */ |
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
931 int vo_find_depth_from_visuals(Display *dpy, int screen, Visual **visual_return) |
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
932 { |
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
933 XVisualInfo visual_tmpl; |
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
934 XVisualInfo *visuals; |
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
935 int nvisuals, i; |
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
936 int bestvisual = -1; |
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
937 int bestvisual_depth = -1; |
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
938 |
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
939 visual_tmpl.screen = screen; |
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
940 visual_tmpl.class = TrueColor; |
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
941 visuals = XGetVisualInfo(dpy, |
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
942 VisualScreenMask | VisualClassMask, &visual_tmpl, |
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
943 &nvisuals); |
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
944 if (visuals != NULL) { |
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
945 for (i = 0; i < nvisuals; i++) { |
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
946 mp_msg(MSGT_VO,MSGL_V,"vo: X11 truecolor visual %#x, depth %d, R:%lX G:%lX B:%lX\n", |
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
947 visuals[i].visualid, visuals[i].depth, |
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
948 visuals[i].red_mask, visuals[i].green_mask, |
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
949 visuals[i].blue_mask); |
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
950 /* |
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
951 * save the visual index and it's depth, if this is the first |
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
952 * truecolor visul, or a visual that is 'preferred' over the |
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
953 * previous 'best' visual |
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
954 */ |
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
955 if (bestvisual_depth == -1 |
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
956 || (visuals[i].depth >= 15 |
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
957 && ( visuals[i].depth < bestvisual_depth |
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
958 || bestvisual_depth < 15))) { |
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
959 bestvisual = i; |
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
960 bestvisual_depth = visuals[i].depth; |
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
961 } |
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
962 } |
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
963 |
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
964 if (bestvisual != -1 && visual_return != NULL) |
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
965 *visual_return = visuals[bestvisual].visual; |
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
966 |
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
967 XFree(visuals); |
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
968 } |
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
969 return bestvisual_depth; |
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
970 } |
ec6dd0a29d93
Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents:
7111
diff
changeset
|
971 |