annotate gui/wm/ws.c @ 35412:2de8e26093c4

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