annotate libvo/x11_common.c @ 4613:8497da33a0d2

updated :noprebuf to emulate the playback used in mplayer 0.60 (with dxr3 patch), this solves alot of issues for ppl who had problems with the new prebuffering code
author mswitch
date Sat, 09 Feb 2002 17:40:33 +0000
parents e01ee848935f
children 93d562ad1c22
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
4425
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
28 #ifdef HAVE_XF86VM
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
29 #include <X11/extensions/xf86vmode.h>
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
30 #endif
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
31
1732
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
32 /*
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
33 * If SCAN_VISUALS is defined, vo_init() scans all available TrueColor
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
34 * visuals for the 'best' visual for MPlayer video display. Note that
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
35 * the 'best' visual might be different from the default visual that
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
36 * is in use on the root window of the display/screen.
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
37 */
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
38 #define SCAN_VISUALS
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
39
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
40
1456
8c57a5a3c645 printfs cleanup - moved to higher -v level or moved to stderr
arpi
parents: 1447
diff changeset
41 extern verbose;
8c57a5a3c645 printfs cleanup - moved to higher -v level or moved to stderr
arpi
parents: 1447
diff changeset
42
324
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 32
diff changeset
43 static int dpms_disabled=0;
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 32
diff changeset
44 static int timeout_save=0;
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 32
diff changeset
45
922
db06ae8967eb Centralized and cleaned up X11 connecting, fixed remote X11 playing, -display option for mplayer. SHOULD BE TESTED.
lgb
parents: 741
diff changeset
46 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
47 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
48 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
49 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
50 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
51
3830
fc1db33734e7 WinID cleanup, support for Xv
arpi
parents: 3490
diff changeset
52 /* output window id */
fc1db33734e7 WinID cleanup, support for Xv
arpi
parents: 3490
diff changeset
53 int WinID=-1;
384
b0e4e5744899 Autohide X11 cursor
lgb
parents: 369
diff changeset
54
4017
21a75ab24703 Xinerama patch number two by attila.
atmos4
parents: 3990
diff changeset
55 #ifdef HAVE_XINERAMA
21a75ab24703 Xinerama patch number two by attila.
atmos4
parents: 3990
diff changeset
56 int xinerama_screen = 0;
21a75ab24703 Xinerama patch number two by attila.
atmos4
parents: 3990
diff changeset
57 int xinerama_x = 0;
21a75ab24703 Xinerama patch number two by attila.
atmos4
parents: 3990
diff changeset
58 int xinerama_y = 0;
21a75ab24703 Xinerama patch number two by attila.
atmos4
parents: 3990
diff changeset
59 #endif
21a75ab24703 Xinerama patch number two by attila.
atmos4
parents: 3990
diff changeset
60
4425
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
61 #ifdef HAVE_XF86VM
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
62 XF86VidModeModeInfo **vidmodes=NULL;
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
63 #endif
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
64
384
b0e4e5744899 Autohide X11 cursor
lgb
parents: 369
diff changeset
65 void vo_hidecursor ( Display *disp , Window win )
b0e4e5744899 Autohide X11 cursor
lgb
parents: 369
diff changeset
66 {
458
49b0474b2e26 I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents: 456
diff changeset
67 Cursor no_ptr;
49b0474b2e26 I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents: 456
diff changeset
68 Pixmap bm_no;
49b0474b2e26 I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents: 456
diff changeset
69 XColor black,dummy;
49b0474b2e26 I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents: 456
diff changeset
70 Colormap colormap;
49b0474b2e26 I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents: 456
diff changeset
71 static unsigned char bm_no_data[] = { 0,0,0,0, 0,0,0,0 };
3954
arpi
parents: 3951
diff changeset
72
arpi
parents: 3951
diff changeset
73 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
74
49b0474b2e26 I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents: 456
diff changeset
75 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
76 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
77 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
78 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
79 XDefineCursor(disp,win,no_ptr);
384
b0e4e5744899 Autohide X11 cursor
lgb
parents: 369
diff changeset
80 }
b0e4e5744899 Autohide X11 cursor
lgb
parents: 369
diff changeset
81
b0e4e5744899 Autohide X11 cursor
lgb
parents: 369
diff changeset
82
1732
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
83 #ifdef SCAN_VISUALS
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
84 /*
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
85 * Scan the available visuals on this Display/Screen. Try to find
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
86 * the 'best' available TrueColor visual that has a decent color
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
87 * depth (at least 15bit). If there are multiple visuals with depth
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
88 * >= 15bit, we prefer visuals with a smaller color depth.
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
89 */
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
90 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
91 {
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
92 XVisualInfo visual_tmpl;
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
93 XVisualInfo *visuals;
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
94 int nvisuals, i;
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
95 int bestvisual = -1;
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
96 int bestvisual_depth = -1;
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
97
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
98 visual_tmpl.screen = screen;
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
99 visual_tmpl.class = TrueColor;
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
100 visuals = XGetVisualInfo(dpy,
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
101 VisualScreenMask | VisualClassMask, &visual_tmpl,
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
102 &nvisuals);
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
103 if (visuals != NULL) {
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
104 for (i = 0; i < nvisuals; i++) {
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
105 if (verbose)
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
106 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
107 visuals[i].visualid, visuals[i].depth,
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
108 visuals[i].red_mask, visuals[i].green_mask,
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
109 visuals[i].blue_mask);
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 * 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
112 * truecolor visul, or a visual that is 'preferred' over the
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
113 * previous 'best' visual
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 if (bestvisual_depth == -1
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
116 || (visuals[i].depth >= 15
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
117 && ( visuals[i].depth < bestvisual_depth
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
118 || bestvisual_depth < 15))) {
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
119 bestvisual = i;
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
120 bestvisual_depth = visuals[i].depth;
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
121 }
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
122 }
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
123
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
124 if (bestvisual != -1 && visual_return != NULL)
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
125 *visual_return = visuals[bestvisual].visual;
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
126
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
127 XFree(visuals);
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
128 }
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
129 return bestvisual_depth;
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
130 }
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
131 #endif
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
132
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
133
32
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
134 int vo_init( void )
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 // int mScreen;
1732
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
137 int depth, bpp;
1137
4c7b219e126c patch: some X11 compliance fixed: set ClassHint and better fullscreen mode
arpi_esp
parents: 1109
diff changeset
138 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
139 // 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
140 // Display * mDisplay;
1732
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
141 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
142 // Window mRootWin;
1732
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
143 XWindowAttributes attribs;
32
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
144
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
145 if(vo_depthonscreen) return 1; // already called
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
146
922
db06ae8967eb Centralized and cleaned up X11 connecting, fixed remote X11 playing, -display option for mplayer. SHOULD BE TESTED.
lgb
parents: 741
diff changeset
147 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
148 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
149 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
150
db06ae8967eb Centralized and cleaned up X11 connecting, fixed remote X11 playing, -display option for mplayer. SHOULD BE TESTED.
lgb
parents: 741
diff changeset
151 mDisplay=XOpenDisplay(mDisplayName);
32
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
152 if ( !mDisplay )
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
153 {
922
db06ae8967eb Centralized and cleaned up X11 connecting, fixed remote X11 playing, -display option for mplayer. SHOULD BE TESTED.
lgb
parents: 741
diff changeset
154 printf( "vo: couldn't open the X11 display (%s)!\n",mDisplayName );
32
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
155 return 0;
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
156 }
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
157 mScreen=DefaultScreen( mDisplay ); // Screen ID.
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
158 mRootWin=RootWindow( mDisplay,mScreen );// Root window ID.
2149
6358db6ad3d0 Xinerama screen size fix by Lev Babiev <harley@hosers.org>
arpi
parents: 1746
diff changeset
159
6358db6ad3d0 Xinerama screen size fix by Lev Babiev <harley@hosers.org>
arpi
parents: 1746
diff changeset
160 #ifdef HAVE_XINERAMA
6358db6ad3d0 Xinerama screen size fix by Lev Babiev <harley@hosers.org>
arpi
parents: 1746
diff changeset
161 if(XineramaIsActive(mDisplay))
6358db6ad3d0 Xinerama screen size fix by Lev Babiev <harley@hosers.org>
arpi
parents: 1746
diff changeset
162 {
6358db6ad3d0 Xinerama screen size fix by Lev Babiev <harley@hosers.org>
arpi
parents: 1746
diff changeset
163 XineramaScreenInfo *screens;
6358db6ad3d0 Xinerama screen size fix by Lev Babiev <harley@hosers.org>
arpi
parents: 1746
diff changeset
164 int num_screens;
3990
87538547c8f4 xinerama fix by attila
atmos4
parents: 3954
diff changeset
165
2149
6358db6ad3d0 Xinerama screen size fix by Lev Babiev <harley@hosers.org>
arpi
parents: 1746
diff changeset
166 screens = XineramaQueryScreens(mDisplay, &num_screens);
4017
21a75ab24703 Xinerama patch number two by attila.
atmos4
parents: 3990
diff changeset
167 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
168 if (! vo_screenwidth)
4017
21a75ab24703 Xinerama patch number two by attila.
atmos4
parents: 3990
diff changeset
169 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
170 if (! vo_screenheight)
4017
21a75ab24703 Xinerama patch number two by attila.
atmos4
parents: 3990
diff changeset
171 vo_screenheight=screens[xinerama_screen].height;
21a75ab24703 Xinerama patch number two by attila.
atmos4
parents: 3990
diff changeset
172 xinerama_x = screens[xinerama_screen].x_org;
21a75ab24703 Xinerama patch number two by attila.
atmos4
parents: 3990
diff changeset
173 xinerama_y = screens[xinerama_screen].y_org;
21a75ab24703 Xinerama patch number two by attila.
atmos4
parents: 3990
diff changeset
174
3990
87538547c8f4 xinerama fix by attila
atmos4
parents: 3954
diff changeset
175 XFree(screens);
2149
6358db6ad3d0 Xinerama screen size fix by Lev Babiev <harley@hosers.org>
arpi
parents: 1746
diff changeset
176 }
6358db6ad3d0 Xinerama screen size fix by Lev Babiev <harley@hosers.org>
arpi
parents: 1746
diff changeset
177 else
6358db6ad3d0 Xinerama screen size fix by Lev Babiev <harley@hosers.org>
arpi
parents: 1746
diff changeset
178 #endif
6358db6ad3d0 Xinerama screen size fix by Lev Babiev <harley@hosers.org>
arpi
parents: 1746
diff changeset
179 {
2364
2f8f83ddbab3 -screenw/h patch by Tomi.Ollila@sonera.com
arpi
parents: 2149
diff changeset
180 if (! vo_screenwidth)
2f8f83ddbab3 -screenw/h patch by Tomi.Ollila@sonera.com
arpi
parents: 2149
diff changeset
181 vo_screenwidth=DisplayWidth( mDisplay,mScreen );
2f8f83ddbab3 -screenw/h patch by Tomi.Ollila@sonera.com
arpi
parents: 2149
diff changeset
182 if (! vo_screenheight)
2f8f83ddbab3 -screenw/h patch by Tomi.Ollila@sonera.com
arpi
parents: 2149
diff changeset
183 vo_screenheight=DisplayHeight( mDisplay,mScreen );
2149
6358db6ad3d0 Xinerama screen size fix by Lev Babiev <harley@hosers.org>
arpi
parents: 1746
diff changeset
184 }
1732
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
185 // get color depth (from root window, or the best visual):
32
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
186 XGetWindowAttributes(mDisplay, mRootWin, &attribs);
1732
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
187 depth=attribs.depth;
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
188
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
189 #ifdef SCAN_VISUALS
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
190 if (depth != 15 && depth != 16 && depth != 24 && depth != 32) {
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
191 Visual *visual;
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 depth = vo_find_depth_from_visuals(mDisplay, mScreen, &visual);
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
194 if (depth != -1)
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
195 mXImage=XCreateImage(mDisplay, visual, depth, ZPixmap,
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
196 0, NULL, 1, 1, 8, 1);
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
197 } else
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
198 #endif
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
199 mXImage=XGetImage( mDisplay,mRootWin,0,0,1,1,AllPlanes,ZPixmap );
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
200
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
201 vo_depthonscreen = depth; // display depth on screen
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 // get bits/pixel from XImage structure:
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
204 if (mXImage == NULL) {
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
205 mask = 0;
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
206 } else {
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
207 /*
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
208 * for the depth==24 case, the XImage structures might use
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
209 * 24 or 32 bits of data per pixel. The global variable
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
210 * vo_depthonscreen stores the amount of data per pixel in the
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
211 * XImage structure!
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
212 *
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
213 * Maybe we should rename vo_depthonscreen to (or add) vo_bpp?
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
214 */
32
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
215 bpp=mXImage->bits_per_pixel;
1137
4c7b219e126c patch: some X11 compliance fixed: set ClassHint and better fullscreen mode
arpi_esp
parents: 1109
diff changeset
216 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
217 mask=mXImage->red_mask|mXImage->green_mask|mXImage->blue_mask;
1456
8c57a5a3c645 printfs cleanup - moved to higher -v level or moved to stderr
arpi
parents: 1447
diff changeset
218 if(verbose)
1732
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
219 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
220 mask,mXImage->red_mask,mXImage->green_mask,mXImage->blue_mask);
4181
159b3d0f517d patch by Fredrik Kuivinen <freku045@student.liu.se>
pl
parents: 4017
diff changeset
221 XDestroyImage( mXImage );
1732
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
222 }
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
223 if(((vo_depthonscreen+7)/8)==2){
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
224 if(mask==0x7FFF) vo_depthonscreen=15; else
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
225 if(mask==0xFFFF) vo_depthonscreen=16;
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
226 }
922
db06ae8967eb Centralized and cleaned up X11 connecting, fixed remote X11 playing, -display option for mplayer. SHOULD BE TESTED.
lgb
parents: 741
diff changeset
227 // XCloseDisplay( mDisplay );
1447
e82fbd67ae60 better local display connection patch by Adam Tla/lka atlka@pg.gda.pl
arpi
parents: 1415
diff changeset
228 /* 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
229 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
230 mDisplayName += 4;
e82fbd67ae60 better local display connection patch by Adam Tla/lka atlka@pg.gda.pl
arpi
parents: 1415
diff changeset
231 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
232 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
233 if (*mDisplayName==':') mLocalDisplay=1; else mLocalDisplay=0;
1732
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
234 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
235 vo_screenwidth,vo_screenheight,
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
236 depth, vo_depthonscreen,
086e8d0c4639 Handle X11 displays with multiple depths.
jkeil
parents: 1723
diff changeset
237 mDisplayName,mLocalDisplay?"local":"remote");
32
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
238 return 1;
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
239 }
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
240
4436
0c2d2aaf9f86 added vo_x11_uninit
alex
parents: 4425
diff changeset
241
32
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
242 #include "../linux/keycodes.h"
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
243 #include "wskeys.h"
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
244
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
245 extern void mplayer_put_key(int code);
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
246
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
247 void vo_x11_putkey(int key){
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
248 switch ( key )
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
249 {
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
250 case wsLeft: mplayer_put_key(KEY_LEFT); break;
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
251 case wsRight: mplayer_put_key(KEY_RIGHT); break;
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
252 case wsUp: mplayer_put_key(KEY_UP); break;
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
253 case wsDown: mplayer_put_key(KEY_DOWN); break;
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
254 case wsSpace: mplayer_put_key(' '); break;
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
255 case wsEscape: mplayer_put_key(KEY_ESC); break;
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
256 case wsEnter: mplayer_put_key(KEY_ENTER); break;
651
617ae66624b3 -ss patch by Loring Holden
arpi_esp
parents: 614
diff changeset
257 case wsPageUp: mplayer_put_key(KEY_PAGE_UP); break;
617ae66624b3 -ss patch by Loring Holden
arpi_esp
parents: 614
diff changeset
258 case wsPageDown: mplayer_put_key(KEY_PAGE_DOWN); break;
32
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
259 case wsq:
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
260 case wsQ: mplayer_put_key('q'); break;
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
261 case wsp:
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
262 case wsP: mplayer_put_key('p'); break;
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
263 case wsMinus:
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
264 case wsGrayMinus: mplayer_put_key('-'); break;
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
265 case wsPlus:
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
266 case wsGrayPlus: mplayer_put_key('+'); break;
464
edea605a4a5d add mixer support
pontscho
parents: 458
diff changeset
267 case wsGrayMul:
edea605a4a5d add mixer support
pontscho
parents: 458
diff changeset
268 case wsMul: mplayer_put_key('*'); break;
edea605a4a5d add mixer support
pontscho
parents: 458
diff changeset
269 case wsGrayDiv:
edea605a4a5d add mixer support
pontscho
parents: 458
diff changeset
270 case wsDiv: mplayer_put_key('/'); break;
3490
d33dac3fcfa1 applied Panagiotis' patch
gabucino
parents: 3461
diff changeset
271 case wsLess: mplayer_put_key('<'); break;
d33dac3fcfa1 applied Panagiotis' patch
gabucino
parents: 3461
diff changeset
272 case wsMore: mplayer_put_key('>'); break;
516
bdca96b27ceb add 'mixer support
pontscho
parents: 464
diff changeset
273 case wsm:
bdca96b27ceb add 'mixer support
pontscho
parents: 464
diff changeset
274 case wsM: mplayer_put_key('m'); break;
655
0bdfd4dc95f2 add o key
pontscho
parents: 651
diff changeset
275 case wso:
0bdfd4dc95f2 add o key
pontscho
parents: 651
diff changeset
276 case wsO: mplayer_put_key('o'); break;
1501
d40f2b686846 changes according to -utf8 option, draw_osd() function added
atlka
parents: 1456
diff changeset
277 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
278 (key>='0' && key<='9')) mplayer_put_key(key);
32
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
279 }
369
b1a706452eeb pass keys a-z && A-Z
arpi_esp
parents: 326
diff changeset
280
32
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
281 }
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
282
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
283
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
284 // ----- Motif header: -------
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
285
1236
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
286 #define MWM_HINTS_FUNCTIONS (1L << 0)
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
287 #define MWM_HINTS_DECORATIONS (1L << 1)
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
288 #define MWM_HINTS_INPUT_MODE (1L << 2)
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
289 #define MWM_HINTS_STATUS (1L << 3)
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
290
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
291 #define MWM_FUNC_ALL (1L << 0)
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
292 #define MWM_FUNC_RESIZE (1L << 1)
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
293 #define MWM_FUNC_MOVE (1L << 2)
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
294 #define MWM_FUNC_MINIMIZE (1L << 3)
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
295 #define MWM_FUNC_MAXIMIZE (1L << 4)
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
296 #define MWM_FUNC_CLOSE (1L << 5)
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
297
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
298 #define MWM_DECOR_ALL (1L << 0)
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
299 #define MWM_DECOR_BORDER (1L << 1)
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
300 #define MWM_DECOR_RESIZEH (1L << 2)
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
301 #define MWM_DECOR_TITLE (1L << 3)
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
302 #define MWM_DECOR_MENU (1L << 4)
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
303 #define MWM_DECOR_MINIMIZE (1L << 5)
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
304 #define MWM_DECOR_MAXIMIZE (1L << 6)
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
305
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
306 #define MWM_INPUT_MODELESS 0
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
307 #define MWM_INPUT_PRIMARY_APPLICATION_MODAL 1
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
308 #define MWM_INPUT_SYSTEM_MODAL 2
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
309 #define MWM_INPUT_FULL_APPLICATION_MODAL 3
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
310 #define MWM_INPUT_APPLICATION_MODAL MWM_INPUT_PRIMARY_APPLICATION_MODAL
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
311
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
312 #define MWM_TEAROFF_WINDOW (1L<<0)
32
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
313
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
314 typedef struct
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
315 {
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
316 long flags;
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
317 long functions;
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
318 long decorations;
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
319 long input_mode;
1236
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
320 long state;
32
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
321 } MotifWmHints;
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
322
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
323 extern MotifWmHints vo_MotifWmHints;
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
324 extern Atom vo_MotifHints;
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
325 extern int vo_depthonscreen;
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
326 extern int vo_screenwidth;
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
327 extern int vo_screenheight;
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
328
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
329 static MotifWmHints vo_MotifWmHints;
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
330 static Atom vo_MotifHints = None;
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
331
1266
9e1b353f8171 switch fullscreen method with -fsmode
arpi
parents: 1236
diff changeset
332 // Note: always d==0 !
32
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
333 void vo_x11_decoration( Display * vo_Display,Window w,int d )
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
334 {
1266
9e1b353f8171 switch fullscreen method with -fsmode
arpi
parents: 1236
diff changeset
335
9e1b353f8171 switch fullscreen method with -fsmode
arpi
parents: 1236
diff changeset
336 if(vo_fsmode&1){
9e1b353f8171 switch fullscreen method with -fsmode
arpi
parents: 1236
diff changeset
337 XSetWindowAttributes attr;
9e1b353f8171 switch fullscreen method with -fsmode
arpi
parents: 1236
diff changeset
338 attr.override_redirect = True;
9e1b353f8171 switch fullscreen method with -fsmode
arpi
parents: 1236
diff changeset
339 XChangeWindowAttributes(vo_Display, w, CWOverrideRedirect, &attr);
4437
f5fc7e9bac38 vo_x11_uninit: dont destroy window if GUI created it
alex
parents: 4436
diff changeset
340 // XMapWindow(vo_Display, w);
1266
9e1b353f8171 switch fullscreen method with -fsmode
arpi
parents: 1236
diff changeset
341 }
9e1b353f8171 switch fullscreen method with -fsmode
arpi
parents: 1236
diff changeset
342
1415
4d77492e5d67 new -fsmode flag: 0x8 enables XSetTransientForHint
arpi
parents: 1345
diff changeset
343 if(vo_fsmode&8){
4d77492e5d67 new -fsmode flag: 0x8 enables XSetTransientForHint
arpi
parents: 1345
diff changeset
344 XSetTransientForHint (vo_Display, w, RootWindow(vo_Display,mScreen));
4d77492e5d67 new -fsmode flag: 0x8 enables XSetTransientForHint
arpi
parents: 1345
diff changeset
345 }
4d77492e5d67 new -fsmode flag: 0x8 enables XSetTransientForHint
arpi
parents: 1345
diff changeset
346
32
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
347 vo_MotifHints=XInternAtom( vo_Display,"_MOTIF_WM_HINTS",0 );
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
348 if ( vo_MotifHints != None )
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
349 {
1236
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
350 memset( &vo_MotifWmHints,0,sizeof( MotifWmHints ) );
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
351 vo_MotifWmHints.flags=MWM_HINTS_FUNCTIONS | MWM_HINTS_DECORATIONS;
ebe9659da559 icewm basz bug fix
pontscho
parents: 1137
diff changeset
352 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
353 if ( d ) d=MWM_DECOR_ALL;
1266
9e1b353f8171 switch fullscreen method with -fsmode
arpi
parents: 1236
diff changeset
354 vo_MotifWmHints.decorations=d|((vo_fsmode&2)?0:MWM_DECOR_MENU);
32
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
355 XChangeProperty( vo_Display,w,vo_MotifHints,vo_MotifHints,32,
1266
9e1b353f8171 switch fullscreen method with -fsmode
arpi
parents: 1236
diff changeset
356 PropModeReplace,(unsigned char *)&vo_MotifWmHints,(vo_fsmode&4)?4:5 );
32
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
357 }
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
358 }
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
359
1137
4c7b219e126c patch: some X11 compliance fixed: set ClassHint and better fullscreen mode
arpi_esp
parents: 1109
diff changeset
360 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
361 XClassHint wmClass;
4c7b219e126c patch: some X11 compliance fixed: set ClassHint and better fullscreen mode
arpi_esp
parents: 1109
diff changeset
362 wmClass.res_name = name;
4c7b219e126c patch: some X11 compliance fixed: set ClassHint and better fullscreen mode
arpi_esp
parents: 1109
diff changeset
363 wmClass.res_class = "MPlayer";
4c7b219e126c patch: some X11 compliance fixed: set ClassHint and better fullscreen mode
arpi_esp
parents: 1109
diff changeset
364 XSetClassHint(display,window,&wmClass);
4c7b219e126c patch: some X11 compliance fixed: set ClassHint and better fullscreen mode
arpi_esp
parents: 1109
diff changeset
365 }
4c7b219e126c patch: some X11 compliance fixed: set ClassHint and better fullscreen mode
arpi_esp
parents: 1109
diff changeset
366
1723
5e4214a7540e GUI stuff. now seeking works, and xmga renders to video window
arpi
parents: 1501
diff changeset
367 #ifdef HAVE_NEW_GUI
723
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
368 Window vo_window = None;
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
369 GC vo_gc;
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
370 int vo_xeventhandling = 1;
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
371 int vo_resize = 0;
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
372 int vo_expose = 0;
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
373
1723
5e4214a7540e GUI stuff. now seeking works, and xmga renders to video window
arpi
parents: 1501
diff changeset
374 void vo_setwindow( Window w,GC g ) {
5e4214a7540e GUI stuff. now seeking works, and xmga renders to video window
arpi
parents: 1501
diff changeset
375 vo_window=w; vo_gc=g;
5e4214a7540e GUI stuff. now seeking works, and xmga renders to video window
arpi
parents: 1501
diff changeset
376 vo_xeventhandling=0;
5e4214a7540e GUI stuff. now seeking works, and xmga renders to video window
arpi
parents: 1501
diff changeset
377 }
1746
6e7da6f362ab add half gui support
pontscho
parents: 1732
diff changeset
378 void vo_setwindowsize( int w,int h ) {
6e7da6f362ab add half gui support
pontscho
parents: 1732
diff changeset
379 vo_dwidth=w; vo_dheight=h;
6e7da6f362ab add half gui support
pontscho
parents: 1732
diff changeset
380 }
723
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
381 #endif
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
382
4437
f5fc7e9bac38 vo_x11_uninit: dont destroy window if GUI created it
alex
parents: 4436
diff changeset
383 int vo_x11_uninit(Display *display, Window window)
f5fc7e9bac38 vo_x11_uninit: dont destroy window if GUI created it
alex
parents: 4436
diff changeset
384 {
f5fc7e9bac38 vo_x11_uninit: dont destroy window if GUI created it
alex
parents: 4436
diff changeset
385 #ifdef HAVE_NEW_GUI
f5fc7e9bac38 vo_x11_uninit: dont destroy window if GUI created it
alex
parents: 4436
diff changeset
386 /* destroy window only if it's not controlled by GUI */
f5fc7e9bac38 vo_x11_uninit: dont destroy window if GUI created it
alex
parents: 4436
diff changeset
387 if (vo_window == None)
f5fc7e9bac38 vo_x11_uninit: dont destroy window if GUI created it
alex
parents: 4436
diff changeset
388 #endif
f5fc7e9bac38 vo_x11_uninit: dont destroy window if GUI created it
alex
parents: 4436
diff changeset
389 {
f5fc7e9bac38 vo_x11_uninit: dont destroy window if GUI created it
alex
parents: 4436
diff changeset
390 /* and -wid is set */
f5fc7e9bac38 vo_x11_uninit: dont destroy window if GUI created it
alex
parents: 4436
diff changeset
391 if (!(WinID > 0))
f5fc7e9bac38 vo_x11_uninit: dont destroy window if GUI created it
alex
parents: 4436
diff changeset
392 XDestroyWindow(display, window);
4438
e01ee848935f grr, 10l. vo_x11_uninit: close display only if window not created by GUI
alex
parents: 4437
diff changeset
393 XCloseDisplay(display);
4437
f5fc7e9bac38 vo_x11_uninit: dont destroy window if GUI created it
alex
parents: 4436
diff changeset
394 }
f5fc7e9bac38 vo_x11_uninit: dont destroy window if GUI created it
alex
parents: 4436
diff changeset
395 return(1);
f5fc7e9bac38 vo_x11_uninit: dont destroy window if GUI created it
alex
parents: 4436
diff changeset
396 }
f5fc7e9bac38 vo_x11_uninit: dont destroy window if GUI created it
alex
parents: 4436
diff changeset
397
32
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
398 int vo_x11_check_events(Display *mydisplay){
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
399 int ret=0;
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
400 XEvent Event;
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
401 char buf[100];
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
402 KeySym keySym;
1038
b36fb1ae4b53 applied solaris8/netbsd/other fixes patch by Jrgen Keil <jk@tools.de>
arpi_esp
parents: 922
diff changeset
403 static XComposeStatus stat;
32
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
404 // unsigned long vo_KeyTable[512];
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
405
1723
5e4214a7540e GUI stuff. now seeking works, and xmga renders to video window
arpi
parents: 1501
diff changeset
406 #ifdef HAVE_NEW_GUI
723
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
407 if ( vo_xeventhandling )
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
408 {
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
409 #endif
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
410 while ( XPending( mydisplay ) )
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
411 {
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
412 XNextEvent( mydisplay,&Event );
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
413 switch( Event.type )
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
414 {
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
415 case Expose:
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
416 ret|=VO_EVENT_EXPOSE;
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
417 break;
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
418 case ConfigureNotify:
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
419 vo_dwidth=Event.xconfigure.width;
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
420 vo_dheight=Event.xconfigure.height;
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
421 ret|=VO_EVENT_RESIZE;
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
422 break;
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
423 case KeyPress:
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
424 XLookupString( &Event.xkey,buf,sizeof(buf),&keySym,&stat );
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
425 vo_x11_putkey( ( (keySym&0xff00) != 0?( (keySym&0x00ff) + 256 ):( keySym ) ) );
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
426 ret|=VO_EVENT_KEYPRESS;
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
427 break;
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
428 }
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
429 }
1723
5e4214a7540e GUI stuff. now seeking works, and xmga renders to video window
arpi
parents: 1501
diff changeset
430 #ifdef HAVE_NEW_GUI
32
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
431 }
723
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
432 else
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
433 {
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
434 if ( vo_resize )
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
435 {
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
436 vo_resize=0;
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
437 ret|=VO_EVENT_RESIZE;
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
438 }
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
439 if ( vo_expose )
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
440 {
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
441 vo_expose=0;
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
442 ret|=VO_EVENT_EXPOSE;
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
443 }
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
444 }
c3e0bdb64027 add gui support
pontscho
parents: 655
diff changeset
445 #endif
32
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
446
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
447 return ret;
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
448 }
9e66f722790e the common x11 stuff
arpi_esp
parents:
diff changeset
449
324
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 32
diff changeset
450 void saver_on(Display *mDisplay) {
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 32
diff changeset
451
1345
be674b95b485 x11_common does not compile, when the XDPMS extension is not available on the
jkeil
parents: 1266
diff changeset
452 #ifdef HAVE_XDPMS
324
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 32
diff changeset
453 int nothing;
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 32
diff changeset
454 if (dpms_disabled)
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 32
diff changeset
455 {
458
49b0474b2e26 I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents: 456
diff changeset
456 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
457 {
741
00f97e760cbc DPMS re-enable patch by Loring Holden
arpi_esp
parents: 723
diff changeset
458 if (!DPMSEnable(mDisplay)) { // restoring power saving settings
00f97e760cbc DPMS re-enable patch by Loring Holden
arpi_esp
parents: 723
diff changeset
459 printf("DPMS not available?\n");
00f97e760cbc DPMS re-enable patch by Loring Holden
arpi_esp
parents: 723
diff changeset
460 } else {
00f97e760cbc DPMS re-enable patch by Loring Holden
arpi_esp
parents: 723
diff changeset
461 // 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
462 BOOL onoff;
00f97e760cbc DPMS re-enable patch by Loring Holden
arpi_esp
parents: 723
diff changeset
463 CARD16 state;
00f97e760cbc DPMS re-enable patch by Loring Holden
arpi_esp
parents: 723
diff changeset
464 DPMSInfo(mDisplay, &state, &onoff);
00f97e760cbc DPMS re-enable patch by Loring Holden
arpi_esp
parents: 723
diff changeset
465 if (onoff) {
00f97e760cbc DPMS re-enable patch by Loring Holden
arpi_esp
parents: 723
diff changeset
466 printf ("Successfully enabled DPMS\n");
00f97e760cbc DPMS re-enable patch by Loring Holden
arpi_esp
parents: 723
diff changeset
467 } else {
00f97e760cbc DPMS re-enable patch by Loring Holden
arpi_esp
parents: 723
diff changeset
468 printf ("Could not enable DPMS\n");
00f97e760cbc DPMS re-enable patch by Loring Holden
arpi_esp
parents: 723
diff changeset
469 }
00f97e760cbc DPMS re-enable patch by Loring Holden
arpi_esp
parents: 723
diff changeset
470 }
458
49b0474b2e26 I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents: 456
diff changeset
471 }
324
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 32
diff changeset
472 }
1345
be674b95b485 x11_common does not compile, when the XDPMS extension is not available on the
jkeil
parents: 1266
diff changeset
473 #endif
be674b95b485 x11_common does not compile, when the XDPMS extension is not available on the
jkeil
parents: 1266
diff changeset
474
324
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 32
diff changeset
475 if (timeout_save)
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 32
diff changeset
476 {
458
49b0474b2e26 I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents: 456
diff changeset
477 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
478 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
479 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
480 XGetScreenSaver(mDisplay, &timeout_save, &interval, &prefer_blank, &allow_exp);
324
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 32
diff changeset
481 }
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 32
diff changeset
482
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 32
diff changeset
483 }
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 32
diff changeset
484
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 32
diff changeset
485 void saver_off(Display *mDisplay) {
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 32
diff changeset
486
1345
be674b95b485 x11_common does not compile, when the XDPMS extension is not available on the
jkeil
parents: 1266
diff changeset
487 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
488 #ifdef HAVE_XDPMS
be674b95b485 x11_common does not compile, when the XDPMS extension is not available on the
jkeil
parents: 1266
diff changeset
489 int nothing;
324
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 32
diff changeset
490
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 32
diff changeset
491 if (DPMSQueryExtension(mDisplay, &nothing, &nothing))
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 32
diff changeset
492 {
458
49b0474b2e26 I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents: 456
diff changeset
493 BOOL onoff;
49b0474b2e26 I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents: 456
diff changeset
494 CARD16 state;
49b0474b2e26 I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents: 456
diff changeset
495 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
496 if (onoff)
49b0474b2e26 I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents: 456
diff changeset
497 {
741
00f97e760cbc DPMS re-enable patch by Loring Holden
arpi_esp
parents: 723
diff changeset
498 Status stat;
458
49b0474b2e26 I really hope that you will learn how to use cvs, sooner or later...
arpi_esp
parents: 456
diff changeset
499 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
500 dpms_disabled=1;
741
00f97e760cbc DPMS re-enable patch by Loring Holden
arpi_esp
parents: 723
diff changeset
501 stat = DPMSDisable(mDisplay); // monitor powersave off
00f97e760cbc DPMS re-enable patch by Loring Holden
arpi_esp
parents: 723
diff changeset
502 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
503 }
324
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 32
diff changeset
504 }
1345
be674b95b485 x11_common does not compile, when the XDPMS extension is not available on the
jkeil
parents: 1266
diff changeset
505 #endif
324
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 32
diff changeset
506 XGetScreenSaver(mDisplay, &timeout_save, &interval, &prefer_blank, &allow_exp);
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 32
diff changeset
507 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
508 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
509 // turning off screensaver
326
f6b5c2dbc88e OSD alpha renderers moved to osd.c
arpi_esp
parents: 324
diff changeset
510 }
448
198b46b739d8 qrva eletbe nem kene cvs-t elbaszni inkabb ne nyuljatok hozza baz+
arpi_esp
parents: 440
diff changeset
511
3990
87538547c8f4 xinerama fix by attila
atmos4
parents: 3954
diff changeset
512
87538547c8f4 xinerama fix by attila
atmos4
parents: 3954
diff changeset
513
87538547c8f4 xinerama fix by attila
atmos4
parents: 3954
diff changeset
514 #ifdef HAVE_XINERAMA
87538547c8f4 xinerama fix by attila
atmos4
parents: 3954
diff changeset
515 void vo_x11_xinerama_move(Display *dsp, Window w)
87538547c8f4 xinerama fix by attila
atmos4
parents: 3954
diff changeset
516 {
87538547c8f4 xinerama fix by attila
atmos4
parents: 3954
diff changeset
517 if(XineramaIsActive(dsp))
87538547c8f4 xinerama fix by attila
atmos4
parents: 3954
diff changeset
518 {
4017
21a75ab24703 Xinerama patch number two by attila.
atmos4
parents: 3990
diff changeset
519 /* printf("XXXX Xinerama screen: x: %hd y: %hd\n",xinerama_x,xinerama_y); */
21a75ab24703 Xinerama patch number two by attila.
atmos4
parents: 3990
diff changeset
520 XMoveWindow(dsp,w,xinerama_x,xinerama_y);
3990
87538547c8f4 xinerama fix by attila
atmos4
parents: 3954
diff changeset
521 }
87538547c8f4 xinerama fix by attila
atmos4
parents: 3954
diff changeset
522 }
448
198b46b739d8 qrva eletbe nem kene cvs-t elbaszni inkabb ne nyuljatok hozza baz+
arpi_esp
parents: 440
diff changeset
523 #endif
3990
87538547c8f4 xinerama fix by attila
atmos4
parents: 3954
diff changeset
524
4425
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
525 #ifdef HAVE_XF86VM
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
526 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
527 {
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
528 unsigned int vm_event, vm_error;
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
529 unsigned int vm_ver, vm_rev;
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
530 int i,j,have_vm=0;
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
531
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
532 int modecount;
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
533
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
534 if (XF86VidModeQueryExtension(mDisplay, &vm_event, &vm_error)) {
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
535 XF86VidModeQueryVersion(mDisplay, &vm_ver, &vm_rev);
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
536 printf("XF86VidMode Extension v%i.%i\n", vm_ver, vm_rev);
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
537 have_vm=1;
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
538 } else
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
539 printf("XF86VidMode Extenstion not available.\n");
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
540
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
541 if (have_vm) {
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
542 if (vidmodes==NULL)
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
543 XF86VidModeGetAllModeLines(mDisplay,mScreen,&modecount,&vidmodes);
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
544 j=0;
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
545 *modeline_width=vidmodes[0]->hdisplay;
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
546 *modeline_height=vidmodes[0]->vdisplay;
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
547
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
548 for (i=1; i<modecount; i++)
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
549 if ((vidmodes[i]->hdisplay >= X) && (vidmodes[i]->vdisplay >= Y))
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
550 if ( (vidmodes[i]->hdisplay < *modeline_width ) && (vidmodes[i]->vdisplay < *modeline_height) )
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
551 {
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
552 *modeline_width=vidmodes[i]->hdisplay;
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
553 *modeline_height=vidmodes[i]->vdisplay;
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
554 j=i;
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
555 }
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
556
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
557 printf("XF86VM: Selected video mode %dx%d for image size %dx%d.\n",*modeline_width, *modeline_height, X, Y);
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
558 XF86VidModeLockModeSwitch(mDisplay,mScreen,0);
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
559 XF86VidModeSwitchToMode(mDisplay,mScreen,vidmodes[j]);
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
560 XF86VidModeSwitchToMode(mDisplay,mScreen,vidmodes[j]);
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
561 X=(vo_screenwidth-*modeline_width)/2;
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
562 Y=(vo_screenheight-*modeline_height)/2;
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
563 XF86VidModeSetViewPort(mDisplay,mScreen,X,Y);
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
564 }
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
565 }
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
566
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
567 void vo_vm_close(Display *dpy)
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
568 {
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
569 #ifdef HAVE_NEW_GUI
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
570 if ((vidmodes!=NULL)&&( vo_window == None ) )
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
571 #else
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
572 if (vidmodes!=NULL)
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
573 #endif
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
574 {
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
575 int screen; screen=DefaultScreen( dpy );
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
576 XF86VidModeSwitchToMode(dpy,screen,vidmodes[0]);
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
577 XF86VidModeSwitchToMode(dpy,screen,vidmodes[0]);
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
578 free(vidmodes);
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
579 }
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
580 }
3990
87538547c8f4 xinerama fix by attila
atmos4
parents: 3954
diff changeset
581 #endif
4425
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
582
6144f63cbaa1 common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4181
diff changeset
583 #endif