annotate libvo/x11_common.c @ 3603:baa8b0c0ff30

Removed unnecessary check after the protocol autodetection. Now it will try to start streaming even if the autodetection failed. This will allow to work with web server that doesn't report a proper mime-type.
author bertrand
date Wed, 19 Dec 2001 09:02:52 +0000
parents d33dac3fcfa1
children fc1db33734e7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
2 #include <stdio.h>
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
3 #include <stdlib.h>
448
198b46b739d8 qrva eletbe nem kene cvs-t elbaszni inkabb ne nyuljatok hozza baz+
arpi_esp
parents: 440
diff changeset
4
198b46b739d8 qrva eletbe nem kene cvs-t elbaszni inkabb ne nyuljatok hozza baz+
arpi_esp
parents: 440
diff changeset
5 #include "config.h"
198b46b739d8 qrva eletbe nem kene cvs-t elbaszni inkabb ne nyuljatok hozza baz+
arpi_esp
parents: 440
diff changeset
6
198b46b739d8 qrva eletbe nem kene cvs-t elbaszni inkabb ne nyuljatok hozza baz+
arpi_esp
parents: 440
diff changeset
7 #ifdef X11_FULLSCREEN
198b46b739d8 qrva eletbe nem kene cvs-t elbaszni inkabb ne nyuljatok hozza baz+
arpi_esp
parents: 440
diff changeset
8
440
d19a3da6ac13 Pontscho's mixer, select, and hell-a-lot-of-stuff patch ;)
gabucino
parents: 416
diff changeset
9 #include <string.h>
32
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
10 #include <unistd.h>
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
11 #include <sys/mman.h>
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
12
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
13 #include "video_out.h"
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
14
324
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 32
diff changeset
15 #include <X11/Xmd.h>
32
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
16 #include <X11/Xlib.h>
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
17 #include <X11/Xutil.h>
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
18 #include <X11/Xatom.h>
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
19
1345
be674b95b485 x11_common does not compile, when the XDPMS extension is not available on the
jkeil
parents: 1266
diff changeset
20 #ifdef HAVE_XDPMS
448
198b46b739d8 qrva eletbe nem kene cvs-t elbaszni inkabb ne nyuljatok hozza baz+
arpi_esp
parents: 440
diff changeset
21 #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
22 #endif
448
198b46b739d8 qrva eletbe nem kene cvs-t elbaszni inkabb ne nyuljatok hozza baz+
arpi_esp
parents: 440
diff changeset
23
2149
6358db6ad3d0 Xinerama screen size fix by Lev Babiev <harley@hosers.org>
arpi
parents: 1746
diff changeset
24 #ifdef HAVE_XINERAMA
6358db6ad3d0 Xinerama screen size fix by Lev Babiev <harley@hosers.org>
arpi
parents: 1746
diff changeset
25 #include <X11/extensions/Xinerama.h>
6358db6ad3d0 Xinerama screen size fix by Lev Babiev <harley@hosers.org>
arpi
parents: 1746
diff changeset
26 #endif
1732
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
27
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
28 /*
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
29 * If SCAN_VISUALS is defined, vo_init() scans all available TrueColor
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
30 * visuals for the 'best' visual for MPlayer video display. Note that
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
31 * the 'best' visual might be different from the default visual that
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
32 * is in use on the root window of the display/screen.
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
33 */
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
34 #define SCAN_VISUALS
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
35
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
36
1456
8c57a5a3c645 printfs cleanup - moved to higher -v level or moved to stderr
arpi
parents: 1447
diff changeset
37 extern verbose;
8c57a5a3c645 printfs cleanup - moved to higher -v level or moved to stderr
arpi
parents: 1447
diff changeset
38
324
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 32
diff changeset
39 static int dpms_disabled=0;
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 32
diff changeset
40 static int timeout_save=0;
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 32
diff changeset
41
922
db06ae8967eb Centralized and cleaned up X11 connecting, fixed remote X11 playing, -display option for mplayer. SHOULD BE TESTED.
lgb
parents: 741
diff changeset
42 char* mDisplayName=NULL;
db06ae8967eb Centralized and cleaned up X11 connecting, fixed remote X11 playing, -display option for mplayer. SHOULD BE TESTED.
lgb
parents: 741
diff changeset
43 Display* mDisplay;
db06ae8967eb Centralized and cleaned up X11 connecting, fixed remote X11 playing, -display option for mplayer. SHOULD BE TESTED.
lgb
parents: 741
diff changeset
44 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
45 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
46 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
47
384
b0e4e5744899 Autohide X11 cursor
lgb
parents: 369
diff changeset
48
b0e4e5744899 Autohide X11 cursor
lgb
parents: 369
diff changeset
49 void vo_hidecursor ( Display *disp , Window win )
b0e4e5744899 Autohide X11 cursor
lgb
parents: 369
diff changeset
50 {
458
49b0474b2e26 I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents: 456
diff changeset
51 Cursor no_ptr;
49b0474b2e26 I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents: 456
diff changeset
52 Pixmap bm_no;
49b0474b2e26 I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents: 456
diff changeset
53 XColor black,dummy;
49b0474b2e26 I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents: 456
diff changeset
54 Colormap colormap;
49b0474b2e26 I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents: 456
diff changeset
55 static unsigned char bm_no_data[] = { 0,0,0,0, 0,0,0,0 };
49b0474b2e26 I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents: 456
diff changeset
56
49b0474b2e26 I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents: 456
diff changeset
57 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
58 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
59 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
60 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
61 XDefineCursor(disp,win,no_ptr);
384
b0e4e5744899 Autohide X11 cursor
lgb
parents: 369
diff changeset
62 }
b0e4e5744899 Autohide X11 cursor
lgb
parents: 369
diff changeset
63
b0e4e5744899 Autohide X11 cursor
lgb
parents: 369
diff changeset
64
1732
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
65 #ifdef SCAN_VISUALS
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
66 /*
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
67 * Scan the available visuals on this Display/Screen. Try to find
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
68 * the 'best' available TrueColor visual that has a decent color
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
69 * depth (at least 15bit). If there are multiple visuals with depth
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
70 * >= 15bit, we prefer visuals with a smaller color depth.
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
71 */
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
72 int vo_find_depth_from_visuals(Display *dpy, int screen, Visual **visual_return)
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
73 {
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
74 XVisualInfo visual_tmpl;
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
75 XVisualInfo *visuals;
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
76 int nvisuals, i;
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
77 int bestvisual = -1;
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
78 int bestvisual_depth = -1;
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
79
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
80 visual_tmpl.screen = screen;
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
81 visual_tmpl.class = TrueColor;
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
82 visuals = XGetVisualInfo(dpy,
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
83 VisualScreenMask | VisualClassMask, &visual_tmpl,
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
84 &nvisuals);
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
85 if (visuals != NULL) {
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
86 for (i = 0; i < nvisuals; i++) {
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
87 if (verbose)
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
88 printf("vo: X11 truecolor visual %#x, depth %d, R:%lX G:%lX B:%lX\n",
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
89 visuals[i].visualid, visuals[i].depth,
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
90 visuals[i].red_mask, visuals[i].green_mask,
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
91 visuals[i].blue_mask);
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
92 /*
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
93 * save the visual index and it's depth, if this is the first
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
94 * truecolor visul, or a visual that is 'preferred' over the
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
95 * previous 'best' visual
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
96 */
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
97 if (bestvisual_depth == -1
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
98 || (visuals[i].depth >= 15
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
99 && ( visuals[i].depth < bestvisual_depth
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
100 || bestvisual_depth < 15))) {
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
101 bestvisual = i;
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
102 bestvisual_depth = visuals[i].depth;
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
103 }
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
104 }
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
105
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
106 if (bestvisual != -1 && visual_return != NULL)
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
107 *visual_return = visuals[bestvisual].visual;
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
108
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
109 XFree(visuals);
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
110 }
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
111 return bestvisual_depth;
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
112 }
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
113 #endif
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
114
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
115
32
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
116 int vo_init( void )
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
117 {
922
db06ae8967eb Centralized and cleaned up X11 connecting, fixed remote X11 playing, -display option for mplayer. SHOULD BE TESTED.
lgb
parents: 741
diff changeset
118 // int mScreen;
1732
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
119 int depth, bpp;
1137
4c7b219e126c patch: some X11 compliance fixed: set ClassHint and better fullscreen mode
arpi_esp
parents: 1109
diff changeset
120 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
121 // 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
122 // Display * mDisplay;
1732
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
123 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
124 // Window mRootWin;
1732
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
125 XWindowAttributes attribs;
32
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
126
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
127 if(vo_depthonscreen) return 1; // already called
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
128
922
db06ae8967eb Centralized and cleaned up X11 connecting, fixed remote X11 playing, -display option for mplayer. SHOULD BE TESTED.
lgb
parents: 741
diff changeset
129 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
130 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
131 mDisplayName=strdup(":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
132
db06ae8967eb Centralized and cleaned up X11 connecting, fixed remote X11 playing, -display option for mplayer. SHOULD BE TESTED.
lgb
parents: 741
diff changeset
133 mDisplay=XOpenDisplay(mDisplayName);
32
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
134 if ( !mDisplay )
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
135 {
922
db06ae8967eb Centralized and cleaned up X11 connecting, fixed remote X11 playing, -display option for mplayer. SHOULD BE TESTED.
lgb
parents: 741
diff changeset
136 printf( "vo: couldn't open the X11 display (%s)!\n",mDisplayName );
32
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
137 return 0;
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
138 }
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
139 mScreen=DefaultScreen( mDisplay ); // Screen ID.
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
140 mRootWin=RootWindow( mDisplay,mScreen );// Root window ID.
2149
6358db6ad3d0 Xinerama screen size fix by Lev Babiev <harley@hosers.org>
arpi
parents: 1746
diff changeset
141
6358db6ad3d0 Xinerama screen size fix by Lev Babiev <harley@hosers.org>
arpi
parents: 1746
diff changeset
142 #ifdef HAVE_XINERAMA
6358db6ad3d0 Xinerama screen size fix by Lev Babiev <harley@hosers.org>
arpi
parents: 1746
diff changeset
143 if(XineramaIsActive(mDisplay))
6358db6ad3d0 Xinerama screen size fix by Lev Babiev <harley@hosers.org>
arpi
parents: 1746
diff changeset
144 {
6358db6ad3d0 Xinerama screen size fix by Lev Babiev <harley@hosers.org>
arpi
parents: 1746
diff changeset
145 XineramaScreenInfo *screens;
6358db6ad3d0 Xinerama screen size fix by Lev Babiev <harley@hosers.org>
arpi
parents: 1746
diff changeset
146 int num_screens;
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
147 int disp_screen = mScreen;
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
148
2149
6358db6ad3d0 Xinerama screen size fix by Lev Babiev <harley@hosers.org>
arpi
parents: 1746
diff changeset
149 screens = XineramaQueryScreens(mDisplay, &num_screens);
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
150 if (disp_screen > num_screens)
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
151 disp_screen = 0;
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
152 if (! vo_screenwidth)
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
153 vo_screenwidth=screens[disp_screen].width;
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
154 if (! vo_screenheight)
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
155 vo_screenheight=screens[disp_screen].height;
2149
6358db6ad3d0 Xinerama screen size fix by Lev Babiev <harley@hosers.org>
arpi
parents: 1746
diff changeset
156 }
6358db6ad3d0 Xinerama screen size fix by Lev Babiev <harley@hosers.org>
arpi
parents: 1746
diff changeset
157 else
6358db6ad3d0 Xinerama screen size fix by Lev Babiev <harley@hosers.org>
arpi
parents: 1746
diff changeset
158 #endif
6358db6ad3d0 Xinerama screen size fix by Lev Babiev <harley@hosers.org>
arpi
parents: 1746
diff changeset
159 {
2364
2f8f83ddbab3 -screenw/h patch by Tomi.Ollila@sonera.com
arpi
parents: 2149
diff changeset
160 if (! vo_screenwidth)
2f8f83ddbab3 -screenw/h patch by Tomi.Ollila@sonera.com
arpi
parents: 2149
diff changeset
161 vo_screenwidth=DisplayWidth( mDisplay,mScreen );
2f8f83ddbab3 -screenw/h patch by Tomi.Ollila@sonera.com
arpi
parents: 2149
diff changeset
162 if (! vo_screenheight)
2f8f83ddbab3 -screenw/h patch by Tomi.Ollila@sonera.com
arpi
parents: 2149
diff changeset
163 vo_screenheight=DisplayHeight( mDisplay,mScreen );
2149
6358db6ad3d0 Xinerama screen size fix by Lev Babiev <harley@hosers.org>
arpi
parents: 1746
diff changeset
164 }
1732
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
165 // get color depth (from root window, or the best visual):
32
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
166 XGetWindowAttributes(mDisplay, mRootWin, &attribs);
1732
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
167 depth=attribs.depth;
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
168
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
169 #ifdef SCAN_VISUALS
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
170 if (depth != 15 && depth != 16 && depth != 24 && depth != 32) {
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
171 Visual *visual;
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
172
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
173 depth = vo_find_depth_from_visuals(mDisplay, mScreen, &visual);
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
174 if (depth != -1)
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
175 mXImage=XCreateImage(mDisplay, visual, depth, ZPixmap,
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
176 0, NULL, 1, 1, 8, 1);
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
177 } else
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
178 #endif
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
179 mXImage=XGetImage( mDisplay,mRootWin,0,0,1,1,AllPlanes,ZPixmap );
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
180
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
181 vo_depthonscreen = depth; // display depth on screen
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
182
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
183 // get bits/pixel from XImage structure:
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
184 if (mXImage == NULL) {
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
185 mask = 0;
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
186 } else {
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
187 /*
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
188 * for the depth==24 case, the XImage structures might use
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
189 * 24 or 32 bits of data per pixel. The global variable
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
190 * vo_depthonscreen stores the amount of data per pixel in the
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
191 * XImage structure!
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
192 *
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
193 * Maybe we should rename vo_depthonscreen to (or add) vo_bpp?
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
194 */
32
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
195 bpp=mXImage->bits_per_pixel;
1137
4c7b219e126c patch: some X11 compliance fixed: set ClassHint and better fullscreen mode
arpi_esp
parents: 1109
diff changeset
196 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
197 mask=mXImage->red_mask|mXImage->green_mask|mXImage->blue_mask;
1732
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
198 XDestroyImage( mXImage );
1456
8c57a5a3c645 printfs cleanup - moved to higher -v level or moved to stderr
arpi
parents: 1447
diff changeset
199 if(verbose)
1732
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
200 printf("vo: X11 color mask: %X (R:%lX G:%lX B:%lX)\n",
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
201 mask,mXImage->red_mask,mXImage->green_mask,mXImage->blue_mask);
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
202 }
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
203 if(((vo_depthonscreen+7)/8)==2){
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
204 if(mask==0x7FFF) vo_depthonscreen=15; else
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
205 if(mask==0xFFFF) vo_depthonscreen=16;
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
206 }
922
db06ae8967eb Centralized and cleaned up X11 connecting, fixed remote X11 playing, -display option for mplayer. SHOULD BE TESTED.
lgb
parents: 741
diff changeset
207 // XCloseDisplay( mDisplay );
1447
e82fbd67ae60 better local display connection patch by Adam Tla/lka atlka@pg.gda.pl
arpi
parents: 1415
diff changeset
208 /* slightly improved local display detection AST */
e82fbd67ae60 better local display connection patch by Adam Tla/lka atlka@pg.gda.pl
arpi
parents: 1415
diff changeset
209 if ( strncmp(mDisplayName, "unix:", 5) == 0)
e82fbd67ae60 better local display connection patch by Adam Tla/lka atlka@pg.gda.pl
arpi
parents: 1415
diff changeset
210 mDisplayName += 4;
e82fbd67ae60 better local display connection patch by Adam Tla/lka atlka@pg.gda.pl
arpi
parents: 1415
diff changeset
211 else if ( strncmp(mDisplayName, "localhost:", 10) == 0)
e82fbd67ae60 better local display connection patch by Adam Tla/lka atlka@pg.gda.pl
arpi
parents: 1415
diff changeset
212 mDisplayName += 9;
922
db06ae8967eb Centralized and cleaned up X11 connecting, fixed remote X11 playing, -display option for mplayer. SHOULD BE TESTED.
lgb
parents: 741
diff changeset
213 if (*mDisplayName==':') mLocalDisplay=1; else mLocalDisplay=0;
1732
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
214 printf("vo: X11 running at %dx%d with depth %d and %d bits/pixel (\"%s\" => %s display)\n",
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
215 vo_screenwidth,vo_screenheight,
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
216 depth, vo_depthonscreen,
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
217 mDisplayName,mLocalDisplay?"local":"remote");
32
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
218 return 1;
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
219 }
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
220
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
221 #include "../linux/keycodes.h"
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
222 #include "wskeys.h"
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
223
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
224 extern void mplayer_put_key(int code);
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
225
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
226 void vo_x11_putkey(int key){
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
227 switch ( key )
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
228 {
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
229 case wsLeft: mplayer_put_key(KEY_LEFT); break;
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
230 case wsRight: mplayer_put_key(KEY_RIGHT); break;
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
231 case wsUp: mplayer_put_key(KEY_UP); break;
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
232 case wsDown: mplayer_put_key(KEY_DOWN); break;
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
233 case wsSpace: mplayer_put_key(' '); break;
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
234 case wsEscape: mplayer_put_key(KEY_ESC); break;
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
235 case wsEnter: mplayer_put_key(KEY_ENTER); break;
651
617ae66624b3 -ss patch by Loring Holden
arpi_esp
parents: 614
diff changeset
236 case wsPageUp: mplayer_put_key(KEY_PAGE_UP); break;
617ae66624b3 -ss patch by Loring Holden
arpi_esp
parents: 614
diff changeset
237 case wsPageDown: mplayer_put_key(KEY_PAGE_DOWN); break;
32
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
238 case wsq:
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
239 case wsQ: mplayer_put_key('q'); break;
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
240 case wsp:
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
241 case wsP: mplayer_put_key('p'); break;
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
242 case wsMinus:
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
243 case wsGrayMinus: mplayer_put_key('-'); break;
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
244 case wsPlus:
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
245 case wsGrayPlus: mplayer_put_key('+'); break;
464
edea605a4a5d add mixer support
pontscho
parents: 458
diff changeset
246 case wsGrayMul:
edea605a4a5d add mixer support
pontscho
parents: 458
diff changeset
247 case wsMul: mplayer_put_key('*'); break;
edea605a4a5d add mixer support
pontscho
parents: 458
diff changeset
248 case wsGrayDiv:
edea605a4a5d add mixer support
pontscho
parents: 458
diff changeset
249 case wsDiv: mplayer_put_key('/'); break;
3490
d33dac3fcfa1 applied Panagiotis' patch
gabucino
parents: 3461
diff changeset
250 case wsLess: mplayer_put_key('<'); break;
d33dac3fcfa1 applied Panagiotis' patch
gabucino
parents: 3461
diff changeset
251 case wsMore: mplayer_put_key('>'); break;
516
bdca96b27ceb add 'mixer support
pontscho
parents: 464
diff changeset
252 case wsm:
bdca96b27ceb add 'mixer support
pontscho
parents: 464
diff changeset
253 case wsM: mplayer_put_key('m'); break;
655
0bdfd4dc95f2 add o key
pontscho
parents: 651
diff changeset
254 case wso:
0bdfd4dc95f2 add o key
pontscho
parents: 651
diff changeset
255 case wsO: mplayer_put_key('o'); break;
1501
d40f2b686846 changes according to -utf8 option, draw_osd() function added
atlka
parents: 1456
diff changeset
256 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
257 (key>='0' && key<='9')) mplayer_put_key(key);
32
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
258 }
369
b1a706452eeb pass keys a-z && A-Z
arpi_esp
parents: 326
diff changeset
259
32
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
260 }
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
261
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
262
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
263 // ----- Motif header: -------
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
264
1236
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
265 #define MWM_HINTS_FUNCTIONS (1L << 0)
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
266 #define MWM_HINTS_DECORATIONS (1L << 1)
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
267 #define MWM_HINTS_INPUT_MODE (1L << 2)
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
268 #define MWM_HINTS_STATUS (1L << 3)
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
269
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
270 #define MWM_FUNC_ALL (1L << 0)
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
271 #define MWM_FUNC_RESIZE (1L << 1)
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
272 #define MWM_FUNC_MOVE (1L << 2)
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
273 #define MWM_FUNC_MINIMIZE (1L << 3)
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
274 #define MWM_FUNC_MAXIMIZE (1L << 4)
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
275 #define MWM_FUNC_CLOSE (1L << 5)
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
276
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
277 #define MWM_DECOR_ALL (1L << 0)
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
278 #define MWM_DECOR_BORDER (1L << 1)
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
279 #define MWM_DECOR_RESIZEH (1L << 2)
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
280 #define MWM_DECOR_TITLE (1L << 3)
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
281 #define MWM_DECOR_MENU (1L << 4)
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
282 #define MWM_DECOR_MINIMIZE (1L << 5)
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
283 #define MWM_DECOR_MAXIMIZE (1L << 6)
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
284
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
285 #define MWM_INPUT_MODELESS 0
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
286 #define MWM_INPUT_PRIMARY_APPLICATION_MODAL 1
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
287 #define MWM_INPUT_SYSTEM_MODAL 2
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
288 #define MWM_INPUT_FULL_APPLICATION_MODAL 3
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
289 #define MWM_INPUT_APPLICATION_MODAL MWM_INPUT_PRIMARY_APPLICATION_MODAL
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
290
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
291 #define MWM_TEAROFF_WINDOW (1L<<0)
32
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
292
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
293 typedef struct
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
294 {
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
295 long flags;
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
296 long functions;
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
297 long decorations;
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
298 long input_mode;
1236
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
299 long state;
32
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
300 } MotifWmHints;
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
301
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
302 extern MotifWmHints vo_MotifWmHints;
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
303 extern Atom vo_MotifHints;
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
304 extern int vo_depthonscreen;
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
305 extern int vo_screenwidth;
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
306 extern int vo_screenheight;
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
307
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
308 static MotifWmHints vo_MotifWmHints;
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
309 static Atom vo_MotifHints = None;
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
310
1266
9e1b353f8171 switch fullscreen method with -fsmode
arpi
parents: 1236
diff changeset
311 // Note: always d==0 !
32
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
312 void vo_x11_decoration( Display * vo_Display,Window w,int d )
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
313 {
1266
9e1b353f8171 switch fullscreen method with -fsmode
arpi
parents: 1236
diff changeset
314
9e1b353f8171 switch fullscreen method with -fsmode
arpi
parents: 1236
diff changeset
315 if(vo_fsmode&1){
9e1b353f8171 switch fullscreen method with -fsmode
arpi
parents: 1236
diff changeset
316 XSetWindowAttributes attr;
9e1b353f8171 switch fullscreen method with -fsmode
arpi
parents: 1236
diff changeset
317 attr.override_redirect = True;
9e1b353f8171 switch fullscreen method with -fsmode
arpi
parents: 1236
diff changeset
318 XChangeWindowAttributes(vo_Display, w, CWOverrideRedirect, &attr);
9e1b353f8171 switch fullscreen method with -fsmode
arpi
parents: 1236
diff changeset
319 // XMapWindow(vo_Display], w);
9e1b353f8171 switch fullscreen method with -fsmode
arpi
parents: 1236
diff changeset
320 }
9e1b353f8171 switch fullscreen method with -fsmode
arpi
parents: 1236
diff changeset
321
1415
4d77492e5d67 new -fsmode flag: 0x8 enables XSetTransientForHint
arpi
parents: 1345
diff changeset
322 if(vo_fsmode&8){
4d77492e5d67 new -fsmode flag: 0x8 enables XSetTransientForHint
arpi
parents: 1345
diff changeset
323 XSetTransientForHint (vo_Display, w, RootWindow(vo_Display,mScreen));
4d77492e5d67 new -fsmode flag: 0x8 enables XSetTransientForHint
arpi
parents: 1345
diff changeset
324 }
4d77492e5d67 new -fsmode flag: 0x8 enables XSetTransientForHint
arpi
parents: 1345
diff changeset
325
32
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
326 vo_MotifHints=XInternAtom( vo_Display,"_MOTIF_WM_HINTS",0 );
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
327 if ( vo_MotifHints != None )
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
328 {
1236
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
329 memset( &vo_MotifWmHints,0,sizeof( MotifWmHints ) );
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
330 vo_MotifWmHints.flags=MWM_HINTS_FUNCTIONS | MWM_HINTS_DECORATIONS;
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
331 vo_MotifWmHints.functions=MWM_FUNC_MOVE | MWM_FUNC_CLOSE | MWM_FUNC_MINIMIZE | MWM_FUNC_MAXIMIZE;
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
332 if ( d ) d=MWM_DECOR_ALL;
1266
9e1b353f8171 switch fullscreen method with -fsmode
arpi
parents: 1236
diff changeset
333 vo_MotifWmHints.decorations=d|((vo_fsmode&2)?0:MWM_DECOR_MENU);
32
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
334 XChangeProperty( vo_Display,w,vo_MotifHints,vo_MotifHints,32,
1266
9e1b353f8171 switch fullscreen method with -fsmode
arpi
parents: 1236
diff changeset
335 PropModeReplace,(unsigned char *)&vo_MotifWmHints,(vo_fsmode&4)?4:5 );
32
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
336 }
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
337 }
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
338
1137
4c7b219e126c patch: some X11 compliance fixed: set ClassHint and better fullscreen mode
arpi_esp
parents: 1109
diff changeset
339 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
340 XClassHint wmClass;
4c7b219e126c patch: some X11 compliance fixed: set ClassHint and better fullscreen mode
arpi_esp
parents: 1109
diff changeset
341 wmClass.res_name = name;
4c7b219e126c patch: some X11 compliance fixed: set ClassHint and better fullscreen mode
arpi_esp
parents: 1109
diff changeset
342 wmClass.res_class = "MPlayer";
4c7b219e126c patch: some X11 compliance fixed: set ClassHint and better fullscreen mode
arpi_esp
parents: 1109
diff changeset
343 XSetClassHint(display,window,&wmClass);
4c7b219e126c patch: some X11 compliance fixed: set ClassHint and better fullscreen mode
arpi_esp
parents: 1109
diff changeset
344 }
4c7b219e126c patch: some X11 compliance fixed: set ClassHint and better fullscreen mode
arpi_esp
parents: 1109
diff changeset
345
1723
5e4214a7540e GUI stuff. now seeking works, and xmga renders to video window
arpi
parents: 1501
diff changeset
346 #ifdef HAVE_NEW_GUI
723
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
347 Window vo_window = None;
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
348 GC vo_gc;
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
349 int vo_xeventhandling = 1;
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
350 int vo_resize = 0;
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
351 int vo_expose = 0;
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
352
1723
5e4214a7540e GUI stuff. now seeking works, and xmga renders to video window
arpi
parents: 1501
diff changeset
353 void vo_setwindow( Window w,GC g ) {
5e4214a7540e GUI stuff. now seeking works, and xmga renders to video window
arpi
parents: 1501
diff changeset
354 vo_window=w; vo_gc=g;
5e4214a7540e GUI stuff. now seeking works, and xmga renders to video window
arpi
parents: 1501
diff changeset
355 vo_xeventhandling=0;
5e4214a7540e GUI stuff. now seeking works, and xmga renders to video window
arpi
parents: 1501
diff changeset
356 }
1746
6e7da6f362ab add half gui support
pontscho
parents: 1732
diff changeset
357 void vo_setwindowsize( int w,int h ) {
6e7da6f362ab add half gui support
pontscho
parents: 1732
diff changeset
358 vo_dwidth=w; vo_dheight=h;
6e7da6f362ab add half gui support
pontscho
parents: 1732
diff changeset
359 }
723
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
360 #endif
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
361
32
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
362 int vo_x11_check_events(Display *mydisplay){
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
363 int ret=0;
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
364 XEvent Event;
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
365 char buf[100];
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
366 KeySym keySym;
1038
b36fb1ae4b53 applied solaris8/netbsd/other fixes patch by J«ärgen Keil <jk@tools.de>
arpi_esp
parents: 922
diff changeset
367 static XComposeStatus stat;
32
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
368 // unsigned long vo_KeyTable[512];
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
369
1723
5e4214a7540e GUI stuff. now seeking works, and xmga renders to video window
arpi
parents: 1501
diff changeset
370 #ifdef HAVE_NEW_GUI
723
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
371 if ( vo_xeventhandling )
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
372 {
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
373 #endif
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
374 while ( XPending( mydisplay ) )
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
375 {
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
376 XNextEvent( mydisplay,&Event );
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
377 switch( Event.type )
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
378 {
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
379 case Expose:
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
380 ret|=VO_EVENT_EXPOSE;
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
381 break;
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
382 case ConfigureNotify:
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
383 vo_dwidth=Event.xconfigure.width;
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
384 vo_dheight=Event.xconfigure.height;
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
385 ret|=VO_EVENT_RESIZE;
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
386 break;
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
387 case KeyPress:
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
388 XLookupString( &Event.xkey,buf,sizeof(buf),&keySym,&stat );
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
389 vo_x11_putkey( ( (keySym&0xff00) != 0?( (keySym&0x00ff) + 256 ):( keySym ) ) );
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
390 ret|=VO_EVENT_KEYPRESS;
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
391 break;
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
392 }
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
393 }
1723
5e4214a7540e GUI stuff. now seeking works, and xmga renders to video window
arpi
parents: 1501
diff changeset
394 #ifdef HAVE_NEW_GUI
32
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
395 }
723
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
396 else
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
397 {
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
398 if ( vo_resize )
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
399 {
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
400 vo_resize=0;
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
401 ret|=VO_EVENT_RESIZE;
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
402 }
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
403 if ( vo_expose )
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
404 {
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
405 vo_expose=0;
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
406 ret|=VO_EVENT_EXPOSE;
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
407 }
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
408 }
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
409 #endif
32
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
410
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
411 return ret;
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
412 }
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
413
324
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 32
diff changeset
414 void saver_on(Display *mDisplay) {
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 32
diff changeset
415
1345
be674b95b485 x11_common does not compile, when the XDPMS extension is not available on the
jkeil
parents: 1266
diff changeset
416 #ifdef HAVE_XDPMS
324
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 32
diff changeset
417 int nothing;
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 32
diff changeset
418 if (dpms_disabled)
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 32
diff changeset
419 {
458
49b0474b2e26 I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents: 456
diff changeset
420 if (DPMSQueryExtension(mDisplay, &nothing, &nothing))
49b0474b2e26 I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents: 456
diff changeset
421 {
741
00f97e760cbc DPMS re-enable patch by Loring Holden
arpi_esp
parents: 723
diff changeset
422 if (!DPMSEnable(mDisplay)) { // restoring power saving settings
00f97e760cbc DPMS re-enable patch by Loring Holden
arpi_esp
parents: 723
diff changeset
423 printf("DPMS not available?\n");
00f97e760cbc DPMS re-enable patch by Loring Holden
arpi_esp
parents: 723
diff changeset
424 } else {
00f97e760cbc DPMS re-enable patch by Loring Holden
arpi_esp
parents: 723
diff changeset
425 // DPMS does not seem to be enabled unless we call DPMSInfo
00f97e760cbc DPMS re-enable patch by Loring Holden
arpi_esp
parents: 723
diff changeset
426 BOOL onoff;
00f97e760cbc DPMS re-enable patch by Loring Holden
arpi_esp
parents: 723
diff changeset
427 CARD16 state;
00f97e760cbc DPMS re-enable patch by Loring Holden
arpi_esp
parents: 723
diff changeset
428 DPMSInfo(mDisplay, &state, &onoff);
00f97e760cbc DPMS re-enable patch by Loring Holden
arpi_esp
parents: 723
diff changeset
429 if (onoff) {
00f97e760cbc DPMS re-enable patch by Loring Holden
arpi_esp
parents: 723
diff changeset
430 printf ("Successfully enabled DPMS\n");
00f97e760cbc DPMS re-enable patch by Loring Holden
arpi_esp
parents: 723
diff changeset
431 } else {
00f97e760cbc DPMS re-enable patch by Loring Holden
arpi_esp
parents: 723
diff changeset
432 printf ("Could not enable DPMS\n");
00f97e760cbc DPMS re-enable patch by Loring Holden
arpi_esp
parents: 723
diff changeset
433 }
00f97e760cbc DPMS re-enable patch by Loring Holden
arpi_esp
parents: 723
diff changeset
434 }
458
49b0474b2e26 I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents: 456
diff changeset
435 }
324
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 32
diff changeset
436 }
1345
be674b95b485 x11_common does not compile, when the XDPMS extension is not available on the
jkeil
parents: 1266
diff changeset
437 #endif
be674b95b485 x11_common does not compile, when the XDPMS extension is not available on the
jkeil
parents: 1266
diff changeset
438
324
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 32
diff changeset
439 if (timeout_save)
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 32
diff changeset
440 {
458
49b0474b2e26 I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents: 456
diff changeset
441 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
442 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
443 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
444 XGetScreenSaver(mDisplay, &timeout_save, &interval, &prefer_blank, &allow_exp);
324
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 32
diff changeset
445 }
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 32
diff changeset
446
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 32
diff changeset
447 }
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 32
diff changeset
448
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 32
diff changeset
449 void saver_off(Display *mDisplay) {
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 32
diff changeset
450
1345
be674b95b485 x11_common does not compile, when the XDPMS extension is not available on the
jkeil
parents: 1266
diff changeset
451 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
452 #ifdef HAVE_XDPMS
be674b95b485 x11_common does not compile, when the XDPMS extension is not available on the
jkeil
parents: 1266
diff changeset
453 int nothing;
324
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 32
diff changeset
454
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 32
diff changeset
455 if (DPMSQueryExtension(mDisplay, &nothing, &nothing))
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 32
diff changeset
456 {
458
49b0474b2e26 I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents: 456
diff changeset
457 BOOL onoff;
49b0474b2e26 I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents: 456
diff changeset
458 CARD16 state;
49b0474b2e26 I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents: 456
diff changeset
459 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
460 if (onoff)
49b0474b2e26 I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents: 456
diff changeset
461 {
741
00f97e760cbc DPMS re-enable patch by Loring Holden
arpi_esp
parents: 723
diff changeset
462 Status stat;
458
49b0474b2e26 I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents: 456
diff changeset
463 printf ("Disabling DPMS\n");
49b0474b2e26 I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents: 456
diff changeset
464 dpms_disabled=1;
741
00f97e760cbc DPMS re-enable patch by Loring Holden
arpi_esp
parents: 723
diff changeset
465 stat = DPMSDisable(mDisplay); // monitor powersave off
00f97e760cbc DPMS re-enable patch by Loring Holden
arpi_esp
parents: 723
diff changeset
466 printf ("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
467 }
324
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 32
diff changeset
468 }
1345
be674b95b485 x11_common does not compile, when the XDPMS extension is not available on the
jkeil
parents: 1266
diff changeset
469 #endif
324
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 32
diff changeset
470 XGetScreenSaver(mDisplay, &timeout_save, &interval, &prefer_blank, &allow_exp);
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 32
diff changeset
471 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
472 XSetScreenSaver(mDisplay, 0, 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
473 // turning off screensaver
326
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents: 324
diff changeset
474 }
448
198b46b739d8 qrva eletbe nem kene cvs-t elbaszni inkabb ne nyuljatok hozza baz+
arpi_esp
parents: 440
diff changeset
475
198b46b739d8 qrva eletbe nem kene cvs-t elbaszni inkabb ne nyuljatok hozza baz+
arpi_esp
parents: 440
diff changeset
476 #endif