annotate gui/wm/ws.c @ 33998:ca20e4098c1d

Preserve x and y position of a double-size window if possible. Only change position in an evDoubleSize event if necessary. Do so by "dragging" the window towards the upper left if it no longer fits into the screen. Add a new function wsMoveWindowWithin() to accomplish this.
author ib
date Thu, 08 Sep 2011 15:31:25 +0000
parents acf8545dc4b5
children 3cf824f66821
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
26458
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 26382
diff changeset
1 /*
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 26382
diff changeset
2 * AutoSpace Window System for Linux/Win32 v0.85
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 26382
diff changeset
3 * written by pontscho/fresh!mindworkz
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 26382
diff changeset
4 *
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 26382
diff changeset
5 * This file is part of MPlayer.
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 26382
diff changeset
6 *
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 26382
diff changeset
7 * MPlayer is free software; you can redistribute it and/or modify
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 26382
diff changeset
8 * it under the terms of the GNU General Public License as published by
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 26382
diff changeset
9 * the Free Software Foundation; either version 2 of the License, or
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 26382
diff changeset
10 * (at your option) any later version.
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 26382
diff changeset
11 *
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 26382
diff changeset
12 * MPlayer is distributed in the hope that it will be useful,
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 26382
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 26382
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 26382
diff changeset
15 * GNU General Public License for more details.
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 26382
diff changeset
16 *
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 26382
diff changeset
17 * You should have received a copy of the GNU General Public License along
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 26382
diff changeset
18 * with MPlayer; if not, write to the Free Software Foundation, Inc.,
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 26382
diff changeset
19 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 26382
diff changeset
20 */
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
21
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
22 #include <X11/Xlib.h>
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
23 #include <X11/Xproto.h>
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
24 #include <X11/Xutil.h>
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
25 #include <X11/keysym.h>
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
26 #include <X11/Xatom.h>
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
27
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
28 #include <stdio.h>
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
29 #include <stdlib.h>
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
30 #include <string.h>
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
31 #include <unistd.h>
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
32 #include <errno.h>
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
33
33123
9566100d88a1 Replace inttypes.h by stdint.h and remove inttypes.h where unneeded.
ib
parents: 32833
diff changeset
34 #include <stdint.h>
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
35
33264
284fc94290b9 Replace all GUI exits by guiExit().
ib
parents: 33123
diff changeset
36 #include "gui/interface.h"
26382
b2f4abcf20ed Make include paths consistent; do not use ../ in them.
diego
parents: 23795
diff changeset
37 #include "config.h"
b2f4abcf20ed Make include paths consistent; do not use ../ in them.
diego
parents: 23795
diff changeset
38 #include "libvo/x11_common.h"
b2f4abcf20ed Make include paths consistent; do not use ../ in them.
diego
parents: 23795
diff changeset
39 #include "libvo/video_out.h"
b2f4abcf20ed Make include paths consistent; do not use ../ in them.
diego
parents: 23795
diff changeset
40 #include "cpudetect.h"
b2f4abcf20ed Make include paths consistent; do not use ../ in them.
diego
parents: 23795
diff changeset
41 #include "libswscale/swscale.h"
32833
c4891d10ddbb Adjust #include paths after the merge of libavcore into libavutil in FFmpeg.
diego
parents: 32741
diff changeset
42 #include "libavutil/imgutils.h"
26382
b2f4abcf20ed Make include paths consistent; do not use ../ in them.
diego
parents: 23795
diff changeset
43 #include "libmpcodecs/vf_scale.h"
33264
284fc94290b9 Replace all GUI exits by guiExit().
ib
parents: 33123
diff changeset
44 #include "mp_core.h"
26382
b2f4abcf20ed Make include paths consistent; do not use ../ in them.
diego
parents: 23795
diff changeset
45 #include "mp_msg.h"
b2f4abcf20ed Make include paths consistent; do not use ../ in them.
diego
parents: 23795
diff changeset
46 #include "help_mp.h"
b2f4abcf20ed Make include paths consistent; do not use ../ in them.
diego
parents: 23795
diff changeset
47 #include "mplayer.h"
b2f4abcf20ed Make include paths consistent; do not use ../ in them.
diego
parents: 23795
diff changeset
48 #include "mpbswap.h"
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
49 #include "ws.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
50 #include "wsxdnd.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
51
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
52 #include <X11/extensions/XShm.h>
27377
d58d06eafe83 Change a bunch of X11-specific preprocessor directives.
diego
parents: 26458
diff changeset
53 #ifdef CONFIG_XSHAPE
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
54 #include <X11/extensions/shape.h>
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
55 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
56
27377
d58d06eafe83 Change a bunch of X11-specific preprocessor directives.
diego
parents: 26458
diff changeset
57 #ifdef CONFIG_XINERAMA
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
58 #include <X11/extensions/Xinerama.h>
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
59 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
60
27377
d58d06eafe83 Change a bunch of X11-specific preprocessor directives.
diego
parents: 26458
diff changeset
61 #ifdef CONFIG_XF86VM
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
62 #include <X11/extensions/xf86vmode.h>
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
63 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
64
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
65 #include <sys/ipc.h>
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
66 #include <sys/shm.h>
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
67
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 27377
diff changeset
68 #undef ENABLE_DPMS
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
69
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
70 typedef struct {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
71 unsigned long flags;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
72 unsigned long functions;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
73 unsigned long decorations;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
74 long input_mode;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
75 unsigned long status;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
76 } MotifWmHints;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
77
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
78 Atom wsMotifHints;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
79
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
80 int wsMaxX = 0; // Screen width.
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
81 int wsMaxY = 0; // Screen height.
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
82 int wsOrgX = 0; // Screen origin x.
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
83 int wsOrgY = 0; // Screen origin y.
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
84
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
85 Display *wsDisplay;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
86 int wsScreen;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
87 Window wsRootWin;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
88 XEvent wsEvent;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
89 int wsWindowDepth;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
90 GC wsHGC;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
91 MotifWmHints wsMotifWmHints;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
92 Atom wsTextProperlyAtom = None;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
93 int wsLayer = 0;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
94
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
95 int wsDepthOnScreen = 0;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
96 int wsRedMask = 0;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
97 int wsGreenMask = 0;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
98 int wsBlueMask = 0;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
99 int wsOutMask = 0;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
100 int wsNonNativeOrder = 0;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
101
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
102 int wsTrue = True;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
103
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
104 #define wsWLCount 5
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
105 wsTWindow *wsWindowList[wsWLCount] = { NULL, NULL, NULL, NULL, NULL };
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
106
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
107 unsigned long wsKeyTable[512];
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
108
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
109 int wsUseXShm = 1;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
110 int wsUseXShape = 1;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
111
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
112 static int wsSearch(Window win)
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
113 {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
114 int i;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
115
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
116 for (i = 0; i < wsWLCount; i++)
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
117 if (wsWindowList[i] && wsWindowList[i]->WindowID == win)
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
118 return i;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
119
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
120 return -1;
31325
e45b8fb721fd Move wsSearch function and make it static.
reimar
parents: 31324
diff changeset
121 }
e45b8fb721fd Move wsSearch function and make it static.
reimar
parents: 31324
diff changeset
122
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
123 // ---
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
124
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
125 #define PACK_RGB16(r, g, b, pixel) pixel = (b >> 3); \
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
126 pixel <<= 6; \
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
127 pixel |= (g >> 2); \
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
128 pixel <<= 5; \
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
129 pixel |= (r >> 3)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
130
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
131 #define PACK_RGB15(r, g, b, pixel) pixel = (b >> 3); \
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
132 pixel <<= 5; \
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
133 pixel |= (g >> 3); \
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
134 pixel <<= 5; \
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
135 pixel |= (r >> 3)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
136
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
137 struct SwsContext *sws_ctx = NULL;
32028
9e6fdede8ece gui: remove direct usage of rgb2rgb interface, use swscale instead
ramiro
parents: 31325
diff changeset
138 enum PixelFormat out_pix_fmt = PIX_FMT_NONE;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
139
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
140 // ---
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
141
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
142 #define MWM_HINTS_FUNCTIONS (1L << 0)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
143 #define MWM_HINTS_DECORATIONS (1L << 1)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
144 #define MWM_HINTS_INPUT_MODE (1L << 2)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
145 #define MWM_HINTS_STATUS (1L << 3)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
146
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
147 #define MWM_FUNC_ALL (1L << 0)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
148 #define MWM_FUNC_RESIZE (1L << 1)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
149 #define MWM_FUNC_MOVE (1L << 2)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
150 #define MWM_FUNC_MINIMIZE (1L << 3)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
151 #define MWM_FUNC_MAXIMIZE (1L << 4)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
152 #define MWM_FUNC_CLOSE (1L << 5)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
153
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
154 #define MWM_DECOR_ALL (1L << 0)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
155 #define MWM_DECOR_BORDER (1L << 1)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
156 #define MWM_DECOR_RESIZEH (1L << 2)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
157 #define MWM_DECOR_TITLE (1L << 3)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
158 #define MWM_DECOR_MENU (1L << 4)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
159 #define MWM_DECOR_MINIMIZE (1L << 5)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
160 #define MWM_DECOR_MAXIMIZE (1L << 6)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
161
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
162 #define MWM_INPUT_MODELESS 0
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
163 #define MWM_INPUT_PRIMARY_APPLICATION_MODAL 1
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
164 #define MWM_INPUT_SYSTEM_MODAL 2
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
165 #define MWM_INPUT_FULL_APPLICATION_MODAL 3
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
166 #define MWM_INPUT_APPLICATION_MODAL MWM_INPUT_PRIMARY_APPLICATION_MODAL
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
167
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
168 #define MWM_TEAROFF_WINDOW (1L << 0)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
169
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
170 void wsWindowDecoration(wsTWindow *win, long d)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
171 {
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
172 wsMotifHints = XInternAtom(wsDisplay, "_MOTIF_WM_HINTS", 0);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
173
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
174 if (wsMotifHints == None)
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
175 return;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
176
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
177 memset(&wsMotifWmHints, 0, sizeof(MotifWmHints));
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
178 wsMotifWmHints.flags = MWM_HINTS_FUNCTIONS | MWM_HINTS_DECORATIONS;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
179
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
180 if (d) {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
181 wsMotifWmHints.functions = MWM_FUNC_MOVE | MWM_FUNC_CLOSE | MWM_FUNC_MINIMIZE | MWM_FUNC_MAXIMIZE | MWM_FUNC_RESIZE;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
182 wsMotifWmHints.decorations = MWM_DECOR_ALL;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
183 }
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
184
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
185 XChangeProperty(wsDisplay, win->WindowID, wsMotifHints, wsMotifHints, 32,
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
186 PropModeReplace, (unsigned char *)&wsMotifWmHints, 5);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
187 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
188
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
189 // ----------------------------------------------------------------------------------------------
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
190 // Init X Window System.
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
191 // ----------------------------------------------------------------------------------------------
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
192
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
193 static int wsErrorHandler(Display *dpy, XErrorEvent *Event)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
194 {
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
195 char type[128];
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
196
33541
729826b857cf Avoid compiler warnings.
ib
parents: 33540
diff changeset
197 XGetErrorText(dpy, Event->error_code, type, 128);
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
198 fprintf(stderr, "[ws] Error in display.\n");
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
199 fprintf(stderr, "[ws] Error code: %d ( %s )\n", Event->error_code, type);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
200 fprintf(stderr, "[ws] Request code: %d\n", Event->request_code);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
201 fprintf(stderr, "[ws] Minor code: %d\n", Event->minor_code);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
202 fprintf(stderr, "[ws] Modules: %s\n", current_module ? current_module : "(NULL)");
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
203 return 0;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
204 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
205
33994
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
206 /**
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
207 * @brief Update screen width, screen height and screen origin x and y
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
208 * from xinerama information.
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
209 *
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
210 * Set wsOrgX, wsOrgY, wsMaxX and wsMaxY as well as
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
211 * win->X, win->Y, win->Width and win->Height.
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
212 *
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
213 * @param win pointer to a ws window structure or NULL
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
214 */
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
215 static void wsUpdateXineramaInfo(wsTWindow *win)
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
216 {
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
217 if (win) {
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
218 vo_dx = win->X;
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
219 vo_dy = win->Y;
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
220 vo_dwidth = win->Width;
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
221 vo_dheight = win->Height;
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
222 }
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
223
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
224 vo_screenwidth = wsMaxX;
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
225 vo_screenheight = wsMaxY;
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
226
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
227 update_xinerama_info();
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
228
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
229 wsMaxX = vo_screenwidth;
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
230 wsMaxY = vo_screenheight;
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
231 wsOrgX = xinerama_x;
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
232 wsOrgY = xinerama_y;
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
233
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
234 if (win) {
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
235 win->X = wsOrgX;
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
236 win->Y = wsOrgY;
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
237 win->Width = wsMaxX;
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
238 win->Height = wsMaxY;
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
239 }
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
240 }
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
241
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
242 void wsXInit(Display *mDisplay)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
243 {
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
244 int eventbase;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
245 int errorbase;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
246
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
247 // NOTE TO MYSELF: Use global mDisplay, get rid of wsDisplay.
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
248 wsDisplay = mDisplay;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
249
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
250 XSetErrorHandler(wsErrorHandler);
31323
c674bb16fa6d Install error handler as early as possible to avoid crashing.
reimar
parents: 31314
diff changeset
251
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
252 /* enable DND atoms */
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
253 wsXDNDInitialize();
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
254
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
255 { /* on remote display XShm will be disabled - LGB */
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
256 char *dispname = DisplayString(wsDisplay);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
257 int localdisp = 1;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 27377
diff changeset
258
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
259 if (dispname && *dispname != ':') {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
260 localdisp = 0;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
261 wsUseXShm = 0;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
262 }
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
263
33985
d99f341d8442 Replace all mp_dbg() calls by mp_msg().
ib
parents: 33977
diff changeset
264 mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[ws] display name: %s => %s display.\n", dispname, localdisp ? "local" : "REMOTE");
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
265
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
266 if (!localdisp)
33549
4f6e515e5bd1 Adjust message levels in wsXInit().
ib
parents: 33548
diff changeset
267 mp_msg(MSGT_GPLAYER, MSGL_INFO, MSGTR_WS_RemoteDisplay);
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
268 }
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
269
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
270 if (!XShmQueryExtension(wsDisplay)) {
33549
4f6e515e5bd1 Adjust message levels in wsXInit().
ib
parents: 33548
diff changeset
271 mp_msg(MSGT_GPLAYER, MSGL_INFO, MSGTR_WS_NoXshm);
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
272 wsUseXShm = 0;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
273 }
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
274
27377
d58d06eafe83 Change a bunch of X11-specific preprocessor directives.
diego
parents: 26458
diff changeset
275 #ifdef CONFIG_XSHAPE
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
276
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
277 if (!XShapeQueryExtension(wsDisplay, &eventbase, &errorbase)) {
33549
4f6e515e5bd1 Adjust message levels in wsXInit().
ib
parents: 33548
diff changeset
278 mp_msg(MSGT_GPLAYER, MSGL_WARN, MSGTR_WS_NoXshape);
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
279 wsUseXShape = 0;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
280 }
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
281
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
282 #else
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
283 wsUseXShape = 0;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
284 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
285
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
286 XSynchronize(wsDisplay, True);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
287
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
288 wsScreen = DefaultScreen(wsDisplay);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
289 wsRootWin = RootWindow(wsDisplay, wsScreen);
27377
d58d06eafe83 Change a bunch of X11-specific preprocessor directives.
diego
parents: 26458
diff changeset
290 #ifdef CONFIG_XF86VM
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
291 {
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
292 int clock;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
293 XF86VidModeModeLine modeline;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
294
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
295 XF86VidModeGetModeLine(wsDisplay, wsScreen, &clock, &modeline);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
296 wsMaxX = modeline.hdisplay;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
297 wsMaxY = modeline.vdisplay;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
298 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
299 #endif
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
300 {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
301 wsOrgX = wsOrgY = 0;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
302
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
303 if (!wsMaxX)
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
304 wsMaxX = DisplayWidth(wsDisplay, wsScreen);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
305
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
306 if (!wsMaxY)
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
307 wsMaxY = DisplayHeight(wsDisplay, wsScreen);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
308 }
33994
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
309
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
310 wsUpdateXineramaInfo(NULL);
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
311
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
312 wsGetDepthOnScreen();
33549
4f6e515e5bd1 Adjust message levels in wsXInit().
ib
parents: 33548
diff changeset
313
33985
d99f341d8442 Replace all mp_dbg() calls by mp_msg().
ib
parents: 33977
diff changeset
314 mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[ws] Screen depth: %d\n", wsDepthOnScreen);
d99f341d8442 Replace all mp_dbg() calls by mp_msg().
ib
parents: 33977
diff changeset
315 mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[ws] size: %dx%d\n", wsMaxX, wsMaxY);
33549
4f6e515e5bd1 Adjust message levels in wsXInit().
ib
parents: 33548
diff changeset
316
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
317 #ifdef CONFIG_XINERAMA
33985
d99f341d8442 Replace all mp_dbg() calls by mp_msg().
ib
parents: 33977
diff changeset
318 mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[ws] origin: +%d+%d\n", wsOrgX, wsOrgY);
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
319 #endif
33549
4f6e515e5bd1 Adjust message levels in wsXInit().
ib
parents: 33548
diff changeset
320
33985
d99f341d8442 Replace all mp_dbg() calls by mp_msg().
ib
parents: 33977
diff changeset
321 mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[ws] red mask: 0x%x\n", wsRedMask);
d99f341d8442 Replace all mp_dbg() calls by mp_msg().
ib
parents: 33977
diff changeset
322 mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[ws] green mask: 0x%x\n", wsGreenMask);
d99f341d8442 Replace all mp_dbg() calls by mp_msg().
ib
parents: 33977
diff changeset
323 mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[ws] blue mask: 0x%x\n", wsBlueMask);
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
324
33549
4f6e515e5bd1 Adjust message levels in wsXInit().
ib
parents: 33548
diff changeset
325 #ifdef MP_DEBUG
33550
fea429f90bfd Cosmetic: Adjust indent.
ib
parents: 33549
diff changeset
326 if (wsUseXShm) {
fea429f90bfd Cosmetic: Adjust indent.
ib
parents: 33549
diff changeset
327 int minor, major, shp;
33549
4f6e515e5bd1 Adjust message levels in wsXInit().
ib
parents: 33548
diff changeset
328
33550
fea429f90bfd Cosmetic: Adjust indent.
ib
parents: 33549
diff changeset
329 XShmQueryVersion(wsDisplay, &major, &minor, &shp);
33985
d99f341d8442 Replace all mp_dbg() calls by mp_msg().
ib
parents: 33977
diff changeset
330 mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[ws] XShm version is %d.%d\n", major, minor);
33550
fea429f90bfd Cosmetic: Adjust indent.
ib
parents: 33549
diff changeset
331 }
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
332
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
333 #ifdef CONFIG_XSHAPE
33550
fea429f90bfd Cosmetic: Adjust indent.
ib
parents: 33549
diff changeset
334 if (wsUseXShape) {
fea429f90bfd Cosmetic: Adjust indent.
ib
parents: 33549
diff changeset
335 int minor, major;
33549
4f6e515e5bd1 Adjust message levels in wsXInit().
ib
parents: 33548
diff changeset
336
33550
fea429f90bfd Cosmetic: Adjust indent.
ib
parents: 33549
diff changeset
337 XShapeQueryVersion(wsDisplay, &major, &minor);
33985
d99f341d8442 Replace all mp_dbg() calls by mp_msg().
ib
parents: 33977
diff changeset
338 mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[ws] XShape version is %d.%d\n", major, minor);
33550
fea429f90bfd Cosmetic: Adjust indent.
ib
parents: 33549
diff changeset
339 }
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
340 #endif
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
341 #endif
33549
4f6e515e5bd1 Adjust message levels in wsXInit().
ib
parents: 33548
diff changeset
342
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
343 wsOutMask = wsGetOutMask();
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
344
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
345 switch (wsOutMask) {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
346 case wsRGB32:
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
347 out_pix_fmt = PIX_FMT_RGB32;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
348 break;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
349
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
350 case wsBGR32:
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
351 out_pix_fmt = PIX_FMT_BGR32;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
352 break;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
353
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
354 case wsRGB24:
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
355 out_pix_fmt = PIX_FMT_RGB24;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
356 break;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
357
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
358 case wsBGR24:
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
359 out_pix_fmt = PIX_FMT_BGR24;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
360 break;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
361
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
362 case wsRGB16:
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
363 out_pix_fmt = PIX_FMT_RGB565;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
364 break;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
365
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
366 case wsBGR16:
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
367 out_pix_fmt = PIX_FMT_BGR565;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
368 break;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
369
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
370 case wsRGB15:
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
371 out_pix_fmt = PIX_FMT_RGB555;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
372 break;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
373
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
374 case wsBGR15:
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
375 out_pix_fmt = PIX_FMT_BGR555;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
376 break;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
377 }
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
378 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
379
33995
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
380 /**
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
381 * @brief Calculate and store the x and y position for a window.
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
382 *
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
383 * @param win pointer to a ws window structure
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
384 * @param x x position of the window (real/absolute or mock)
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
385 * @param y y position of the window (real/absolute or mock)
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
386 * @param width width of the area to place the window in
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
387 * @param height height of the area to place the window in
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
388 */
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
389 static void wsWindowPosition(wsTWindow *win, int x, int y, int width, int height)
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
390 {
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
391 switch (x) {
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
392 case -1:
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
393 win->X = wsOrgX + (wsMaxX - width) / 2;
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
394 break;
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
395
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
396 case -2:
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
397 win->X = wsOrgX + wsMaxX - width;
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
398 break;
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
399
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
400 default:
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
401 win->X = x;
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
402 break;
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
403 }
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
404
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
405 switch (y) {
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
406 case -1:
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
407 win->Y = wsOrgY + (wsMaxY - height) / 2;
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
408 break;
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
409
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
410 case -2:
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
411 win->Y = wsOrgY + wsMaxY - height;
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
412 break;
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
413
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
414 default:
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
415 win->Y = y;
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
416 break;
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
417 }
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
418 }
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
419
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
420 // ----------------------------------------------------------------------------------------------
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
421 // Create window.
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
422 // X,Y : window position
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
423 // wX,wY : size of window
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
424 // bW : border width
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
425 // cV : visible mouse cursor on window
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
426 // D : visible frame, title, etc.
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
427 // sR : screen ratio
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
428 // ----------------------------------------------------------------------------------------------
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
429
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
430 XClassHint wsClassHint;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
431 XTextProperty wsTextProperty;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
432 Window LeaderWindow;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
433
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
434 void wsCreateWindow(wsTWindow *win, int X, int Y, int wX, int hY, int bW, int cV, unsigned char D, char *label)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
435 {
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
436 int depth;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
437
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
438 win->Property = D;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
439
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
440 if (D & wsShowFrame)
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
441 win->Decorations = 1;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
442
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
443 wsHGC = DefaultGC(wsDisplay, wsScreen);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
444
33995
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
445 wsWindowPosition(win, X, Y, wX, hY);
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
446
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
447 win->Width = wX;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
448 win->Height = hY;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
449 win->OldX = win->X;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
450 win->OldY = win->Y;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
451 win->OldWidth = win->Width;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
452 win->OldHeight = win->Height;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
453
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
454 // Border size for window.
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
455 win->BorderWidth = bW;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
456 // Hide Mouse Cursor
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
457 win->wsCursor = None;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
458 win->wsMouseEventType = cV;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
459 win->wsCursorData[0] = 0;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
460 win->wsCursorPixmap = XCreateBitmapFromData(wsDisplay, wsRootWin, win->wsCursorData, 1, 1);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
461
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
462 if (!(cV & wsShowMouseCursor))
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
463 win->wsCursor = XCreatePixmapCursor(wsDisplay, win->wsCursorPixmap, win->wsCursorPixmap, &win->wsColor, &win->wsColor, 0, 0);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
464
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
465 depth = vo_find_depth_from_visuals(wsDisplay, wsScreen, NULL);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
466
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
467 if (depth < 15) {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
468 mp_msg(MSGT_GPLAYER, MSGL_FATAL, MSGTR_WS_ColorDepthTooLow);
33768
cee9987bc81d Remove guiExit().
ib
parents: 33550
diff changeset
469 mplayer(MPLAYER_EXIT_GUI, EXIT_ERROR, 0);
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
470 }
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
471
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
472 XMatchVisualInfo(wsDisplay, wsScreen, depth, TrueColor, &win->VisualInfo);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
473
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
474 // ---
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
475 win->AtomLeaderClient = XInternAtom(wsDisplay, "WM_CLIENT_LEADER", False);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
476 win->AtomDeleteWindow = XInternAtom(wsDisplay, "WM_DELETE_WINDOW", False);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
477 win->AtomTakeFocus = XInternAtom(wsDisplay, "WM_TAKE_FOCUS", False);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
478 win->AtomRolle = XInternAtom(wsDisplay, "WM_WINDOW_ROLE", False);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
479 win->AtomWMSizeHint = XInternAtom(wsDisplay, "WM_SIZE_HINT", False);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
480 win->AtomWMNormalHint = XInternAtom(wsDisplay, "WM_NORMAL_HINT", False);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
481 win->AtomProtocols = XInternAtom(wsDisplay, "WM_PROTOCOLS", False);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
482 win->AtomsProtocols[0] = win->AtomDeleteWindow;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
483 win->AtomsProtocols[1] = win->AtomTakeFocus;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
484 win->AtomsProtocols[2] = win->AtomRolle;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
485 // ---
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
486
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
487 win->WindowAttrib.background_pixel = BlackPixel(wsDisplay, wsScreen);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
488 win->WindowAttrib.border_pixel = WhitePixel(wsDisplay, wsScreen);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
489 win->WindowAttrib.colormap = XCreateColormap(wsDisplay, wsRootWin, win->VisualInfo.visual, AllocNone);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
490 win->WindowAttrib.event_mask = StructureNotifyMask | FocusChangeMask |
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
491 ExposureMask | PropertyChangeMask |
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
492 EnterWindowMask | LeaveWindowMask |
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
493 VisibilityChangeMask |
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
494 KeyPressMask | KeyReleaseMask;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
495
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
496 if ((cV & wsHandleMouseButton))
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
497 win->WindowAttrib.event_mask |= ButtonPressMask | ButtonReleaseMask;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
498
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
499 if ((cV & wsHandleMouseMove))
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
500 win->WindowAttrib.event_mask |= PointerMotionMask;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
501
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
502 win->WindowAttrib.cursor = win->wsCursor;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
503 win->WindowAttrib.override_redirect = False;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
504
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
505 if (D & wsOverredirect)
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
506 win->WindowAttrib.override_redirect = True;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
507
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
508 win->WindowMask = CWBackPixel | CWBorderPixel |
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
509 CWColormap | CWEventMask | CWCursor |
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
510 CWOverrideRedirect;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
511
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
512 win->WindowID = XCreateWindow(wsDisplay,
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
513 (win->Parent != 0 ? win->Parent : wsRootWin),
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
514 win->X, win->Y, win->Width, win->Height, win->BorderWidth,
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
515 win->VisualInfo.depth,
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
516 InputOutput,
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
517 win->VisualInfo.visual,
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
518 win->WindowMask, &win->WindowAttrib);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
519
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
520 wsClassHint.res_name = "MPlayer";
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
521
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
522 wsClassHint.res_class = "MPlayer";
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
523 XSetClassHint(wsDisplay, win->WindowID, &wsClassHint);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
524
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
525 win->SizeHint.flags = PPosition | PSize | PResizeInc | PWinGravity; // | PBaseSize;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
526 win->SizeHint.x = win->X;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
527 win->SizeHint.y = win->Y;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
528 win->SizeHint.width = win->Width;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
529 win->SizeHint.height = win->Height;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
530
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
531 if (D & wsMinSize) {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
532 win->SizeHint.flags |= PMinSize;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
533 win->SizeHint.min_width = win->Width;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
534 win->SizeHint.min_height = win->Height;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
535 }
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
536
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
537 if (D & wsMaxSize) {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
538 win->SizeHint.flags |= PMaxSize;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
539 win->SizeHint.max_width = win->Width;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
540 win->SizeHint.max_height = win->Height;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
541 }
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
542
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
543 win->SizeHint.height_inc = 1;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
544 win->SizeHint.width_inc = 1;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
545 win->SizeHint.base_width = win->Width;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
546 win->SizeHint.base_height = win->Height;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
547 win->SizeHint.win_gravity = StaticGravity;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
548 XSetWMNormalHints(wsDisplay, win->WindowID, &win->SizeHint);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
549
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
550 win->WMHints.flags = InputHint | StateHint;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
551 win->WMHints.input = True;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
552 win->WMHints.initial_state = NormalState;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
553 XSetWMHints(wsDisplay, win->WindowID, &win->WMHints);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
554
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
555 wsWindowDecoration(win, win->Decorations);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
556 XStoreName(wsDisplay, win->WindowID, label);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
557 XmbSetWMProperties(wsDisplay, win->WindowID, label, label, NULL, 0, NULL, NULL, NULL);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
558
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
559 XSetWMProtocols(wsDisplay, win->WindowID, win->AtomsProtocols, 3);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
560 XChangeProperty(wsDisplay, win->WindowID,
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
561 win->AtomLeaderClient,
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
562 XA_WINDOW, 32, PropModeReplace,
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
563 (unsigned char *)&LeaderWindow, 1);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
564
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
565 wsTextProperty.value = label;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
566 wsTextProperty.encoding = XA_STRING;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
567 wsTextProperty.format = 8;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
568 wsTextProperty.nitems = strlen(label);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
569 XSetWMIconName(wsDisplay, win->WindowID, &wsTextProperty);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
570
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
571 win->wGC = XCreateGC(wsDisplay, win->WindowID,
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
572 GCForeground | GCBackground,
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
573 &win->wGCV);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
574
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
575 win->Visible = 0;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
576 win->Focused = 0;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
577 win->Mapped = 0;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
578 win->Rolled = 0;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
579
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
580 if (D & wsShowWindow)
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
581 XMapWindow(wsDisplay, win->WindowID);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
582
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
583 wsCreateImage(win, win->Width, win->Height);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
584 // --- End of creating --------------------------------------------------------------------------
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
585
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
586 {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
587 int i;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
588
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
589 for (i = 0; i < wsWLCount; i++)
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
590 if (wsWindowList[i] == NULL)
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
591 break;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
592
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
593 if (i == wsWLCount) {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
594 mp_msg(MSGT_GPLAYER, MSGL_FATAL, MSGTR_WS_TooManyOpenWindows);
33768
cee9987bc81d Remove guiExit().
ib
parents: 33550
diff changeset
595 mplayer(MPLAYER_EXIT_GUI, EXIT_ERROR, 0);
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
596 }
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
597
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
598 wsWindowList[i] = win;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
599 }
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
600
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
601 XFlush(wsDisplay);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
602 XSync(wsDisplay, False);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
603
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
604 win->ReDraw = NULL;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
605 win->ReSize = NULL;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
606 win->Idle = NULL;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
607 win->MouseHandler = NULL;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
608 win->KeyHandler = NULL;
33985
d99f341d8442 Replace all mp_dbg() calls by mp_msg().
ib
parents: 33977
diff changeset
609 mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[ws] window is created. ( %s ).\n", label);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
610 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
611
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
612 void wsDestroyWindow(wsTWindow *win)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
613 {
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
614 int l;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
615
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
616 l = wsSearch(win->WindowID);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
617 wsWindowList[l] = NULL;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
618
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
619 if (win->wsCursor != None) {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
620 XFreeCursor(wsDisplay, win->wsCursor);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
621 win->wsCursor = None;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
622 }
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
623
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
624 XFreeGC(wsDisplay, win->wGC);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
625 XUnmapWindow(wsDisplay, win->WindowID);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
626 wsDestroyImage(win);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
627 XDestroyWindow(wsDisplay, win->WindowID);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
628 #if 0
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
629 win->ReDraw = NULL;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
630 win->ReSize = NULL;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
631 win->Idle = NULL;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
632 win->MouseHandler = NULL;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
633 win->KeyHandler = NULL;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
634 win->Visible = 0;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
635 win->Focused = 0;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
636 win->Mapped = 0;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
637 win->Rolled = 0;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
638 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
639 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
640
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
641 // ----------------------------------------------------------------------------------------------
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
642 // Handle events.
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
643 // ----------------------------------------------------------------------------------------------
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
644
33541
729826b857cf Avoid compiler warnings.
ib
parents: 33540
diff changeset
645 Bool wsEvents(Display *display, XEvent *Event)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
646 {
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
647 unsigned long i = 0;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
648 int l;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
649 int x, y;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
650 Window child_window = 0;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
651
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
652 l = wsSearch(Event->xany.window);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
653
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
654 if (l == -1)
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
655 return !wsTrue;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
656
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
657 wsWindowList[l]->State = 0;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
658
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
659 switch (Event->type) {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
660 case ClientMessage:
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
661
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
662 if (Event->xclient.message_type == wsWindowList[l]->AtomProtocols) {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
663 if ((Atom)Event->xclient.data.l[0] == wsWindowList[l]->AtomDeleteWindow) {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
664 i = wsWindowClosed;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
665 goto expose;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
666 }
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
667
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
668 if ((Atom)Event->xclient.data.l[0] == wsWindowList[l]->AtomTakeFocus) {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
669 i = wsWindowFocusIn;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
670 wsWindowList[l]->Focused = wsFocused;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
671 goto expose;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
672 }
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
673
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
674 if ((Atom)Event->xclient.data.l[0] == wsWindowList[l]->AtomRolle) {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
675 mp_msg(MSGT_GPLAYER, MSGL_V, "[ws] role set.\n");
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
676 }
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
677 } else {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
678 /* try to process DND events */
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
679 wsXDNDProcessClientMessage(wsWindowList[l], &Event->xclient);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
680 }
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
681
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
682 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
683
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
684 case MapNotify:
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
685 i = wsWindowMapped;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
686 wsWindowList[l]->Mapped = wsMapped;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
687 goto expose;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
688
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
689 case UnmapNotify:
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
690 i = wsWindowUnmapped;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
691 wsWindowList[l]->Mapped = wsNone;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
692 goto expose;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
693
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
694 case FocusIn:
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
695
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
696 if (wsWindowList[l]->Focused == wsFocused)
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
697 break;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
698
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
699 i = wsWindowFocusIn;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
700 wsWindowList[l]->Focused = wsFocused;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
701 goto expose;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
702
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
703 case FocusOut:
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
704
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
705 if (wsWindowList[l]->Focused == wsNone)
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
706 break;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
707
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
708 i = wsWindowFocusOut;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
709 wsWindowList[l]->Focused = wsNone;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
710 goto expose;
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
711
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
712 case VisibilityNotify:
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
713
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
714 switch (Event->xvisibility.state) {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
715 case VisibilityUnobscured:
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
716 i = wsWindowVisible;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
717 wsWindowList[l]->Visible = wsVisible;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
718 goto expose;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
719
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
720 case VisibilityFullyObscured:
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
721 i = wsWindowNotVisible;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
722 wsWindowList[l]->Visible = wsNotVisible;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
723 goto expose;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
724
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
725 case VisibilityPartiallyObscured:
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
726 i = wsWindowPartialVisible;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
727 wsWindowList[l]->Visible = wsPVisible;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
728 goto expose;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
729 }
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
730
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
731 expose:
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
732 wsWindowList[l]->State = i;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
733
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
734 if (wsWindowList[l]->ReDraw)
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
735 wsWindowList[l]->ReDraw();
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
736
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
737 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
738
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
739 case Expose:
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
740 wsWindowList[l]->State = wsWindowExpose;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
741
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
742 if ((wsWindowList[l]->ReDraw) && (!Event->xexpose.count))
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
743 wsWindowList[l]->ReDraw();
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
744
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
745 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
746
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
747 case ConfigureNotify:
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
748 XTranslateCoordinates(wsDisplay, wsWindowList[l]->WindowID, wsRootWin, 0, 0, &x, &y, &child_window);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
749
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
750 if ((wsWindowList[l]->X != x) || (wsWindowList[l]->Y != y) || (wsWindowList[l]->Width != Event->xconfigure.width) || (wsWindowList[l]->Height != Event->xconfigure.height)) {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
751 wsWindowList[l]->X = x;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
752 wsWindowList[l]->Y = y;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
753 wsWindowList[l]->Width = Event->xconfigure.width;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
754 wsWindowList[l]->Height = Event->xconfigure.height;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
755
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
756 if (wsWindowList[l]->ReSize)
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
757 wsWindowList[l]->ReSize(wsWindowList[l]->X, wsWindowList[l]->Y, wsWindowList[l]->Width, wsWindowList[l]->Height);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
758 }
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
759
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
760 wsWindowList[l]->Rolled = wsNone;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
761
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
762 if (Event->xconfigure.y < 0) {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
763 i = wsWindowRolled;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
764 wsWindowList[l]->Rolled = wsRolled;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
765 goto expose;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
766 }
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
767
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
768 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
769
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
770 case KeyPress:
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
771 i = wsKeyPressed;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
772 goto keypressed;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
773
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
774 case KeyRelease:
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
775 i = wsKeyReleased;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
776 keypressed:
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
777 wsWindowList[l]->Alt = 0;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
778 wsWindowList[l]->Shift = 0;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
779 wsWindowList[l]->NumLock = 0;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
780 wsWindowList[l]->Control = 0;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
781 wsWindowList[l]->CapsLock = 0;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
782
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
783 if (Event->xkey.state & Mod1Mask)
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
784 wsWindowList[l]->Alt = 1;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
785
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
786 if (Event->xkey.state & Mod2Mask)
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
787 wsWindowList[l]->NumLock = 1;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
788
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
789 if (Event->xkey.state & ControlMask)
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
790 wsWindowList[l]->Control = 1;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
791
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
792 if (Event->xkey.state & ShiftMask)
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
793 wsWindowList[l]->Shift = 1;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
794
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
795 if (Event->xkey.state & LockMask)
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
796 wsWindowList[l]->CapsLock = 1;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
797
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
798 #if 0
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
799 {
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
800 KeySym keySym;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
801 keySym = XKeycodeToKeysym(wsDisplay, Event->xkey.keycode, 0);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
802
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
803 if (keySym != NoSymbol) {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
804 keySym = ((keySym & 0xff00) != 0 ? ((keySym & 0x00ff) + 256) : (keySym));
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
805 wsKeyTable[keySym] = i;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
806
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
807 if (wsWindowList[l]->KeyHandler)
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
808 wsWindowList[l]->KeyHandler(Event->xkey.state, i, keySym);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
809 }
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
810 }
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
811 #else
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
812 {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
813 int key;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
814 char buf[100];
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
815 KeySym keySym;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
816 static XComposeStatus stat;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
817
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
818 XLookupString(&Event->xkey, buf, sizeof(buf), &keySym, &stat);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
819 key = ((keySym & 0xff00) != 0 ? ((keySym & 0x00ff) + 256) : (keySym));
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
820 wsKeyTable[key] = i;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
821
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
822 if (wsWindowList[l]->KeyHandler)
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
823 wsWindowList[l]->KeyHandler(Event->xkey.keycode, i, key);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
824 }
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
825 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
826 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
827
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
828 case MotionNotify:
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
829 i = wsMoveMouse;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
830 {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
831 /* pump all motion events from the display queue:
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
832 * this way it works faster when moving the window */
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
833 static XEvent e;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
834
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
835 if (Event->xmotion.state) {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
836 while (XCheckTypedWindowEvent(display, Event->xany.window, MotionNotify, &e)) {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
837 /* FIXME: need to make sure we didn't release/press the button in between...*/
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
838 /* FIXME: do we need some timeout here to make sure we don't spend too much time
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
839 * removing events from the queue? */
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
840 Event = &e;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
841 }
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
842 }
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
843 }
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
844 goto buttonreleased;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
845
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
846 case ButtonRelease:
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
847 i = Event->xbutton.button + 128;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
848 goto buttonreleased;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
849
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
850 case ButtonPress:
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
851 i = Event->xbutton.button;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
852 goto buttonreleased;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
853
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
854 case EnterNotify:
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
855 i = wsEnterWindow;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
856 goto buttonreleased;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
857
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
858 case LeaveNotify:
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
859 i = wsLeaveWindow;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
860 buttonreleased:
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
861
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
862 if (wsWindowList[l]->MouseHandler)
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
863 wsWindowList[l]->MouseHandler(i, Event->xbutton.x, Event->xbutton.y, Event->xmotion.x_root, Event->xmotion.y_root);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
864
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
865 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
866
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
867 case SelectionNotify:
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
868 /* Handle DandD */
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
869 wsXDNDProcessSelection(wsWindowList[l], Event);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
870 break;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
871 }
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
872
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
873 XFlush(wsDisplay);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
874 XSync(wsDisplay, False);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
875 return !wsTrue;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
876 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
877
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
878 void wsHandleEvents(void)
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
879 {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
880 // handle pending events
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
881 while (XPending(wsDisplay)) {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
882 XNextEvent(wsDisplay, &wsEvent);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
883 // printf("### X event: %d [%d]\n",wsEvent.type,delay);
33541
729826b857cf Avoid compiler warnings.
ib
parents: 33540
diff changeset
884 wsEvents(wsDisplay, &wsEvent);
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
885 }
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
886 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
887
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
888 void wsMainLoop(void)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
889 {
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
890 int delay = 20;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
891
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
892 mp_msg(MSGT_GPLAYER, MSGL_V, "[ws] init threads: %d\n", XInitThreads());
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
893 XSynchronize(wsDisplay, False);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
894 XLockDisplay(wsDisplay);
33541
729826b857cf Avoid compiler warnings.
ib
parents: 33540
diff changeset
895 // XIfEvent( wsDisplay,&wsEvent,wsEvents );
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
896
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
897 while (wsTrue) {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
898 // handle pending events
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
899 while (XPending(wsDisplay)) {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
900 XNextEvent(wsDisplay, &wsEvent);
33541
729826b857cf Avoid compiler warnings.
ib
parents: 33540
diff changeset
901 wsEvents(wsDisplay, &wsEvent);
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
902 delay = 0;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
903 }
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
904
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
905 usleep(delay * 1000); // FIXME!
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
906
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
907 if (delay < 10 * 20)
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
908 delay += 20; // pump up delay up to 0.2 sec (low activity)
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
909 }
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
910
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
911 XUnlockDisplay(wsDisplay);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
912 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
913
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
914 // ----------------------------------------------------------------------------------------------
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
915 // Move window to selected layer
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
916 // ----------------------------------------------------------------------------------------------
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
917
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
918 #define WIN_LAYER_ONBOTTOM 2
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
919 #define WIN_LAYER_NORMAL 4
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
920 #define WIN_LAYER_ONTOP 10
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
921
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
922 void wsSetLayer(Display *wsDisplay, Window win, int layer)
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
923 {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
924 vo_x11_setlayer(wsDisplay, win, layer);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
925 }
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
926
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
927 // ----------------------------------------------------------------------------------------------
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
928 // Switch to fullscreen.
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
929 // ----------------------------------------------------------------------------------------------
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
930 void wsFullScreen(wsTWindow *win)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
931 {
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
932 if (win->isFullScreen) {
33937
ab4b48ef5a68 Add a parameter to vo_x11_ewmh_fullscreen().
ib
parents: 33925
diff changeset
933 vo_x11_ewmh_fullscreen(win->WindowID, _NET_WM_STATE_REMOVE); // removes fullscreen state if wm supports EWMH
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
934
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
935 if (!(vo_fs_type & vo_wm_FULLSCREEN)) { // shouldn't be needed with EWMH fs
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
936 win->X = win->OldX;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
937 win->Y = win->OldY;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
938 win->Width = win->OldWidth;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
939 win->Height = win->OldHeight;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
940 }
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
941
33954
8082db6c946a Some cosmetic changes in wsFullScreen().
ib
parents: 33953
diff changeset
942 win->isFullScreen = False;
8082db6c946a Some cosmetic changes in wsFullScreen().
ib
parents: 33953
diff changeset
943
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
944 #ifdef ENABLE_DPMS
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
945 wsScreenSaverOn(wsDisplay);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
946 #endif
33954
8082db6c946a Some cosmetic changes in wsFullScreen().
ib
parents: 33953
diff changeset
947 } else {
8082db6c946a Some cosmetic changes in wsFullScreen().
ib
parents: 33953
diff changeset
948 vo_x11_ewmh_fullscreen(win->WindowID, _NET_WM_STATE_ADD); // adds fullscreen state if wm supports EWMH
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
949
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
950 if (!(vo_fs_type & vo_wm_FULLSCREEN)) { // shouldn't be needed with EWMH fs
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
951 win->OldX = win->X;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
952 win->OldY = win->Y;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
953 win->OldWidth = win->Width;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
954 win->OldHeight = win->Height;
33955
f56df2bcfc7b Move a misplaced closing brace to its correct position.
ib
parents: 33954
diff changeset
955 }
f56df2bcfc7b Move a misplaced closing brace to its correct position.
ib
parents: 33954
diff changeset
956
33994
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
957 wsUpdateXineramaInfo(win);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
958
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
959 win->isFullScreen = True;
33954
8082db6c946a Some cosmetic changes in wsFullScreen().
ib
parents: 33953
diff changeset
960
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
961 #ifdef ENABLE_DPMS
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
962 wsScreenSaverOff(wsDisplay);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
963 #endif
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
964 }
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
965
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
966 if (!(vo_fs_type & vo_wm_FULLSCREEN)) { // shouldn't be needed with EWMH fs
33996
acf8545dc4b5 Remove variable decoration in wsFullScreen().
ib
parents: 33995
diff changeset
967 vo_x11_decoration(wsDisplay, win->WindowID, win->Decorations && !win->isFullScreen);
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
968 vo_x11_sizehint(win->X, win->Y, win->Width, win->Height, 0);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
969 vo_x11_setlayer(wsDisplay, win->WindowID, win->isFullScreen);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
970
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
971 if ((!(win->isFullScreen)) & vo_ontop)
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
972 vo_x11_setlayer(wsDisplay, win->WindowID, 1);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
973
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
974 XMoveResizeWindow(wsDisplay, win->WindowID, win->X, win->Y, win->Width, win->Height);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
975 }
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
976
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
977 if (vo_wm_type == 0 && !(vo_fsmode & 16)) {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
978 XWithdrawWindow(wsDisplay, win->WindowID, wsScreen);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
979 }
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
980
33992
4dda3e85b298 Use wsRaiseWindowTop() in wsFullScreen().
ib
parents: 33991
diff changeset
981 wsRaiseWindowTop(wsDisplay, win->WindowID);
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
982 XFlush(wsDisplay);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
983 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
984
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
985 // ----------------------------------------------------------------------------------------------
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
986 // Redraw screen.
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
987 // ----------------------------------------------------------------------------------------------
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
988 void wsPostRedisplay(wsTWindow *win)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
989 {
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
990 if (win->ReDraw) {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
991 win->State = wsWindowExpose;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
992 win->ReDraw();
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
993 XFlush(wsDisplay);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
994 }
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
995 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
996
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
997 // ----------------------------------------------------------------------------------------------
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
998 // Do Exit.
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
999 // ----------------------------------------------------------------------------------------------
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1000 void wsDoExit(void)
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1001 {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1002 wsTrue = False;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1003 wsResizeWindow(wsWindowList[0], 32, 32);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1004 }
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1005
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1006 // ----------------------------------------------------------------------------------------------
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1007 // Put 'Image' to window.
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1008 // ----------------------------------------------------------------------------------------------
33548
55b8f5d5df15 Remove unused parameter 'Size' in wsConvert().
ib
parents: 33545
diff changeset
1009 void wsConvert(wsTWindow *win, unsigned char *Image)
23453
3e18bed9618a Make gmplayer show right colors if X server does not use native byteorder.
reimar
parents: 23077
diff changeset
1010 {
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1011 const uint8_t *src[4] = { Image, NULL, NULL, NULL };
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1012 int src_stride[4] = { 4 * win->xImage->width, 0, 0, 0 };
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1013 uint8_t *dst[4] = { win->ImageData, NULL, NULL, NULL };
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1014 int dst_stride[4];
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1015 int i;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1016
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1017 sws_ctx = sws_getCachedContext(sws_ctx, win->xImage->width, win->xImage->height, PIX_FMT_RGB32,
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1018 win->xImage->width, win->xImage->height, out_pix_fmt,
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1019 SWS_POINT, NULL, NULL, NULL);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1020 av_image_fill_linesizes(dst_stride, out_pix_fmt, win->xImage->width);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1021 sws_scale(sws_ctx, src, src_stride, 0, win->xImage->height, dst, dst_stride);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1022
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1023 if (!wsNonNativeOrder)
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1024 return;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1025
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1026 switch (win->xImage->bits_per_pixel) {
23453
3e18bed9618a Make gmplayer show right colors if X server does not use native byteorder.
reimar
parents: 23077
diff changeset
1027 case 32:
3e18bed9618a Make gmplayer show right colors if X server does not use native byteorder.
reimar
parents: 23077
diff changeset
1028 {
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1029 uint32_t *d = (uint32_t *)win->ImageData;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1030
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1031 for (i = 0; i < win->xImage->width * win->xImage->height; i++)
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1032 d[i] = bswap_32(d[i]);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1033
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1034 break;
23453
3e18bed9618a Make gmplayer show right colors if X server does not use native byteorder.
reimar
parents: 23077
diff changeset
1035 }
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1036
23453
3e18bed9618a Make gmplayer show right colors if X server does not use native byteorder.
reimar
parents: 23077
diff changeset
1037 case 16:
3e18bed9618a Make gmplayer show right colors if X server does not use native byteorder.
reimar
parents: 23077
diff changeset
1038 case 15:
3e18bed9618a Make gmplayer show right colors if X server does not use native byteorder.
reimar
parents: 23077
diff changeset
1039 {
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1040 uint16_t *d = (uint16_t *)win->ImageData;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1041
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1042 for (i = 0; i < win->xImage->width * win->xImage->height; i++)
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1043 d[i] = bswap_16(d[i]);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1044
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1045 break;
23453
3e18bed9618a Make gmplayer show right colors if X server does not use native byteorder.
reimar
parents: 23077
diff changeset
1046 }
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1047 }
23453
3e18bed9618a Make gmplayer show right colors if X server does not use native byteorder.
reimar
parents: 23077
diff changeset
1048 }
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1049
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1050 void wsPutImage(wsTWindow *win)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1051 {
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1052 if (wsUseXShm) {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1053 XShmPutImage(wsDisplay, win->WindowID, win->wGC, win->xImage,
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1054 0, 0,
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1055 (win->Width - win->xImage->width) / 2, (win->Height - win->xImage->height) / 2,
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1056 win->xImage->width, win->xImage->height, 0);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1057 } else {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1058 XPutImage(wsDisplay, win->WindowID, win->wGC, win->xImage,
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1059 0, 0,
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1060 (win->Width - win->xImage->width) / 2, (win->Height - win->xImage->height) / 2,
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1061 win->xImage->width, win->xImage->height);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1062 }
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1063 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1064
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1065 // ----------------------------------------------------------------------------------------------
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1066 // Move window to x, y.
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1067 // ----------------------------------------------------------------------------------------------
33993
57d711d3dcca Change parameter b of wsMoveWindow().
ib
parents: 33992
diff changeset
1068 void wsMoveWindow(wsTWindow *win, Bool abs, int x, int y)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1069 {
33993
57d711d3dcca Change parameter b of wsMoveWindow().
ib
parents: 33992
diff changeset
1070 if (abs) {
57d711d3dcca Change parameter b of wsMoveWindow().
ib
parents: 33992
diff changeset
1071 win->X = x;
57d711d3dcca Change parameter b of wsMoveWindow().
ib
parents: 33992
diff changeset
1072 win->Y = y;
33995
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
1073 } else
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
1074 wsWindowPosition(win, x, y, win->Width, win->Height);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1075
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1076 win->SizeHint.flags = PPosition | PWinGravity;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1077 win->SizeHint.x = win->X;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1078 win->SizeHint.y = win->Y;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1079 win->SizeHint.win_gravity = StaticGravity;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1080 XSetWMNormalHints(wsDisplay, win->WindowID, &win->SizeHint);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1081
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1082 XMoveWindow(wsDisplay, win->WindowID, win->X, win->Y);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1083
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1084 if (win->ReSize)
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1085 win->ReSize(win->X, win->Y, win->Width, win->Height);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1086 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1087
33998
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1088 /**
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1089 * @brief Move the window to the x and y position, but if it no longer fits
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1090 * into the screen, reposition it towards the upper left.
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1091 *
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1092 * @param win pointer to a ws window structure
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1093 * @param abs flag whether the position is real/absolute (True) or mock (False)
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1094 * @param x x position of the window (real/absolute or mock)
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1095 * @param y y position of the window (real/absolute or mock)
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1096 */
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1097 void wsMoveWindowWithin(wsTWindow *win, Bool abs, int x, int y)
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1098 {
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1099 Bool fitting = True;
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1100
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1101 wsMoveWindow(win, abs, x, y);
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1102
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1103 if (win->X + win->Width + 1 > wsMaxX) {
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1104 fitting = False;
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1105 win->X = wsMaxX - win->Width;
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1106
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1107 if (win->X < 0)
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1108 win->X = 0;
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1109 }
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1110
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1111 if (win->Y + win->Height + 1 > wsMaxY) {
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1112 fitting = False;
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1113 win->Y = wsMaxY - win->Height;
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1114
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1115 if (win->Y < 0)
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1116 win->Y = 0;
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1117 }
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1118
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1119 if (!fitting)
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1120 wsMoveWindow(win, True, win->X, win->Y);
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1121 }
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1122
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1123 // ----------------------------------------------------------------------------------------------
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1124 // Resize window to sx, sy.
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1125 // ----------------------------------------------------------------------------------------------
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1126 void wsResizeWindow(wsTWindow *win, int sx, int sy)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1127 {
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1128 win->Width = sx;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1129 win->Height = sy;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1130
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1131 win->SizeHint.flags = PPosition | PSize | PWinGravity; // | PBaseSize;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1132 win->SizeHint.x = win->X;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1133 win->SizeHint.y = win->Y;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1134 win->SizeHint.width = win->Width;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1135 win->SizeHint.height = win->Height;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1136
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1137 if (win->Property & wsMinSize) {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1138 win->SizeHint.flags |= PMinSize;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1139 win->SizeHint.min_width = win->Width;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1140 win->SizeHint.min_height = win->Height;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1141 }
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1142
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1143 if (win->Property & wsMaxSize) {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1144 win->SizeHint.flags |= PMaxSize;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1145 win->SizeHint.max_width = win->Width;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1146 win->SizeHint.max_height = win->Height;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1147 }
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1148
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1149 win->SizeHint.win_gravity = StaticGravity;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1150 win->SizeHint.base_width = sx;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1151 win->SizeHint.base_height = sy;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1152
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1153 if (vo_wm_type == 0)
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1154 XUnmapWindow(wsDisplay, win->WindowID);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1155
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1156 XSetWMNormalHints(wsDisplay, win->WindowID, &win->SizeHint);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1157 XResizeWindow(wsDisplay, win->WindowID, sx, sy);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1158
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1159 if (win->ReSize)
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1160 win->ReSize(win->X, win->Y, win->Width, win->Height);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1161 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1162
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1163 // ----------------------------------------------------------------------------------------------
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1164 // Iconify window.
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1165 // ----------------------------------------------------------------------------------------------
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1166 void wsIconify(wsTWindow win)
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1167 {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1168 XIconifyWindow(wsDisplay, win.WindowID, 0);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1169 }
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1170
33991
58b5bca840a8 Replace comment for wsRaiseWindowTop() by doxygen comment.
ib
parents: 33990
diff changeset
1171 /**
58b5bca840a8 Replace comment for wsRaiseWindowTop() by doxygen comment.
ib
parents: 33990
diff changeset
1172 * @brief Map a window and raise it to the top.
58b5bca840a8 Replace comment for wsRaiseWindowTop() by doxygen comment.
ib
parents: 33990
diff changeset
1173 *
58b5bca840a8 Replace comment for wsRaiseWindowTop() by doxygen comment.
ib
parents: 33990
diff changeset
1174 * @param dsp display
58b5bca840a8 Replace comment for wsRaiseWindowTop() by doxygen comment.
ib
parents: 33990
diff changeset
1175 * @param win window
58b5bca840a8 Replace comment for wsRaiseWindowTop() by doxygen comment.
ib
parents: 33990
diff changeset
1176 */
33990
3a93b9227b01 Cosmetic: Rename wsMoveTopWindow() wsRaiseWindowTop().
ib
parents: 33985
diff changeset
1177 void wsRaiseWindowTop(Display *dsp, Window win)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1178 {
33990
3a93b9227b01 Cosmetic: Rename wsMoveTopWindow() wsRaiseWindowTop().
ib
parents: 33985
diff changeset
1179 XMapRaised(dsp, win);
3a93b9227b01 Cosmetic: Rename wsMoveTopWindow() wsRaiseWindowTop().
ib
parents: 33985
diff changeset
1180 XRaiseWindow(dsp, win);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1181 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1182
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1183 // ----------------------------------------------------------------------------------------------
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1184 // Set window background to 'color'.
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1185 // ----------------------------------------------------------------------------------------------
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1186 void wsSetBackground(wsTWindow *win, int color)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1187 {
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1188 XSetWindowBackground(wsDisplay, win->WindowID, color);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1189 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1190
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1191 void wsSetBackgroundRGB(wsTWindow *win, int r, int g, int b)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1192 {
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1193 int color = 0;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1194
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1195 switch (wsOutMask) {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1196 case wsRGB32:
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1197 case wsRGB24:
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1198 color = (r << 16) + (g << 8) + b;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1199 break;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1200
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1201 case wsBGR32:
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1202 case wsBGR24:
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1203 color = (b << 16) + (g << 8) + r;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1204 break;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1205
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1206 case wsRGB16:
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1207 PACK_RGB16(b, g, r, color);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1208 break;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1209
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1210 case wsBGR16:
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1211 PACK_RGB16(r, g, b, color);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1212 break;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1213
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1214 case wsRGB15:
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1215 PACK_RGB15(b, g, r, color);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1216 break;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1217
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1218 case wsBGR15:
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1219 PACK_RGB15(r, g, b, color);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1220 break;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1221 }
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1222
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1223 XSetWindowBackground(wsDisplay, win->WindowID, color);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1224 }
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1225
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1226 void wsSetForegroundRGB(wsTWindow *win, int r, int g, int b)
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1227 {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1228 int color = 0;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1229
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1230 switch (wsOutMask) {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1231 case wsRGB32:
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1232 case wsRGB24:
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1233 color = (r << 16) + (g << 8) + b;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1234 break;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1235
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1236 case wsBGR32:
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1237 case wsBGR24:
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1238 color = (b << 16) + (g << 8) + r;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1239 break;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1240
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1241 case wsRGB16:
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1242 PACK_RGB16(b, g, r, color);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1243 break;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1244
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1245 case wsBGR16:
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1246 PACK_RGB16(r, g, b, color);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1247 break;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1248
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1249 case wsRGB15:
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1250 PACK_RGB15(b, g, r, color);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1251 break;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1252
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1253 case wsBGR15:
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1254 PACK_RGB15(r, g, b, color);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1255 break;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1256 }
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1257
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1258 XSetForeground(wsDisplay, win->wGC, color);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1259 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1260
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1261 // ----------------------------------------------------------------------------------------------
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1262 // Draw string at x,y with fc ( foreground color ) and bc ( background color ).
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1263 // ----------------------------------------------------------------------------------------------
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1264 void wsDrawString(wsTWindow win, int x, int y, char *str, int fc, int bc)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1265 {
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1266 XSetForeground(wsDisplay, win.wGC, bc);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1267 XFillRectangle(wsDisplay, win.WindowID, win.wGC, x, y,
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1268 XTextWidth(win.Font, str, strlen(str)) + 20,
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1269 win.FontHeight + 2);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1270 XSetForeground(wsDisplay, win.wGC, fc);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1271 XDrawString(wsDisplay, win.WindowID, win.wGC, x + 10, y + 13, str, strlen(str));
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1272 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1273
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1274 // ----------------------------------------------------------------------------------------------
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1275 // Calculation string width.
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1276 // ----------------------------------------------------------------------------------------------
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1277 int wsTextWidth(wsTWindow win, char *str)
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1278 {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1279 return XTextWidth(win.Font, str, strlen(str)) + 20;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1280 }
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1281
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1282 // ----------------------------------------------------------------------------------------------
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1283 // Show / hide mouse cursor.
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1284 // ----------------------------------------------------------------------------------------------
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1285 void wsVisibleMouse(wsTWindow *win, int m)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1286 {
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1287 switch (m) {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1288 case wsShowMouseCursor:
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1289
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1290 if (win->wsCursor != None) {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1291 XFreeCursor(wsDisplay, win->wsCursor);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1292 win->wsCursor = None;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1293 }
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1294
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1295 XDefineCursor(wsDisplay, win->WindowID, 0);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1296 break;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1297
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1298 case wsHideMouseCursor:
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1299 win->wsCursor = XCreatePixmapCursor(wsDisplay, win->wsCursorPixmap, win->wsCursorPixmap, &win->wsColor, &win->wsColor, 0, 0);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1300 XDefineCursor(wsDisplay, win->WindowID, win->wsCursor);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1301 break;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1302 }
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1303
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1304 XFlush(wsDisplay);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1305 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1306
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1307 int wsGetDepthOnScreen(void)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1308 {
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1309 int depth;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1310 XImage *mXImage;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1311 Visual *visual;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1312
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1313 if ((depth = vo_find_depth_from_visuals(wsDisplay, wsScreen, &visual)) > 0) {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1314 mXImage = XCreateImage(wsDisplay, visual, depth, ZPixmap, 0, NULL,
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1315 1, 1, 32, 0);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1316 wsDepthOnScreen = mXImage->bits_per_pixel;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1317 wsRedMask = mXImage->red_mask;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1318 wsGreenMask = mXImage->green_mask;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1319 wsBlueMask = mXImage->blue_mask;
29401
f01023c524c3 Replace WORDS_BIGENDIAN by HAVE_BIGENDIAN in all internal code.
diego
parents: 29263
diff changeset
1320 #if HAVE_BIGENDIAN
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1321 wsNonNativeOrder = mXImage->byte_order == LSBFirst;
23453
3e18bed9618a Make gmplayer show right colors if X server does not use native byteorder.
reimar
parents: 23077
diff changeset
1322 #else
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1323 wsNonNativeOrder = mXImage->byte_order == MSBFirst;
23453
3e18bed9618a Make gmplayer show right colors if X server does not use native byteorder.
reimar
parents: 23077
diff changeset
1324 #endif
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1325 XDestroyImage(mXImage);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1326 } else {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1327 int bpp, ibpp;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1328 XWindowAttributes attribs;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1329
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1330 mXImage = XGetImage(wsDisplay, wsRootWin, 0, 0, 1, 1, AllPlanes, ZPixmap);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1331 bpp = mXImage->bits_per_pixel;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1332
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1333 XGetWindowAttributes(wsDisplay, wsRootWin, &attribs);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1334 ibpp = attribs.depth;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1335 mXImage = XGetImage(wsDisplay, wsRootWin, 0, 0, 1, 1, AllPlanes, ZPixmap);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1336 bpp = mXImage->bits_per_pixel;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1337
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1338 if ((ibpp + 7) / 8 != (bpp + 7) / 8)
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1339 ibpp = bpp;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1340
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1341 wsDepthOnScreen = ibpp;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1342 wsRedMask = mXImage->red_mask;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1343 wsGreenMask = mXImage->green_mask;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1344 wsBlueMask = mXImage->blue_mask;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1345 XDestroyImage(mXImage);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1346 }
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1347
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1348 return wsDepthOnScreen;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1349 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1350
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1351 void wsXDone(void)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1352 {
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1353 XCloseDisplay(wsDisplay);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1354 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1355
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1356 void wsVisibleWindow(wsTWindow *win, int show)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1357 {
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1358 switch (show) {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1359 case wsShowWindow:
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1360 XMapRaised(wsDisplay, win->WindowID);
33952
75b858ef3666 Keep track of fullscreen state.
ib
parents: 33937
diff changeset
1361 if (vo_fs_type & vo_wm_FULLSCREEN)
75b858ef3666 Keep track of fullscreen state.
ib
parents: 33937
diff changeset
1362 win->isFullScreen = False;
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1363 break;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1364
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1365 case wsHideWindow:
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1366 XUnmapWindow(wsDisplay, win->WindowID);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1367 break;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1368 }
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1369
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1370 XFlush(wsDisplay);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1371 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1372
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1373 void wsDestroyImage(wsTWindow *win)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1374 {
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1375 if (win->xImage) {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1376 XDestroyImage(win->xImage);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1377
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1378 if (wsUseXShm) {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1379 XShmDetach(wsDisplay, &win->Shminfo);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1380 shmdt(win->Shminfo.shmaddr);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1381 }
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1382 }
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1383
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1384 win->xImage = NULL;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1385 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1386
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1387 void wsCreateImage(wsTWindow *win, int Width, int Height)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1388 {
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1389 if (wsUseXShm) {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1390 win->xImage = XShmCreateImage(wsDisplay, win->VisualInfo.visual,
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1391 win->VisualInfo.depth, ZPixmap, NULL, &win->Shminfo, Width, Height);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1392
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1393 if (win->xImage == NULL) {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1394 mp_msg(MSGT_GPLAYER, MSGL_FATAL, MSGTR_WS_ShmError);
33768
cee9987bc81d Remove guiExit().
ib
parents: 33550
diff changeset
1395 mplayer(MPLAYER_EXIT_GUI, EXIT_ERROR, 0);
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1396 }
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1397
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1398 win->Shminfo.shmid = shmget(IPC_PRIVATE, win->xImage->bytes_per_line * win->xImage->height, IPC_CREAT | 0777);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1399
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1400 if (win->Shminfo.shmid < 0) {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1401 XDestroyImage(win->xImage);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1402 mp_msg(MSGT_GPLAYER, MSGL_FATAL, MSGTR_WS_ShmError);
33768
cee9987bc81d Remove guiExit().
ib
parents: 33550
diff changeset
1403 mplayer(MPLAYER_EXIT_GUI, EXIT_ERROR, 0);
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1404 }
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1405
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1406 win->Shminfo.shmaddr = (char *)shmat(win->Shminfo.shmid, 0, 0);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1407
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1408 if (win->Shminfo.shmaddr == ((char *)-1)) {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1409 XDestroyImage(win->xImage);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1410
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1411 if (win->Shminfo.shmaddr != ((char *)-1))
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1412 shmdt(win->Shminfo.shmaddr);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1413
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1414 mp_msg(MSGT_GPLAYER, MSGL_FATAL, MSGTR_WS_ShmError);
33768
cee9987bc81d Remove guiExit().
ib
parents: 33550
diff changeset
1415 mplayer(MPLAYER_EXIT_GUI, EXIT_ERROR, 0);
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1416 }
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1417
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1418 win->xImage->data = win->Shminfo.shmaddr;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1419 win->Shminfo.readOnly = 0;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1420 XShmAttach(wsDisplay, &win->Shminfo);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1421 XSync(wsDisplay, False);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1422 shmctl(win->Shminfo.shmid, IPC_RMID, 0);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1423 } else {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1424 win->xImage = XCreateImage(wsDisplay, win->VisualInfo.visual, win->VisualInfo.depth,
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1425 ZPixmap, 0, 0, Width, Height,
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1426 (wsDepthOnScreen == 3) ? 32 : wsDepthOnScreen,
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1427 0);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1428
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1429 if ((win->xImage->data = malloc(win->xImage->bytes_per_line * win->xImage->height)) == NULL) {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1430 mp_msg(MSGT_GPLAYER, MSGL_FATAL, MSGTR_WS_NotEnoughMemoryDrawBuffer);
33768
cee9987bc81d Remove guiExit().
ib
parents: 33550
diff changeset
1431 mplayer(MPLAYER_EXIT_GUI, EXIT_ERROR, 0);
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1432 }
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1433 }
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1434
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1435 win->ImageData = (unsigned char *)win->xImage->data;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1436 win->ImageDataw = (unsigned short int *)win->xImage->data;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1437 win->ImageDatadw = (unsigned int *)win->xImage->data;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1438 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1439
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1440 void wsResizeImage(wsTWindow *win, int Width, int Height)
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1441 {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1442 wsDestroyImage(win);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1443 wsCreateImage(win, Width, Height);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1444 }
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1445
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1446 int wsGetOutMask(void)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1447 {
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1448 if ((wsDepthOnScreen == 32) && (wsRedMask == 0xff0000) && (wsGreenMask == 0x00ff00) && (wsBlueMask == 0x0000ff))
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1449 return wsRGB32;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1450
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1451 if ((wsDepthOnScreen == 32) && (wsRedMask == 0x0000ff) && (wsGreenMask == 0x00ff00) && (wsBlueMask == 0xff0000))
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1452 return wsBGR32;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1453
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1454 if ((wsDepthOnScreen == 24) && (wsRedMask == 0xff0000) && (wsGreenMask == 0x00ff00) && (wsBlueMask == 0x0000ff))
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1455 return wsRGB24;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1456
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1457 if ((wsDepthOnScreen == 24) && (wsRedMask == 0x0000ff) && (wsGreenMask == 0x00ff00) && (wsBlueMask == 0xff0000))
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1458 return wsBGR24;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1459
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1460 if ((wsDepthOnScreen == 16) && (wsRedMask == 0xf800) && (wsGreenMask == 0x7e0) && (wsBlueMask == 0x1f))
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1461 return wsRGB16;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1462
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1463 if ((wsDepthOnScreen == 16) && (wsRedMask == 0x1f) && (wsGreenMask == 0x7e0) && (wsBlueMask == 0xf800))
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1464 return wsBGR16;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1465
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1466 if ((wsDepthOnScreen == 15) && (wsRedMask == 0x7c00) && (wsGreenMask == 0x3e0) && (wsBlueMask == 0x1f))
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1467 return wsRGB15;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1468
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1469 if ((wsDepthOnScreen == 15) && (wsRedMask == 0x1f) && (wsGreenMask == 0x3e0) && (wsBlueMask == 0x7c00))
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1470 return wsBGR15;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1471
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1472 return 0;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1473 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1474
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1475 void wsSetTitle(wsTWindow *win, char *name)
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1476 {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1477 XStoreName(wsDisplay, win->WindowID, name);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1478 }
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1479
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1480 void wsSetMousePosition(wsTWindow *win, int x, int y)
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1481 {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1482 XWarpPointer(wsDisplay, wsRootWin, win->WindowID, 0, 0, 0, 0, x, y);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1483 }
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1484
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1485 #ifdef ENABLE_DPMS
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1486 static int dpms_disabled = 0;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1487 static int timeout_save = 0;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1488
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1489 void wsScreenSaverOn(Display *mDisplay)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1490 {
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1491 int nothing;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1492
27377
d58d06eafe83 Change a bunch of X11-specific preprocessor directives.
diego
parents: 26458
diff changeset
1493 #ifdef CONFIG_XDPMS
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1494
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1495 if (dpms_disabled) {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1496 if (DPMSQueryExtension(mDisplay, &nothing, &nothing)) {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1497 if (!DPMSEnable(mDisplay))
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1498 mp_msg(MSGT_GPLAYER, MSGL_ERR, MSGTR_WS_DpmsUnavailable); // restoring power saving settings
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1499 else {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1500 // DPMS does not seem to be enabled unless we call DPMSInfo
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1501 BOOL onoff;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1502 CARD16 state;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1503 DPMSInfo(mDisplay, &state, &onoff);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1504
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1505 if (onoff)
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1506 mp_msg(MSGT_GPLAYER, MSGL_V, "Successfully enabled DPMS.\n");
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1507 else
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1508 mp_msg(MSGT_GPLAYER, MSGL_STATUS, MSGTR_WS_DpmsNotEnabled);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1509 }
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1510 }
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1511 }
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1512
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1513 #endif
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1514
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1515 if (timeout_save) {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1516 int dummy, interval, prefer_blank, allow_exp;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1517 XGetScreenSaver(mDisplay, &dummy, &interval, &prefer_blank, &allow_exp);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1518 XSetScreenSaver(mDisplay, timeout_save, interval, prefer_blank, allow_exp);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1519 XGetScreenSaver(mDisplay, &timeout_save, &interval, &prefer_blank, &allow_exp);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1520 }
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1521 }
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1522
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1523 void wsScreenSaverOff(Display *mDisplay)
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1524 {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1525 int interval, prefer_blank, allow_exp, nothing;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1526
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1527 #ifdef CONFIG_XDPMS
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1528
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1529 if (DPMSQueryExtension(mDisplay, &nothing, &nothing)) {
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1530 BOOL onoff;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1531 CARD16 state;
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1532 DPMSInfo(mDisplay, &state, &onoff);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1533
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1534 if (onoff) {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1535 Status stat;
33985
d99f341d8442 Replace all mp_dbg() calls by mp_msg().
ib
parents: 33977
diff changeset
1536 mp_msg(MSGT_GPLAYER, MSGL_DBG2, "Disabling DPMS.\n");
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1537 dpms_disabled = 1;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1538 stat = DPMSDisable(mDisplay); // monitor powersave off
33985
d99f341d8442 Replace all mp_dbg() calls by mp_msg().
ib
parents: 33977
diff changeset
1539 mp_msg(MSGT_GPLAYER, MSGL_DBG2, "stat: %d.\n", stat);
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1540 }
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1541 }
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1542
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1543 #endif
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1544 XGetScreenSaver(mDisplay, &timeout_save, &interval, &prefer_blank, &allow_exp);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1545
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1546 if (timeout_save)
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1547 XSetScreenSaver(mDisplay, 0, interval, prefer_blank, allow_exp); // turning off screensaver
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1548 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1549
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1550 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1551
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1552 void wsSetShape(wsTWindow *win, char *data)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1553 {
27377
d58d06eafe83 Change a bunch of X11-specific preprocessor directives.
diego
parents: 26458
diff changeset
1554 #ifdef CONFIG_XSHAPE
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1555
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1556 if (!wsUseXShape)
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1557 return;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1558
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1559 if (data) {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1560 win->Mask = XCreateBitmapFromData(wsDisplay, win->WindowID, data, win->Width, win->Height);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1561 XShapeCombineMask(wsDisplay, win->WindowID, ShapeBounding, 0, 0, win->Mask, ShapeSet);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1562 XFreePixmap(wsDisplay, win->Mask);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1563 } else
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1564 XShapeCombineMask(wsDisplay, win->WindowID, ShapeBounding, 0, 0, None, ShapeSet);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1565
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1566 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1567 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1568
33975
bca5fbd1d73c Add a doxygen comment to ws.c.
ib
parents: 33956
diff changeset
1569 /**
33977
0e369065b585 Correct a doxygen formatting mistake in ws.c.
ib
parents: 33975
diff changeset
1570 * @brief Set differently sized icons to a window.
33975
bca5fbd1d73c Add a doxygen comment to ws.c.
ib
parents: 33956
diff changeset
1571 *
bca5fbd1d73c Add a doxygen comment to ws.c.
ib
parents: 33956
diff changeset
1572 * This function sets the X icon hint as well as
bca5fbd1d73c Add a doxygen comment to ws.c.
ib
parents: 33956
diff changeset
1573 * the properties KWM_WIN_ICON and _NET_WM_ICON.
bca5fbd1d73c Add a doxygen comment to ws.c.
ib
parents: 33956
diff changeset
1574 *
bca5fbd1d73c Add a doxygen comment to ws.c.
ib
parents: 33956
diff changeset
1575 * @param dsp display
bca5fbd1d73c Add a doxygen comment to ws.c.
ib
parents: 33956
diff changeset
1576 * @param win window
bca5fbd1d73c Add a doxygen comment to ws.c.
ib
parents: 33956
diff changeset
1577 * @param icon pointer to the icons
bca5fbd1d73c Add a doxygen comment to ws.c.
ib
parents: 33956
diff changeset
1578 */
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1579 void wsSetIcon(Display *dsp, Window win, guiIcon_t *icon)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1580 {
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1581 XWMHints *wm;
33540
0dec83e053cc Revise wsSetIcon().
ib
parents: 33539
diff changeset
1582 Atom iconatom;
33925
162828e38481 Replace data type CARD32 by long.
ib
parents: 33768
diff changeset
1583 long data[2];
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 27377
diff changeset
1584
33544
b71fac188432 Check whether a specific icon is available.
ib
parents: 33543
diff changeset
1585 if (icon->normal) {
33545
38aee97cc4fc Cosmetic: Adjust indent.
ib
parents: 33544
diff changeset
1586 wm = XGetWMHints(dsp, win);
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1587
33545
38aee97cc4fc Cosmetic: Adjust indent.
ib
parents: 33544
diff changeset
1588 if (!wm)
38aee97cc4fc Cosmetic: Adjust indent.
ib
parents: 33544
diff changeset
1589 wm = XAllocWMHints();
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1590
33545
38aee97cc4fc Cosmetic: Adjust indent.
ib
parents: 33544
diff changeset
1591 wm->icon_pixmap = icon->normal;
38aee97cc4fc Cosmetic: Adjust indent.
ib
parents: 33544
diff changeset
1592 wm->icon_mask = icon->normal_mask;
38aee97cc4fc Cosmetic: Adjust indent.
ib
parents: 33544
diff changeset
1593 wm->flags |= IconPixmapHint | IconMaskHint;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1594
33545
38aee97cc4fc Cosmetic: Adjust indent.
ib
parents: 33544
diff changeset
1595 XSetWMHints(dsp, win, wm);
38aee97cc4fc Cosmetic: Adjust indent.
ib
parents: 33544
diff changeset
1596 XFree(wm);
33544
b71fac188432 Check whether a specific icon is available.
ib
parents: 33543
diff changeset
1597 }
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1598
33544
b71fac188432 Check whether a specific icon is available.
ib
parents: 33543
diff changeset
1599 if (icon->small || icon->normal) {
33545
38aee97cc4fc Cosmetic: Adjust indent.
ib
parents: 33544
diff changeset
1600 iconatom = XInternAtom(dsp, "KWM_WIN_ICON", False);
38aee97cc4fc Cosmetic: Adjust indent.
ib
parents: 33544
diff changeset
1601 data[0] = (icon->small ? icon->small : icon->normal);
38aee97cc4fc Cosmetic: Adjust indent.
ib
parents: 33544
diff changeset
1602 data[1] = (icon->small ? icon->small_mask : icon->normal_mask);
33540
0dec83e053cc Revise wsSetIcon().
ib
parents: 33539
diff changeset
1603
33545
38aee97cc4fc Cosmetic: Adjust indent.
ib
parents: 33544
diff changeset
1604 XChangeProperty(dsp, win, iconatom, iconatom, 32, PropModeReplace, (unsigned char *)data, 2);
33544
b71fac188432 Check whether a specific icon is available.
ib
parents: 33543
diff changeset
1605 }
33542
107084241b00 Add support for _NET_WM_ICON
ib
parents: 33541
diff changeset
1606
107084241b00 Add support for _NET_WM_ICON
ib
parents: 33541
diff changeset
1607 if (icon->collection) {
107084241b00 Add support for _NET_WM_ICON
ib
parents: 33541
diff changeset
1608 iconatom = XInternAtom(dsp, "_NET_WM_ICON", False);
107084241b00 Add support for _NET_WM_ICON
ib
parents: 33541
diff changeset
1609 XChangeProperty(dsp, win, iconatom, XA_CARDINAL, 32, PropModeReplace, (unsigned char *)icon->collection, icon->collection_size);
107084241b00 Add support for _NET_WM_ICON
ib
parents: 33541
diff changeset
1610 }
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1611 }