annotate gui/wm/ws.c @ 36694:eed2fb870f43

Rename symbolic constants of GUI help message texts. Create a kind of GUI namespace and don't add place or kind of usage to the name unless it's advantageous. This reduces the amount of definitions as well. Arrange them alphabetically.
author ib
date Wed, 05 Feb 2014 16:39:38 +0000
parents f5e428d7991b
children d8b2651bfeab
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 * This file is part of MPlayer.
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 26382
diff changeset
3 *
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 26382
diff changeset
4 * MPlayer is free software; you can redistribute it and/or modify
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 26382
diff changeset
5 * 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
6 * the Free Software Foundation; either version 2 of the License, or
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 26382
diff changeset
7 * (at your option) any later version.
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 26382
diff changeset
8 *
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 26382
diff changeset
9 * MPlayer is distributed in the hope that it will be useful,
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 26382
diff changeset
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 26382
diff changeset
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 26382
diff changeset
12 * GNU General Public License for more details.
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 26382
diff changeset
13 *
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 26382
diff changeset
14 * 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
15 * with MPlayer; if not, write to the Free Software Foundation, Inc.,
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 26382
diff changeset
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
35666
01ac3cd2f101 Cosmetic: Relocate and revise comments on code origin.
ib
parents: 35665
diff changeset
17 *
01ac3cd2f101 Cosmetic: Relocate and revise comments on code origin.
ib
parents: 35665
diff changeset
18 * based on: AutoSpace Window System for Linux/Win32,
01ac3cd2f101 Cosmetic: Relocate and revise comments on code origin.
ib
parents: 35665
diff changeset
19 * written by pontscho/fresh!mindworkz
26458
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 26382
diff changeset
20 */
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
21
35702
a1d362602a70 Clean up #includes.
ib
parents: 35700
diff changeset
22 #include <stdint.h>
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
23 #include <stdlib.h>
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
24 #include <string.h>
35702
a1d362602a70 Clean up #includes.
ib
parents: 35700
diff changeset
25 #include <sys/ipc.h>
a1d362602a70 Clean up #includes.
ib
parents: 35700
diff changeset
26 #include <X11/Xatom.h>
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
27
35702
a1d362602a70 Clean up #includes.
ib
parents: 35700
diff changeset
28 #include "ws.h"
a1d362602a70 Clean up #includes.
ib
parents: 35700
diff changeset
29 #include "wsxdnd.h"
a1d362602a70 Clean up #includes.
ib
parents: 35700
diff changeset
30 #include "gui/interface.h"
36053
7affacef2f88 Define "MPlayer" string.
ib
parents: 36032
diff changeset
31 #include "gui/app/gui.h"
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
32
26382
b2f4abcf20ed Make include paths consistent; do not use ../ in them.
diego
parents: 23795
diff changeset
33 #include "config.h"
35702
a1d362602a70 Clean up #includes.
ib
parents: 35700
diff changeset
34 #include "help_mp.h"
36032
c667e34fb941 Cosmetic: Rearrange #includes.
ib
parents: 36026
diff changeset
35 #include "mp_core.h"
c667e34fb941 Cosmetic: Rearrange #includes.
ib
parents: 36026
diff changeset
36 #include "mp_msg.h"
c667e34fb941 Cosmetic: Rearrange #includes.
ib
parents: 36026
diff changeset
37 #include "mpbswap.h"
c667e34fb941 Cosmetic: Rearrange #includes.
ib
parents: 36026
diff changeset
38 #include "mplayer.h"
35702
a1d362602a70 Clean up #includes.
ib
parents: 35700
diff changeset
39 #include "libavutil/imgutils.h"
a1d362602a70 Clean up #includes.
ib
parents: 35700
diff changeset
40 #include "libavutil/pixfmt.h"
a1d362602a70 Clean up #includes.
ib
parents: 35700
diff changeset
41 #include "libswscale/swscale.h"
26382
b2f4abcf20ed Make include paths consistent; do not use ../ in them.
diego
parents: 23795
diff changeset
42 #include "libvo/video_out.h"
35702
a1d362602a70 Clean up #includes.
ib
parents: 35700
diff changeset
43 #include "libvo/x11_common.h"
34033
395a736cd075 Add cursor autohide functionality to the GUI.
ib
parents: 34009
diff changeset
44 #include "osdep/timer.h"
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
45
35702
a1d362602a70 Clean up #includes.
ib
parents: 35700
diff changeset
46 #ifdef HAVE_SHM
a1d362602a70 Clean up #includes.
ib
parents: 35700
diff changeset
47 #include <sys/shm.h>
a1d362602a70 Clean up #includes.
ib
parents: 35700
diff changeset
48 #endif
27377
d58d06eafe83 Change a bunch of X11-specific preprocessor directives.
diego
parents: 26458
diff changeset
49 #ifdef CONFIG_XSHAPE
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
50 #include <X11/extensions/shape.h>
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
51 #endif
27377
d58d06eafe83 Change a bunch of X11-specific preprocessor directives.
diego
parents: 26458
diff changeset
52 #ifdef CONFIG_XF86VM
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
53 #include <X11/extensions/xf86vmode.h>
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
54 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
55
34034
8c75091726d8 Replace numeric constant for cursor autohide time by symbolic constant.
ib
parents: 34033
diff changeset
56 #define MOUSEHIDE_DELAY 1000 // in milliseconds
8c75091726d8 Replace numeric constant for cursor autohide time by symbolic constant.
ib
parents: 34033
diff changeset
57
35656
f2093dc82b5f Cosmetic: Rename wsTWindow wsWindow.
ib
parents: 35655
diff changeset
58 static wsWindow *mouse_win;
34081
66c5a04a5c32 Fix cursor autohide functionality of the GUI.
ib
parents: 34034
diff changeset
59 static unsigned int mouse_time;
66c5a04a5c32 Fix cursor autohide functionality of the GUI.
ib
parents: 34034
diff changeset
60
35667
3ed198bf4f21 Make variables static that only have file scope.
ib
parents: 35666
diff changeset
61 int wsMaxX; // Screen width.
3ed198bf4f21 Make variables static that only have file scope.
ib
parents: 35666
diff changeset
62 int wsMaxY; // Screen height.
3ed198bf4f21 Make variables static that only have file scope.
ib
parents: 35666
diff changeset
63 int wsOrgX; // Screen origin x.
3ed198bf4f21 Make variables static that only have file scope.
ib
parents: 35666
diff changeset
64 int wsOrgY; // Screen origin y.
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
65
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
66 Display *wsDisplay;
35667
3ed198bf4f21 Make variables static that only have file scope.
ib
parents: 35666
diff changeset
67 static int wsScreen;
3ed198bf4f21 Make variables static that only have file scope.
ib
parents: 35666
diff changeset
68 static Window wsRootWin;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
69
35678
2261c68180a7 Make variable wsScreenDepth static.
ib
parents: 35677
diff changeset
70 static int wsScreenDepth;
35667
3ed198bf4f21 Make variables static that only have file scope.
ib
parents: 35666
diff changeset
71 static int wsRedMask;
3ed198bf4f21 Make variables static that only have file scope.
ib
parents: 35666
diff changeset
72 static int wsGreenMask;
3ed198bf4f21 Make variables static that only have file scope.
ib
parents: 35666
diff changeset
73 static int wsBlueMask;
3ed198bf4f21 Make variables static that only have file scope.
ib
parents: 35666
diff changeset
74 static int wsNonNativeOrder;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
75
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
76 #define wsWLCount 5
35667
3ed198bf4f21 Make variables static that only have file scope.
ib
parents: 35666
diff changeset
77 static wsWindow *wsWindowList[wsWLCount];
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
78
35667
3ed198bf4f21 Make variables static that only have file scope.
ib
parents: 35666
diff changeset
79 static int wsUseXShm = True;
3ed198bf4f21 Make variables static that only have file scope.
ib
parents: 35666
diff changeset
80 static int wsUseXShape = True;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
81
35707
4ba6b8d3197e Replace PixelFormat and PIX_FMT_FOO by their AV_-prefixed counterparts.
diego
parents: 35702
diff changeset
82 static enum AVPixelFormat out_pix_fmt = PIX_FMT_NONE;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
83
34684
b03481253518 Cosmetic: Prefer C style for single line comments.
ib
parents: 34470
diff changeset
84 /* --- */
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
85
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
86 #define MWM_HINTS_FUNCTIONS (1L << 0)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
87 #define MWM_HINTS_DECORATIONS (1L << 1)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
88
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
89 #define MWM_FUNC_RESIZE (1L << 1)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
90 #define MWM_FUNC_MOVE (1L << 2)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
91 #define MWM_FUNC_MINIMIZE (1L << 3)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
92 #define MWM_FUNC_MAXIMIZE (1L << 4)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
93 #define MWM_FUNC_CLOSE (1L << 5)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
94
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
95 #define MWM_DECOR_ALL (1L << 0)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
96
33994
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
97 /**
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
98 * @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
99 * from xinerama information.
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
100 *
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
101 * Set wsOrgX, wsOrgY, wsMaxX and wsMaxY as well as
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
102 * win->X, win->Y, win->Width and win->Height.
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
103 *
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
104 * @param win pointer to a ws window structure or NULL
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
105 */
35681
80c5c89f77d6 Cosmetic: Rename ws functions for the sake of consistency.
ib
parents: 35680
diff changeset
106 static void wsWindowUpdateXinerama(wsWindow *win)
33994
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
107 {
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
108 if (win) {
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
109 vo_dx = win->X;
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
110 vo_dy = win->Y;
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
111 vo_dwidth = win->Width;
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
112 vo_dheight = win->Height;
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
113 }
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
114
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
115 vo_screenwidth = wsMaxX;
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
116 vo_screenheight = wsMaxY;
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
117
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
118 update_xinerama_info();
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
119
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
120 wsMaxX = vo_screenwidth;
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
121 wsMaxY = vo_screenheight;
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
122 wsOrgX = xinerama_x;
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
123 wsOrgY = xinerama_y;
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
124
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
125 if (win) {
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
126 win->X = wsOrgX;
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
127 win->Y = wsOrgY;
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
128 win->Width = wsMaxX;
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
129 win->Height = wsMaxY;
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
130 }
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
131 }
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
132
35676
b0ad675bd3b7 Cosmetic: Rename DepthOnScreen ScreenDepth.
ib
parents: 35674
diff changeset
133 static int wsGetScreenDepth(void)
35636
840e473ba4c0 Restore GUI's X error handler after gtk_init().
ib
parents: 35635
diff changeset
134 {
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
135 int depth;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
136 XImage *mXImage;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
137 Visual *visual;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
138
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
139 if ((depth = vo_find_depth_from_visuals(wsDisplay, wsScreen, &visual)) > 0) {
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
140 mXImage = XCreateImage(wsDisplay, visual, depth, ZPixmap, 0, NULL,
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
141 1, 1, 32, 0);
35676
b0ad675bd3b7 Cosmetic: Rename DepthOnScreen ScreenDepth.
ib
parents: 35674
diff changeset
142 wsScreenDepth = mXImage->bits_per_pixel;
35677
539f3d45dcf5 Cosmetic: Adjust indent.
ib
parents: 35676
diff changeset
143 wsRedMask = mXImage->red_mask;
539f3d45dcf5 Cosmetic: Adjust indent.
ib
parents: 35676
diff changeset
144 wsGreenMask = mXImage->green_mask;
539f3d45dcf5 Cosmetic: Adjust indent.
ib
parents: 35676
diff changeset
145 wsBlueMask = mXImage->blue_mask;
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
146 #if HAVE_BIGENDIAN
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
147 wsNonNativeOrder = mXImage->byte_order == LSBFirst;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
148 #else
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
149 wsNonNativeOrder = mXImage->byte_order == MSBFirst;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
150 #endif
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
151 XDestroyImage(mXImage);
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
152 } else {
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
153 int bpp, ibpp;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
154 XWindowAttributes attribs;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
155
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
156 mXImage = XGetImage(wsDisplay, wsRootWin, 0, 0, 1, 1, AllPlanes, ZPixmap);
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
157 bpp = mXImage->bits_per_pixel;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
158
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
159 XGetWindowAttributes(wsDisplay, wsRootWin, &attribs);
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
160 ibpp = attribs.depth;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
161 mXImage = XGetImage(wsDisplay, wsRootWin, 0, 0, 1, 1, AllPlanes, ZPixmap);
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
162 bpp = mXImage->bits_per_pixel;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
163
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
164 if ((ibpp + 7) / 8 != (bpp + 7) / 8)
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
165 ibpp = bpp;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
166
35676
b0ad675bd3b7 Cosmetic: Rename DepthOnScreen ScreenDepth.
ib
parents: 35674
diff changeset
167 wsScreenDepth = ibpp;
35677
539f3d45dcf5 Cosmetic: Adjust indent.
ib
parents: 35676
diff changeset
168 wsRedMask = mXImage->red_mask;
539f3d45dcf5 Cosmetic: Adjust indent.
ib
parents: 35676
diff changeset
169 wsGreenMask = mXImage->green_mask;
539f3d45dcf5 Cosmetic: Adjust indent.
ib
parents: 35676
diff changeset
170 wsBlueMask = mXImage->blue_mask;
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
171 XDestroyImage(mXImage);
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
172 }
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
173
35676
b0ad675bd3b7 Cosmetic: Rename DepthOnScreen ScreenDepth.
ib
parents: 35674
diff changeset
174 return wsScreenDepth;
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
175 }
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
176
35681
80c5c89f77d6 Cosmetic: Rename ws functions for the sake of consistency.
ib
parents: 35680
diff changeset
177 void wsInit(Display *display)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
178 {
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
179 int eventbase;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
180 int errorbase;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
181
35622
59456592c6d1 Add a message indicating start of initialization of X.
ib
parents: 35541
diff changeset
182 mp_msg(MSGT_GPLAYER, MSGL_V, "X init.\n");
59456592c6d1 Add a message indicating start of initialization of X.
ib
parents: 35541
diff changeset
183
35631
d0231540cdbd Cosmetic: Harmonize parameter names.
ib
parents: 35622
diff changeset
184 wsDisplay = display;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
185
35636
840e473ba4c0 Restore GUI's X error handler after gtk_init().
ib
parents: 35635
diff changeset
186 wsSetErrorHandler();
31323
c674bb16fa6d Install error handler as early as possible to avoid crashing.
reimar
parents: 31314
diff changeset
187
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
188 /* enable DND atoms */
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
189 wsXDNDInitialize();
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
190
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
191 { /* on remote display XShm will be disabled - LGB */
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
192 char *dispname = DisplayString(wsDisplay);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
193 int localdisp = 1;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 27377
diff changeset
194
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
195 if (dispname && *dispname != ':') {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
196 localdisp = 0;
35493
411875efca3f Introduce boolean symbolic constants.
ib
parents: 35492
diff changeset
197 wsUseXShm = False;
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
198 }
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
199
33985
d99f341d8442 Replace all mp_dbg() calls by mp_msg().
ib
parents: 33977
diff changeset
200 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
201
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
202 if (!localdisp)
36694
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36299
diff changeset
203 mp_msg(MSGT_GPLAYER, MSGL_INFO, MSGTR_GUI_MSG_RemoteDisplay);
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
204 }
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
205
34465
3c1a1038bfc7 Properly handle the lack of XShm.
ib
parents: 34463
diff changeset
206 #ifdef HAVE_SHM
34461
e3d6a010e8ae Cosmetic: Remove braces.
ib
parents: 34460
diff changeset
207 if (!XShmQueryExtension(wsDisplay))
34465
3c1a1038bfc7 Properly handle the lack of XShm.
ib
parents: 34463
diff changeset
208 #endif
35493
411875efca3f Introduce boolean symbolic constants.
ib
parents: 35492
diff changeset
209 wsUseXShm = False;
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
210
34460
c4731df07bfe Always inform / warn about missing shared memory / shape extension
ib
parents: 34459
diff changeset
211 if (!wsUseXShm)
36694
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36299
diff changeset
212 mp_msg(MSGT_GPLAYER, MSGL_INFO, MSGTR_GUI_MSG_XSharedMemoryUnavailable);
34460
c4731df07bfe Always inform / warn about missing shared memory / shape extension
ib
parents: 34459
diff changeset
213
27377
d58d06eafe83 Change a bunch of X11-specific preprocessor directives.
diego
parents: 26458
diff changeset
214 #ifdef CONFIG_XSHAPE
34461
e3d6a010e8ae Cosmetic: Remove braces.
ib
parents: 34460
diff changeset
215 if (!XShapeQueryExtension(wsDisplay, &eventbase, &errorbase))
34462
f305c10d20f8 Simplify XShape handling and setting of wsUseXShape.
ib
parents: 34461
diff changeset
216 #endif
35493
411875efca3f Introduce boolean symbolic constants.
ib
parents: 35492
diff changeset
217 wsUseXShape = False;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
218
34460
c4731df07bfe Always inform / warn about missing shared memory / shape extension
ib
parents: 34459
diff changeset
219 if (!wsUseXShape)
36694
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36299
diff changeset
220 mp_msg(MSGT_GPLAYER, MSGL_WARN, MSGTR_GUI_MSG_XShapeError);
34460
c4731df07bfe Always inform / warn about missing shared memory / shape extension
ib
parents: 34459
diff changeset
221
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
222 wsScreen = DefaultScreen(wsDisplay);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
223 wsRootWin = RootWindow(wsDisplay, wsScreen);
27377
d58d06eafe83 Change a bunch of X11-specific preprocessor directives.
diego
parents: 26458
diff changeset
224 #ifdef CONFIG_XF86VM
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
225 {
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
226 int clock;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
227 XF86VidModeModeLine modeline;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
228
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
229 XF86VidModeGetModeLine(wsDisplay, wsScreen, &clock, &modeline);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
230 wsMaxX = modeline.hdisplay;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
231 wsMaxY = modeline.vdisplay;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
232 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
233 #endif
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
234 {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
235 wsOrgX = wsOrgY = 0;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
236
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
237 if (!wsMaxX)
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
238 wsMaxX = DisplayWidth(wsDisplay, wsScreen);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
239
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
240 if (!wsMaxY)
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
241 wsMaxY = DisplayHeight(wsDisplay, wsScreen);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
242 }
33994
8e5680eccf54 Move common code to new function wsUpdateXineramaInfo().
ib
parents: 33993
diff changeset
243
35681
80c5c89f77d6 Cosmetic: Rename ws functions for the sake of consistency.
ib
parents: 35680
diff changeset
244 wsWindowUpdateXinerama(NULL);
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
245
35676
b0ad675bd3b7 Cosmetic: Rename DepthOnScreen ScreenDepth.
ib
parents: 35674
diff changeset
246 wsGetScreenDepth();
33549
4f6e515e5bd1 Adjust message levels in wsXInit().
ib
parents: 33548
diff changeset
247
35676
b0ad675bd3b7 Cosmetic: Rename DepthOnScreen ScreenDepth.
ib
parents: 35674
diff changeset
248 mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[ws] Screen depth: %d\n", wsScreenDepth);
33985
d99f341d8442 Replace all mp_dbg() calls by mp_msg().
ib
parents: 33977
diff changeset
249 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
250
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
251 #ifdef CONFIG_XINERAMA
33985
d99f341d8442 Replace all mp_dbg() calls by mp_msg().
ib
parents: 33977
diff changeset
252 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
253 #endif
33549
4f6e515e5bd1 Adjust message levels in wsXInit().
ib
parents: 33548
diff changeset
254
33985
d99f341d8442 Replace all mp_dbg() calls by mp_msg().
ib
parents: 33977
diff changeset
255 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
256 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
257 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
258
34465
3c1a1038bfc7 Properly handle the lack of XShm.
ib
parents: 34463
diff changeset
259 #ifdef HAVE_SHM
33550
fea429f90bfd Cosmetic: Adjust indent.
ib
parents: 33549
diff changeset
260 if (wsUseXShm) {
fea429f90bfd Cosmetic: Adjust indent.
ib
parents: 33549
diff changeset
261 int minor, major, shp;
33549
4f6e515e5bd1 Adjust message levels in wsXInit().
ib
parents: 33548
diff changeset
262
33550
fea429f90bfd Cosmetic: Adjust indent.
ib
parents: 33549
diff changeset
263 XShmQueryVersion(wsDisplay, &major, &minor, &shp);
33985
d99f341d8442 Replace all mp_dbg() calls by mp_msg().
ib
parents: 33977
diff changeset
264 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
265 }
34465
3c1a1038bfc7 Properly handle the lack of XShm.
ib
parents: 34463
diff changeset
266 #endif
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
267
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
268 #ifdef CONFIG_XSHAPE
33550
fea429f90bfd Cosmetic: Adjust indent.
ib
parents: 33549
diff changeset
269 if (wsUseXShape) {
fea429f90bfd Cosmetic: Adjust indent.
ib
parents: 33549
diff changeset
270 int minor, major;
33549
4f6e515e5bd1 Adjust message levels in wsXInit().
ib
parents: 33548
diff changeset
271
33550
fea429f90bfd Cosmetic: Adjust indent.
ib
parents: 33549
diff changeset
272 XShapeQueryVersion(wsDisplay, &major, &minor);
33985
d99f341d8442 Replace all mp_dbg() calls by mp_msg().
ib
parents: 33977
diff changeset
273 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
274 }
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
275 #endif
33549
4f6e515e5bd1 Adjust message levels in wsXInit().
ib
parents: 33548
diff changeset
276
35733
ca384f3cd809 Remove and simplify code.
ib
parents: 35731
diff changeset
277 if (wsScreenDepth == 32 && wsRedMask == 0xff0000 && wsGreenMask == 0x00ff00 && wsBlueMask == 0x0000ff)
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
278 out_pix_fmt = PIX_FMT_RGB32;
35733
ca384f3cd809 Remove and simplify code.
ib
parents: 35731
diff changeset
279 else if (wsScreenDepth == 32 && wsRedMask == 0x0000ff && wsGreenMask == 0x00ff00 && wsBlueMask == 0xff0000)
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
280 out_pix_fmt = PIX_FMT_BGR32;
35733
ca384f3cd809 Remove and simplify code.
ib
parents: 35731
diff changeset
281 else if (wsScreenDepth == 24 && wsRedMask == 0xff0000 && wsGreenMask == 0x00ff00 && wsBlueMask == 0x0000ff)
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
282 out_pix_fmt = PIX_FMT_RGB24;
35733
ca384f3cd809 Remove and simplify code.
ib
parents: 35731
diff changeset
283 else if (wsScreenDepth == 24 && wsRedMask == 0x0000ff && wsGreenMask == 0x00ff00 && wsBlueMask == 0xff0000)
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
284 out_pix_fmt = PIX_FMT_BGR24;
35733
ca384f3cd809 Remove and simplify code.
ib
parents: 35731
diff changeset
285 else if (wsScreenDepth == 16 && wsRedMask == 0xf800 && wsGreenMask == 0x7e0 && wsBlueMask == 0x1f)
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
286 out_pix_fmt = PIX_FMT_RGB565;
35733
ca384f3cd809 Remove and simplify code.
ib
parents: 35731
diff changeset
287 else if (wsScreenDepth == 16 && wsRedMask == 0x1f && wsGreenMask == 0x7e0 && wsBlueMask == 0xf800)
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
288 out_pix_fmt = PIX_FMT_BGR565;
35733
ca384f3cd809 Remove and simplify code.
ib
parents: 35731
diff changeset
289 else if (wsScreenDepth == 15 && wsRedMask == 0x7c00 && wsGreenMask == 0x3e0 && wsBlueMask == 0x1f)
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
290 out_pix_fmt = PIX_FMT_RGB555;
35733
ca384f3cd809 Remove and simplify code.
ib
parents: 35731
diff changeset
291 else if (wsScreenDepth == 15 && wsRedMask == 0x1f && wsGreenMask == 0x3e0 && wsBlueMask == 0x7c00)
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
292 out_pix_fmt = PIX_FMT_BGR555;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
293 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
294
35681
80c5c89f77d6 Cosmetic: Rename ws functions for the sake of consistency.
ib
parents: 35680
diff changeset
295 void wsDone(void)
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
296 {
35746
e745b22750f6 Add some notes for later checking and fixing.
ib
parents: 35744
diff changeset
297 // NOTE TO MYSELF: uninit wsInit stuff?
35680
eca669983e9a Don't close the display.
ib
parents: 35679
diff changeset
298 //XCloseDisplay(wsDisplay);
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
299 }
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
300
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
301 /**
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
302 * @brief Inform about an X error that has occurred.
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
303 *
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
304 * @param display display
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
305 * @param event pointer to an X error event structure
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
306 *
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
307 * @return 0
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
308 */
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
309 static int wsErrorHandler(Display *display, XErrorEvent *event)
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
310 {
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
311 char type[128];
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
312
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
313 XGetErrorText(display, event->error_code, type, sizeof(type));
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
314
36694
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36299
diff changeset
315 mp_msg(MSGT_GPLAYER, MSGL_ERR, "[ws] " MSGTR_GUI_MSG_X11Error);
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
316 mp_msg(MSGT_GPLAYER, MSGL_ERR, "[ws] Error code: %d - %s\n", event->error_code, type);
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
317 mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[ws] Request code: %d (minor code: %d)\n", event->request_code, event->minor_code);
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
318 mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[ws] MPlayer module: %s\n", current_module ? current_module : "(none)");
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
319
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
320 return 0;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
321 }
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
322
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
323 /**
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
324 * @brief Set the X error handler.
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
325 */
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
326 void wsSetErrorHandler(void)
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
327 {
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
328 XSetErrorHandler(wsErrorHandler);
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
329 }
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
330
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
331 // ----------------------------------------------------------------------------------------------
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
332 // Handle events.
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
333 // ----------------------------------------------------------------------------------------------
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
334
35681
80c5c89f77d6 Cosmetic: Rename ws functions for the sake of consistency.
ib
parents: 35680
diff changeset
335 static int wsWindowListSearch(Window win)
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
336 {
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
337 int i;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
338
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
339 for (i = 0; i < wsWLCount; i++)
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
340 if (wsWindowList[i] && wsWindowList[i]->WindowID == win)
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
341 return i;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
342
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
343 return -1;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
344 }
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
345
35681
80c5c89f77d6 Cosmetic: Rename ws functions for the sake of consistency.
ib
parents: 35680
diff changeset
346 void wsEvent(XEvent *event)
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
347 {
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
348 unsigned long i = 0;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
349 int l;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
350 int x, y;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
351 Window child_window = 0;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
352
35681
80c5c89f77d6 Cosmetic: Rename ws functions for the sake of consistency.
ib
parents: 35680
diff changeset
353 l = wsWindowListSearch(event->xany.window);
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
354
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
355 if (l == -1)
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
356 return;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
357
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
358 wsWindowList[l]->State = wsNone;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
359
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
360 switch (event->type) {
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
361 case ClientMessage:
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
362
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
363 if (event->xclient.message_type == wsWindowList[l]->AtomProtocols) {
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
364 if ((Atom)event->xclient.data.l[0] == wsWindowList[l]->AtomDeleteWindow) {
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
365 i = wsWindowClosed;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
366 goto expose;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
367 }
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
368
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
369 if ((Atom)event->xclient.data.l[0] == wsWindowList[l]->AtomTakeFocus) {
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
370 i = wsWindowFocusIn;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
371 wsWindowList[l]->Focused = wsFocused;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
372 goto expose;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
373 }
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
374
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
375 if ((Atom)event->xclient.data.l[0] == wsWindowList[l]->AtomRolle) {
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
376 mp_msg(MSGT_GPLAYER, MSGL_V, "[ws] role set.\n");
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
377 }
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
378 } else {
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
379 /* try to process DND events */
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
380 wsXDNDProcessClientMessage(&event->xclient);
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
381 }
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
382
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
383 break;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
384
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
385 case MapNotify:
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
386
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
387 i = wsWindowMapped;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
388 wsWindowList[l]->Mapped = wsMapped;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
389 goto expose;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
390
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
391 case UnmapNotify:
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
392
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
393 i = wsWindowUnmapped;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
394 wsWindowList[l]->Mapped = wsNo;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
395 goto expose;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
396
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
397 case FocusIn:
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
398
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
399 if (wsWindowList[l]->Focused == wsFocused)
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
400 break;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
401
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
402 i = wsWindowFocusIn;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
403 wsWindowList[l]->Focused = wsFocused;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
404 goto expose;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
405
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
406 case FocusOut:
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
407
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
408 if (wsWindowList[l]->Focused == wsNo)
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
409 break;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
410
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
411 i = wsWindowFocusOut;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
412 wsWindowList[l]->Focused = wsNo;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
413 goto expose;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
414
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
415 case VisibilityNotify:
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
416
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
417 switch (event->xvisibility.state) {
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
418 case VisibilityUnobscured:
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
419 i = wsWindowVisible;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
420 wsWindowList[l]->Visible = wsVisible;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
421 goto expose;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
422
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
423 case VisibilityFullyObscured:
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
424 i = wsWindowNotVisible;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
425 wsWindowList[l]->Visible = wsNotVisible;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
426 goto expose;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
427
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
428 case VisibilityPartiallyObscured:
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
429 i = wsWindowPartialVisible;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
430 wsWindowList[l]->Visible = wsPVisible;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
431 goto expose;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
432 }
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
433
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
434 expose:
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
435 wsWindowList[l]->State = i;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
436
35760
1aedd24c032b Cosmetic: Rename ReDraw DrawHandler.
ib
parents: 35759
diff changeset
437 if (wsWindowList[l]->DrawHandler)
1aedd24c032b Cosmetic: Rename ReDraw DrawHandler.
ib
parents: 35759
diff changeset
438 wsWindowList[l]->DrawHandler();
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
439
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
440 break;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
441
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
442 case Expose:
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
443
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
444 wsWindowList[l]->State = wsWindowExpose;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
445
35760
1aedd24c032b Cosmetic: Rename ReDraw DrawHandler.
ib
parents: 35759
diff changeset
446 if ((wsWindowList[l]->DrawHandler) && (!event->xexpose.count))
1aedd24c032b Cosmetic: Rename ReDraw DrawHandler.
ib
parents: 35759
diff changeset
447 wsWindowList[l]->DrawHandler();
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
448
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
449 break;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
450
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
451 case ConfigureNotify:
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
452
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
453 XTranslateCoordinates(wsDisplay, wsWindowList[l]->WindowID, wsRootWin, 0, 0, &x, &y, &child_window);
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
454
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
455 if ((wsWindowList[l]->X != x) || (wsWindowList[l]->Y != y) || (wsWindowList[l]->Width != event->xconfigure.width) || (wsWindowList[l]->Height != event->xconfigure.height)) {
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
456 wsWindowList[l]->X = x;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
457 wsWindowList[l]->Y = y;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
458 wsWindowList[l]->Width = event->xconfigure.width;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
459 wsWindowList[l]->Height = event->xconfigure.height;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
460 }
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
461
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
462 wsWindowList[l]->Rolled = wsNo;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
463
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
464 if (event->xconfigure.y < 0) {
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
465 i = wsWindowRolled;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
466 wsWindowList[l]->Rolled = wsRolled;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
467 goto expose;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
468 }
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
469
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
470 break;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
471
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
472 case KeyPress:
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
473
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
474 i = wsKeyPressed;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
475 goto keypressed;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
476
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
477 case KeyRelease:
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
478
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
479 i = wsKeyReleased;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
480 keypressed:
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
481 wsWindowList[l]->Alt = False;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
482 wsWindowList[l]->Shift = False;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
483 wsWindowList[l]->NumLock = False;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
484 wsWindowList[l]->Control = False;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
485 wsWindowList[l]->CapsLock = False;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
486
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
487 if (event->xkey.state & Mod1Mask)
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
488 wsWindowList[l]->Alt = True;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
489
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
490 if (event->xkey.state & Mod2Mask)
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
491 wsWindowList[l]->NumLock = True;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
492
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
493 if (event->xkey.state & ControlMask)
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
494 wsWindowList[l]->Control = True;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
495
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
496 if (event->xkey.state & ShiftMask)
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
497 wsWindowList[l]->Shift = True;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
498
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
499 if (event->xkey.state & LockMask)
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
500 wsWindowList[l]->CapsLock = True;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
501
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
502 #if 0
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
503 {
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
504 KeySym keySym;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
505 keySym = XKeycodeToKeysym(wsDisplay, event->xkey.keycode, 0);
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
506
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
507 if (keySym != NoSymbol) {
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
508 keySym = ((keySym & 0xff00) != 0 ? ((keySym & 0x00ff) + 256) : (keySym));
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
509
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
510 if (wsWindowList[l]->KeyHandler)
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
511 wsWindowList[l]->KeyHandler(event->xkey.state, i, keySym);
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
512 }
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
513 }
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
514 #else
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
515 {
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
516 int key;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
517 char buf[100];
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
518 KeySym keySym;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
519 static XComposeStatus stat;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
520
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
521 XLookupString(&event->xkey, buf, sizeof(buf), &keySym, &stat);
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
522 key = ((keySym & 0xff00) != 0 ? ((keySym & 0x00ff) + 256) : (keySym));
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
523
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
524 if (wsWindowList[l]->KeyHandler)
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
525 wsWindowList[l]->KeyHandler(event->xkey.keycode, i, key);
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
526 }
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
527 #endif
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
528 break;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
529
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
530 case MotionNotify:
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
531
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
532 i = wsMoveMouse;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
533 {
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
534 /* pump all motion events from the display queue:
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
535 * this way it works faster when moving the window */
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
536 static XEvent e;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
537
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
538 if (event->xmotion.state) {
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
539 while (XCheckTypedWindowEvent(wsDisplay, event->xany.window, MotionNotify, &e)) {
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
540 /* FIXME: need to make sure we didn't release/press the button in between...*/
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
541 /* FIXME: do we need some timeout here to make sure we don't spend too much time
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
542 * removing events from the queue? */
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
543 event = &e;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
544 }
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
545 }
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
546 }
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
547
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
548 if (wsWindowList[l]->wsCursor != None) {
35681
80c5c89f77d6 Cosmetic: Rename ws functions for the sake of consistency.
ib
parents: 35680
diff changeset
549 wsMouseVisibility(wsWindowList[l], wsShowMouseCursor);
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
550 mouse_win = wsWindowList[l];
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
551 mouse_time = GetTimerMS();
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
552 }
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
553
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
554 goto buttonreleased;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
555
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
556 case ButtonRelease:
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
557
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
558 i = event->xbutton.button + 128;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
559
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
560 if (wsWindowList[l]->wsCursor != None) {
35681
80c5c89f77d6 Cosmetic: Rename ws functions for the sake of consistency.
ib
parents: 35680
diff changeset
561 wsMouseVisibility(wsWindowList[l], wsShowMouseCursor);
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
562 mouse_win = wsWindowList[l];
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
563 mouse_time = GetTimerMS();
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
564 }
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
565
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
566 goto buttonreleased;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
567
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
568 case ButtonPress:
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
569
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
570 i = event->xbutton.button;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
571
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
572 if (wsWindowList[l]->wsCursor != None) {
35681
80c5c89f77d6 Cosmetic: Rename ws functions for the sake of consistency.
ib
parents: 35680
diff changeset
573 wsMouseVisibility(wsWindowList[l], wsShowMouseCursor);
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
574 mouse_win = wsWindowList[l];
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
575 mouse_time = GetTimerMS();
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
576 }
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
577
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
578 goto buttonreleased;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
579
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
580 case EnterNotify:
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
581
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
582 i = wsEnterWindow;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
583 goto buttonreleased;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
584
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
585 case LeaveNotify:
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
586
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
587 i = wsLeaveWindow;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
588 buttonreleased:
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
589
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
590 if (wsWindowList[l]->MouseHandler)
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
591 wsWindowList[l]->MouseHandler(i, event->xbutton.x, event->xbutton.y, event->xmotion.x_root, event->xmotion.y_root);
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
592
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
593 break;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
594
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
595 case SelectionNotify:
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
596
35759
afb55738b1b7 Cosmetic: Replace DandD by DND.
ib
parents: 35756
diff changeset
597 /* Handle drag & drop */
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
598 wsXDNDProcessSelection(wsWindowList[l], event);
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
599 break;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
600 }
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
601 }
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
602
36072
506cefd8a5f0 Make comment a doxygen comment.
ib
parents: 36055
diff changeset
603 /**
506cefd8a5f0 Make comment a doxygen comment.
ib
parents: 36055
diff changeset
604 * @brief Process all pending events.
506cefd8a5f0 Make comment a doxygen comment.
ib
parents: 36055
diff changeset
605 */
35681
80c5c89f77d6 Cosmetic: Rename ws functions for the sake of consistency.
ib
parents: 35680
diff changeset
606 void wsEvents(void)
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
607 {
35681
80c5c89f77d6 Cosmetic: Rename ws functions for the sake of consistency.
ib
parents: 35680
diff changeset
608 XEvent xev;
36072
506cefd8a5f0 Make comment a doxygen comment.
ib
parents: 36055
diff changeset
609
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
610 while (XPending(wsDisplay)) {
35681
80c5c89f77d6 Cosmetic: Rename ws functions for the sake of consistency.
ib
parents: 35680
diff changeset
611 XNextEvent(wsDisplay, &xev);
80c5c89f77d6 Cosmetic: Rename ws functions for the sake of consistency.
ib
parents: 35680
diff changeset
612 wsEvent(&xev);
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
613 }
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
614 }
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
615
33995
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
616 /**
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
617 * @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
618 *
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
619 * @param win pointer to a ws window structure
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
620 * @param x x position of the window (real/absolute or mock)
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
621 * @param y y position of the window (real/absolute or mock)
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
622 * @param width width of the area to place the window in
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
623 * @param height height of the area to place the window in
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
624 */
35681
80c5c89f77d6 Cosmetic: Rename ws functions for the sake of consistency.
ib
parents: 35680
diff changeset
625 static void wsWindowUpdatePosition(wsWindow *win, int x, int y, int width, int height)
33995
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
626 {
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
627 switch (x) {
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
628 case -1:
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
629 win->X = wsOrgX + (wsMaxX - width) / 2;
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
630 break;
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
631
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
632 case -2:
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
633 win->X = wsOrgX + wsMaxX - width;
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
634 break;
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
635
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
636 default:
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
637 win->X = x;
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
638 break;
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
639 }
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
640
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
641 switch (y) {
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
642 case -1:
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
643 win->Y = wsOrgY + (wsMaxY - height) / 2;
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
644 break;
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
645
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
646 case -2:
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
647 win->Y = wsOrgY + wsMaxY - height;
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
648 break;
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
649
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
650 default:
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
651 win->Y = y;
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
652 break;
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
653 }
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
654 }
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
655
35645
c0ec433fe432 Add new function wsSizeHint().
ib
parents: 35644
diff changeset
656 /**
c0ec433fe432 Add new function wsSizeHint().
ib
parents: 35644
diff changeset
657 * @brief Replace the size hints for the WM_NORMAL_HINTS property of a window.
c0ec433fe432 Add new function wsSizeHint().
ib
parents: 35644
diff changeset
658 *
c0ec433fe432 Add new function wsSizeHint().
ib
parents: 35644
diff changeset
659 * @param win pointer to a ws window structure
c0ec433fe432 Add new function wsSizeHint().
ib
parents: 35644
diff changeset
660 */
35700
7820bad7c1f8 Cosmetic: Rename ws functions for the sake of consistency.
ib
parents: 35699
diff changeset
661 static void wsWindowSizeHint(wsWindow *win)
35645
c0ec433fe432 Add new function wsSizeHint().
ib
parents: 35644
diff changeset
662 {
35660
8de55114a330 Remove member SizeHint from wsWindow structure.
ib
parents: 35659
diff changeset
663 XSizeHints size;
8de55114a330 Remove member SizeHint from wsWindow structure.
ib
parents: 35659
diff changeset
664
8de55114a330 Remove member SizeHint from wsWindow structure.
ib
parents: 35659
diff changeset
665 size.flags = 0;
35645
c0ec433fe432 Add new function wsSizeHint().
ib
parents: 35644
diff changeset
666
35648
238c621810b6 Simplify wsSizeHint() by dropping parameter 'hints'.
ib
parents: 35646
diff changeset
667 /* obsolete, solely for compatibility reasons */
35660
8de55114a330 Remove member SizeHint from wsWindow structure.
ib
parents: 35659
diff changeset
668 size.flags |= PPosition;
8de55114a330 Remove member SizeHint from wsWindow structure.
ib
parents: 35659
diff changeset
669 size.x = win->X;
8de55114a330 Remove member SizeHint from wsWindow structure.
ib
parents: 35659
diff changeset
670 size.y = win->Y;
35645
c0ec433fe432 Add new function wsSizeHint().
ib
parents: 35644
diff changeset
671
35648
238c621810b6 Simplify wsSizeHint() by dropping parameter 'hints'.
ib
parents: 35646
diff changeset
672 /* obsolete, solely for compatibility reasons */
35660
8de55114a330 Remove member SizeHint from wsWindow structure.
ib
parents: 35659
diff changeset
673 size.flags |= PSize;
8de55114a330 Remove member SizeHint from wsWindow structure.
ib
parents: 35659
diff changeset
674 size.width = win->Width;
8de55114a330 Remove member SizeHint from wsWindow structure.
ib
parents: 35659
diff changeset
675 size.height = win->Height;
35645
c0ec433fe432 Add new function wsSizeHint().
ib
parents: 35644
diff changeset
676
35648
238c621810b6 Simplify wsSizeHint() by dropping parameter 'hints'.
ib
parents: 35646
diff changeset
677 /* a minimum of 4 is said to avoid off-by-one errors and be required by mga_vid */
35660
8de55114a330 Remove member SizeHint from wsWindow structure.
ib
parents: 35659
diff changeset
678 size.flags |= PMinSize;
8de55114a330 Remove member SizeHint from wsWindow structure.
ib
parents: 35659
diff changeset
679 size.min_width = 4;
8de55114a330 Remove member SizeHint from wsWindow structure.
ib
parents: 35659
diff changeset
680 size.min_height = 4;
35648
238c621810b6 Simplify wsSizeHint() by dropping parameter 'hints'.
ib
parents: 35646
diff changeset
681
238c621810b6 Simplify wsSizeHint() by dropping parameter 'hints'.
ib
parents: 35646
diff changeset
682 if (win->Property & wsMinSize) {
35660
8de55114a330 Remove member SizeHint from wsWindow structure.
ib
parents: 35659
diff changeset
683 size.min_width = win->Width;
8de55114a330 Remove member SizeHint from wsWindow structure.
ib
parents: 35659
diff changeset
684 size.min_height = win->Height;
35645
c0ec433fe432 Add new function wsSizeHint().
ib
parents: 35644
diff changeset
685 }
c0ec433fe432 Add new function wsSizeHint().
ib
parents: 35644
diff changeset
686
35648
238c621810b6 Simplify wsSizeHint() by dropping parameter 'hints'.
ib
parents: 35646
diff changeset
687 if (win->Property & wsMaxSize) {
35660
8de55114a330 Remove member SizeHint from wsWindow structure.
ib
parents: 35659
diff changeset
688 size.flags |= PMaxSize;
8de55114a330 Remove member SizeHint from wsWindow structure.
ib
parents: 35659
diff changeset
689 size.max_width = win->Width;
8de55114a330 Remove member SizeHint from wsWindow structure.
ib
parents: 35659
diff changeset
690 size.max_height = win->Height;
35645
c0ec433fe432 Add new function wsSizeHint().
ib
parents: 35644
diff changeset
691 }
c0ec433fe432 Add new function wsSizeHint().
ib
parents: 35644
diff changeset
692
35657
eadf0731a29a Add property wsAspect.
ib
parents: 35656
diff changeset
693 if (vo_keepaspect && (win->Property & wsAspect)) {
35660
8de55114a330 Remove member SizeHint from wsWindow structure.
ib
parents: 35659
diff changeset
694 size.flags |= PAspect;
8de55114a330 Remove member SizeHint from wsWindow structure.
ib
parents: 35659
diff changeset
695 size.min_aspect.x = win->Width;
8de55114a330 Remove member SizeHint from wsWindow structure.
ib
parents: 35659
diff changeset
696 size.min_aspect.y = win->Height;
8de55114a330 Remove member SizeHint from wsWindow structure.
ib
parents: 35659
diff changeset
697 size.max_aspect.x = win->Width;
8de55114a330 Remove member SizeHint from wsWindow structure.
ib
parents: 35659
diff changeset
698 size.max_aspect.y = win->Height;
35645
c0ec433fe432 Add new function wsSizeHint().
ib
parents: 35644
diff changeset
699 }
c0ec433fe432 Add new function wsSizeHint().
ib
parents: 35644
diff changeset
700
35660
8de55114a330 Remove member SizeHint from wsWindow structure.
ib
parents: 35659
diff changeset
701 size.flags |= PBaseSize;
8de55114a330 Remove member SizeHint from wsWindow structure.
ib
parents: 35659
diff changeset
702 size.base_width = 0;
8de55114a330 Remove member SizeHint from wsWindow structure.
ib
parents: 35659
diff changeset
703 size.base_height = 0;
35645
c0ec433fe432 Add new function wsSizeHint().
ib
parents: 35644
diff changeset
704
35660
8de55114a330 Remove member SizeHint from wsWindow structure.
ib
parents: 35659
diff changeset
705 size.flags |= PWinGravity;
8de55114a330 Remove member SizeHint from wsWindow structure.
ib
parents: 35659
diff changeset
706 size.win_gravity = StaticGravity;
35645
c0ec433fe432 Add new function wsSizeHint().
ib
parents: 35644
diff changeset
707
35660
8de55114a330 Remove member SizeHint from wsWindow structure.
ib
parents: 35659
diff changeset
708 XSetWMNormalHints(wsDisplay, win->WindowID, &size);
35645
c0ec433fe432 Add new function wsSizeHint().
ib
parents: 35644
diff changeset
709 }
c0ec433fe432 Add new function wsSizeHint().
ib
parents: 35644
diff changeset
710
35699
36527758158b Make wsWindowDecoration() static.
ib
parents: 35698
diff changeset
711 static void wsWindowDecoration(wsWindow *win)
35698
e44757ea8f94 Cosmetic: Relocate wsWindowDecoration().
ib
parents: 35697
diff changeset
712 {
e44757ea8f94 Cosmetic: Relocate wsWindowDecoration().
ib
parents: 35697
diff changeset
713 Atom wsMotifHints;
e44757ea8f94 Cosmetic: Relocate wsWindowDecoration().
ib
parents: 35697
diff changeset
714 struct {
e44757ea8f94 Cosmetic: Relocate wsWindowDecoration().
ib
parents: 35697
diff changeset
715 unsigned long flags;
e44757ea8f94 Cosmetic: Relocate wsWindowDecoration().
ib
parents: 35697
diff changeset
716 unsigned long functions;
e44757ea8f94 Cosmetic: Relocate wsWindowDecoration().
ib
parents: 35697
diff changeset
717 unsigned long decorations;
e44757ea8f94 Cosmetic: Relocate wsWindowDecoration().
ib
parents: 35697
diff changeset
718 long input_mode;
e44757ea8f94 Cosmetic: Relocate wsWindowDecoration().
ib
parents: 35697
diff changeset
719 unsigned long status;
e44757ea8f94 Cosmetic: Relocate wsWindowDecoration().
ib
parents: 35697
diff changeset
720 } wsMotifWmHints;
e44757ea8f94 Cosmetic: Relocate wsWindowDecoration().
ib
parents: 35697
diff changeset
721
e44757ea8f94 Cosmetic: Relocate wsWindowDecoration().
ib
parents: 35697
diff changeset
722 wsMotifHints = XInternAtom(wsDisplay, "_MOTIF_WM_HINTS", 0);
e44757ea8f94 Cosmetic: Relocate wsWindowDecoration().
ib
parents: 35697
diff changeset
723
e44757ea8f94 Cosmetic: Relocate wsWindowDecoration().
ib
parents: 35697
diff changeset
724 if (wsMotifHints == None)
e44757ea8f94 Cosmetic: Relocate wsWindowDecoration().
ib
parents: 35697
diff changeset
725 return;
e44757ea8f94 Cosmetic: Relocate wsWindowDecoration().
ib
parents: 35697
diff changeset
726
e44757ea8f94 Cosmetic: Relocate wsWindowDecoration().
ib
parents: 35697
diff changeset
727 memset(&wsMotifWmHints, 0, sizeof(wsMotifWmHints));
e44757ea8f94 Cosmetic: Relocate wsWindowDecoration().
ib
parents: 35697
diff changeset
728 wsMotifWmHints.flags = MWM_HINTS_FUNCTIONS | MWM_HINTS_DECORATIONS;
e44757ea8f94 Cosmetic: Relocate wsWindowDecoration().
ib
parents: 35697
diff changeset
729
e44757ea8f94 Cosmetic: Relocate wsWindowDecoration().
ib
parents: 35697
diff changeset
730 if (win->Decoration) {
e44757ea8f94 Cosmetic: Relocate wsWindowDecoration().
ib
parents: 35697
diff changeset
731 wsMotifWmHints.functions = MWM_FUNC_MOVE | MWM_FUNC_CLOSE | MWM_FUNC_MINIMIZE | MWM_FUNC_MAXIMIZE;
e44757ea8f94 Cosmetic: Relocate wsWindowDecoration().
ib
parents: 35697
diff changeset
732
e44757ea8f94 Cosmetic: Relocate wsWindowDecoration().
ib
parents: 35697
diff changeset
733 if (!(win->Property & wsMinSize) || !(win->Property & wsMaxSize))
e44757ea8f94 Cosmetic: Relocate wsWindowDecoration().
ib
parents: 35697
diff changeset
734 wsMotifWmHints.functions |= MWM_FUNC_RESIZE;
e44757ea8f94 Cosmetic: Relocate wsWindowDecoration().
ib
parents: 35697
diff changeset
735
e44757ea8f94 Cosmetic: Relocate wsWindowDecoration().
ib
parents: 35697
diff changeset
736 wsMotifWmHints.decorations = MWM_DECOR_ALL;
e44757ea8f94 Cosmetic: Relocate wsWindowDecoration().
ib
parents: 35697
diff changeset
737 }
e44757ea8f94 Cosmetic: Relocate wsWindowDecoration().
ib
parents: 35697
diff changeset
738
e44757ea8f94 Cosmetic: Relocate wsWindowDecoration().
ib
parents: 35697
diff changeset
739 XChangeProperty(wsDisplay, win->WindowID, wsMotifHints, wsMotifHints, 32,
e44757ea8f94 Cosmetic: Relocate wsWindowDecoration().
ib
parents: 35697
diff changeset
740 PropModeReplace, (unsigned char *)&wsMotifWmHints, 5);
e44757ea8f94 Cosmetic: Relocate wsWindowDecoration().
ib
parents: 35697
diff changeset
741 }
e44757ea8f94 Cosmetic: Relocate wsWindowDecoration().
ib
parents: 35697
diff changeset
742
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
743 // ----------------------------------------------------------------------------------------------
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
744 // Create window.
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
745 // X,Y : window position
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
746 // wX,wY : size of window
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
747 // bW : border width
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
748 // cV : visible mouse cursor on window
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
749 // D : visible frame, title, etc.
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
750 // sR : screen ratio
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
751 // ----------------------------------------------------------------------------------------------
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
752
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
753 XClassHint wsClassHint;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
754 XTextProperty wsTextProperty;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
755 Window LeaderWindow;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
756
35655
9ea476ced9ab Cosmetic: Change parameter names.
ib
parents: 35653
diff changeset
757 // ----------------------------------------------------------------------------------------------
35681
80c5c89f77d6 Cosmetic: Rename ws functions for the sake of consistency.
ib
parents: 35680
diff changeset
758 // wsWindowCreate: create a new window on the screen.
35655
9ea476ced9ab Cosmetic: Change parameter names.
ib
parents: 35653
diff changeset
759 // x,y : window position
9ea476ced9ab Cosmetic: Change parameter names.
ib
parents: 35653
diff changeset
760 // w,h : window size
9ea476ced9ab Cosmetic: Change parameter names.
ib
parents: 35653
diff changeset
761 // c : mouse cursor visible
9ea476ced9ab Cosmetic: Change parameter names.
ib
parents: 35653
diff changeset
762 // p : properties - "decoration", visible titlebar, etc ...
9ea476ced9ab Cosmetic: Change parameter names.
ib
parents: 35653
diff changeset
763 // ----------------------------------------------------------------------------------------------
35687
6996700b8d1f Don't unnecessarily restrict property mask to 8 bits.
ib
parents: 35683
diff changeset
764 void wsWindowCreate(wsWindow *win, int x, int y, int w, int h, int p, int c, char *label)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
765 {
36193
9beb155c77a0 Cosmetic: Adjust indent.
ib
parents: 36192
diff changeset
766 int i, depth;
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
767
36193
9beb155c77a0 Cosmetic: Adjust indent.
ib
parents: 36192
diff changeset
768 for (i = 0; i < wsWLCount; i++)
9beb155c77a0 Cosmetic: Adjust indent.
ib
parents: 36192
diff changeset
769 if (wsWindowList[i] == NULL)
9beb155c77a0 Cosmetic: Adjust indent.
ib
parents: 36192
diff changeset
770 break;
36192
2e0729818242 Relocate internal wsWindowList registration code.
ib
parents: 36072
diff changeset
771
36193
9beb155c77a0 Cosmetic: Adjust indent.
ib
parents: 36192
diff changeset
772 if (i == wsWLCount) {
36694
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36299
diff changeset
773 mp_msg(MSGT_GPLAYER, MSGL_FATAL, MSGTR_GUI_MSG_TooManyWindows);
36193
9beb155c77a0 Cosmetic: Adjust indent.
ib
parents: 36192
diff changeset
774 mplayer(MPLAYER_EXIT_GUI, EXIT_ERROR, 0);
9beb155c77a0 Cosmetic: Adjust indent.
ib
parents: 36192
diff changeset
775 }
36192
2e0729818242 Relocate internal wsWindowList registration code.
ib
parents: 36072
diff changeset
776
36193
9beb155c77a0 Cosmetic: Adjust indent.
ib
parents: 36192
diff changeset
777 wsWindowList[i] = win;
36192
2e0729818242 Relocate internal wsWindowList registration code.
ib
parents: 36072
diff changeset
778
35655
9ea476ced9ab Cosmetic: Change parameter names.
ib
parents: 35653
diff changeset
779 win->Property = p;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
780
35697
13f8a04c5524 Remove redundant parameter from function.
ib
parents: 35696
diff changeset
781 win->Decoration = ((p & wsShowFrame) != 0);
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
782
35681
80c5c89f77d6 Cosmetic: Rename ws functions for the sake of consistency.
ib
parents: 35680
diff changeset
783 wsWindowUpdatePosition(win, x, y, w, h);
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
784
35655
9ea476ced9ab Cosmetic: Change parameter names.
ib
parents: 35653
diff changeset
785 win->Width = w;
9ea476ced9ab Cosmetic: Change parameter names.
ib
parents: 35653
diff changeset
786 win->Height = h;
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
787 win->OldX = win->X;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
788 win->OldY = win->Y;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
789 win->OldWidth = win->Width;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
790 win->OldHeight = win->Height;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
791
34684
b03481253518 Cosmetic: Prefer C style for single line comments.
ib
parents: 34470
diff changeset
792 /* Hide Mouse Cursor */
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
793 win->wsCursor = None;
35655
9ea476ced9ab Cosmetic: Change parameter names.
ib
parents: 35653
diff changeset
794 win->wsMouseEventType = c;
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
795 win->wsCursorData[0] = 0;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
796 win->wsCursorPixmap = XCreateBitmapFromData(wsDisplay, wsRootWin, win->wsCursorData, 1, 1);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
797
35655
9ea476ced9ab Cosmetic: Change parameter names.
ib
parents: 35653
diff changeset
798 if (!(c & wsShowMouseCursor))
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
799 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
800
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
801 depth = vo_find_depth_from_visuals(wsDisplay, wsScreen, NULL);
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 (depth < 15) {
36694
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36299
diff changeset
804 mp_msg(MSGT_GPLAYER, MSGL_FATAL, MSGTR_GUI_MSG_ColorDepthTooLow);
33768
cee9987bc81d Remove guiExit().
ib
parents: 33550
diff changeset
805 mplayer(MPLAYER_EXIT_GUI, EXIT_ERROR, 0);
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
806 }
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
807
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
808 XMatchVisualInfo(wsDisplay, wsScreen, depth, TrueColor, &win->VisualInfo);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
809
36258
9a319cd3ee66 Add a debug message on the visual.
ib
parents: 36194
diff changeset
810 mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[ws] visual: ID %#lx\n", win->VisualInfo.visualid);
9a319cd3ee66 Add a debug message on the visual.
ib
parents: 36194
diff changeset
811
34684
b03481253518 Cosmetic: Prefer C style for single line comments.
ib
parents: 34470
diff changeset
812 /* --- */
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
813 win->AtomLeaderClient = XInternAtom(wsDisplay, "WM_CLIENT_LEADER", False);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
814 win->AtomDeleteWindow = XInternAtom(wsDisplay, "WM_DELETE_WINDOW", False);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
815 win->AtomTakeFocus = XInternAtom(wsDisplay, "WM_TAKE_FOCUS", False);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
816 win->AtomRolle = XInternAtom(wsDisplay, "WM_WINDOW_ROLE", False);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
817 win->AtomWMSizeHint = XInternAtom(wsDisplay, "WM_SIZE_HINT", False);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
818 win->AtomWMNormalHint = XInternAtom(wsDisplay, "WM_NORMAL_HINT", False);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
819 win->AtomProtocols = XInternAtom(wsDisplay, "WM_PROTOCOLS", False);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
820 win->AtomsProtocols[0] = win->AtomDeleteWindow;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
821 win->AtomsProtocols[1] = win->AtomTakeFocus;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
822 win->AtomsProtocols[2] = win->AtomRolle;
34684
b03481253518 Cosmetic: Prefer C style for single line comments.
ib
parents: 34470
diff changeset
823 /* --- */
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
824
35737
1bdc6cea0722 Cosmetic: Adjust indent.
ib
parents: 35736
diff changeset
825 win->WindowAttrib.border_pixel = WhitePixel(wsDisplay, wsScreen);
1bdc6cea0722 Cosmetic: Adjust indent.
ib
parents: 35736
diff changeset
826 win->WindowAttrib.colormap = XCreateColormap(wsDisplay, wsRootWin, win->VisualInfo.visual, AllocNone);
1bdc6cea0722 Cosmetic: Adjust indent.
ib
parents: 35736
diff changeset
827 win->WindowAttrib.event_mask = StructureNotifyMask | FocusChangeMask |
1bdc6cea0722 Cosmetic: Adjust indent.
ib
parents: 35736
diff changeset
828 ExposureMask | PropertyChangeMask |
1bdc6cea0722 Cosmetic: Adjust indent.
ib
parents: 35736
diff changeset
829 EnterWindowMask | LeaveWindowMask |
1bdc6cea0722 Cosmetic: Adjust indent.
ib
parents: 35736
diff changeset
830 VisibilityChangeMask |
1bdc6cea0722 Cosmetic: Adjust indent.
ib
parents: 35736
diff changeset
831 KeyPressMask | KeyReleaseMask;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
832
35655
9ea476ced9ab Cosmetic: Change parameter names.
ib
parents: 35653
diff changeset
833 if ((c & wsHandleMouseButton))
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
834 win->WindowAttrib.event_mask |= ButtonPressMask | ButtonReleaseMask;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
835
35655
9ea476ced9ab Cosmetic: Change parameter names.
ib
parents: 35653
diff changeset
836 if ((c & wsHandleMouseMove))
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
837 win->WindowAttrib.event_mask |= PointerMotionMask;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
838
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
839 win->WindowAttrib.cursor = win->wsCursor;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
840 win->WindowAttrib.override_redirect = False;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
841
35655
9ea476ced9ab Cosmetic: Change parameter names.
ib
parents: 35653
diff changeset
842 if (p & wsOverredirect)
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
843 win->WindowAttrib.override_redirect = True;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
844
35736
f1a696672425 Remove setting pointless window attribute CWBackPixel.
ib
parents: 35734
diff changeset
845 win->WindowMask = CWBorderPixel |
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
846 CWColormap | CWEventMask | CWCursor |
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
847 CWOverrideRedirect;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
848
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
849 win->WindowID = XCreateWindow(wsDisplay,
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
850 (win->Parent != 0 ? win->Parent : wsRootWin),
35683
75155d8a9c7e Remove parameter for border_width from wsWindowCreate().
ib
parents: 35682
diff changeset
851 win->X, win->Y, win->Width, win->Height, 0,
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
852 win->VisualInfo.depth,
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
853 InputOutput,
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
854 win->VisualInfo.visual,
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
855 win->WindowMask, &win->WindowAttrib);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
856
36055
4489eafbe0a9 Change some class hint names.
ib
parents: 36053
diff changeset
857 wsClassHint.res_name = "GUI";
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
858
36053
7affacef2f88 Define "MPlayer" string.
ib
parents: 36032
diff changeset
859 wsClassHint.res_class = MPlayer;
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
860 XSetClassHint(wsDisplay, win->WindowID, &wsClassHint);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
861
35700
7820bad7c1f8 Cosmetic: Rename ws functions for the sake of consistency.
ib
parents: 35699
diff changeset
862 wsWindowSizeHint(win);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
863
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
864 win->WMHints.flags = InputHint | StateHint;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
865 win->WMHints.input = True;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
866 win->WMHints.initial_state = NormalState;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
867 XSetWMHints(wsDisplay, win->WindowID, &win->WMHints);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
868
35697
13f8a04c5524 Remove redundant parameter from function.
ib
parents: 35696
diff changeset
869 wsWindowDecoration(win);
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
870 XStoreName(wsDisplay, win->WindowID, label);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
871 XmbSetWMProperties(wsDisplay, win->WindowID, label, label, NULL, 0, NULL, NULL, NULL);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
872
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
873 XSetWMProtocols(wsDisplay, win->WindowID, win->AtomsProtocols, 3);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
874 XChangeProperty(wsDisplay, win->WindowID,
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
875 win->AtomLeaderClient,
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
876 XA_WINDOW, 32, PropModeReplace,
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
877 (unsigned char *)&LeaderWindow, 1);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
878
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
879 wsTextProperty.value = label;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
880 wsTextProperty.encoding = XA_STRING;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
881 wsTextProperty.format = 8;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
882 wsTextProperty.nitems = strlen(label);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
883 XSetWMIconName(wsDisplay, win->WindowID, &wsTextProperty);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
884
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
885 win->wGC = XCreateGC(wsDisplay, win->WindowID,
35679
23183b261ca9 Remove unused structure member wGCV.
ib
parents: 35678
diff changeset
886 0,
23183b261ca9 Remove unused structure member wGCV.
ib
parents: 35678
diff changeset
887 NULL);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
888
35498
c505a4aa9582 Rename wsNone wsNo and use it instead of a numeric constant.
ib
parents: 35497
diff changeset
889 win->Visible = wsNo;
c505a4aa9582 Rename wsNone wsNo and use it instead of a numeric constant.
ib
parents: 35497
diff changeset
890 win->Focused = wsNo;
c505a4aa9582 Rename wsNone wsNo and use it instead of a numeric constant.
ib
parents: 35497
diff changeset
891 win->Mapped = wsNo;
c505a4aa9582 Rename wsNone wsNo and use it instead of a numeric constant.
ib
parents: 35497
diff changeset
892 win->Rolled = wsNo;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
893
35681
80c5c89f77d6 Cosmetic: Rename ws functions for the sake of consistency.
ib
parents: 35680
diff changeset
894 wsImageCreate(win, win->Width, win->Height);
34684
b03481253518 Cosmetic: Prefer C style for single line comments.
ib
parents: 34470
diff changeset
895 /* End of creating -------------------------------------------------------------------------- */
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
896
35760
1aedd24c032b Cosmetic: Rename ReDraw DrawHandler.
ib
parents: 35759
diff changeset
897 win->DrawHandler = NULL;
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
898 win->MouseHandler = NULL;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
899 win->KeyHandler = NULL;
36259
c5b20369f0be Prettify debug message.
ib
parents: 36258
diff changeset
900 mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[ws] window successfully created: %s\n", label);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
901 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
902
35681
80c5c89f77d6 Cosmetic: Rename ws functions for the sake of consistency.
ib
parents: 35680
diff changeset
903 void wsWindowDestroy(wsWindow *win)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
904 {
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
905 int l;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
906
35681
80c5c89f77d6 Cosmetic: Rename ws functions for the sake of consistency.
ib
parents: 35680
diff changeset
907 l = wsWindowListSearch(win->WindowID);
35354
2ce3d21157ed Check array index.
ib
parents: 34684
diff changeset
908
2ce3d21157ed Check array index.
ib
parents: 34684
diff changeset
909 if (l != -1)
2ce3d21157ed Check array index.
ib
parents: 34684
diff changeset
910 wsWindowList[l] = NULL;
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
911
35760
1aedd24c032b Cosmetic: Rename ReDraw DrawHandler.
ib
parents: 35759
diff changeset
912 win->DrawHandler = NULL;
35752
d302b71c644e Disable handler fuctions in wsWindowDestroy().
ib
parents: 35746
diff changeset
913 win->MouseHandler = NULL;
d302b71c644e Disable handler fuctions in wsWindowDestroy().
ib
parents: 35746
diff changeset
914 win->KeyHandler = NULL;
35759
afb55738b1b7 Cosmetic: Replace DandD by DND.
ib
parents: 35756
diff changeset
915 win->DNDHandler = NULL;
35752
d302b71c644e Disable handler fuctions in wsWindowDestroy().
ib
parents: 35746
diff changeset
916
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
917 if (win->wsCursor != None) {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
918 XFreeCursor(wsDisplay, win->wsCursor);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
919 win->wsCursor = None;
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
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
922 XFreeGC(wsDisplay, win->wGC);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
923 XUnmapWindow(wsDisplay, win->WindowID);
35681
80c5c89f77d6 Cosmetic: Rename ws functions for the sake of consistency.
ib
parents: 35680
diff changeset
924 wsImageDestroy(win);
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
925 XDestroyWindow(wsDisplay, win->WindowID);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
926 #if 0
35753
9c74edcbbc96 Cosmetic: Adjust indent.
ib
parents: 35752
diff changeset
927 win->Visible = wsNo;
9c74edcbbc96 Cosmetic: Adjust indent.
ib
parents: 35752
diff changeset
928 win->Focused = wsNo;
9c74edcbbc96 Cosmetic: Adjust indent.
ib
parents: 35752
diff changeset
929 win->Mapped = wsNo;
9c74edcbbc96 Cosmetic: Adjust indent.
ib
parents: 35752
diff changeset
930 win->Rolled = wsNo;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
931 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
932 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
933
35681
80c5c89f77d6 Cosmetic: Rename ws functions for the sake of consistency.
ib
parents: 35680
diff changeset
934 void wsWindowShape(wsWindow *win, char *data)
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
935 {
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
936 #ifdef CONFIG_XSHAPE
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
937 if (!wsUseXShape)
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
938 return;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
939
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
940 if (data) {
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
941 win->Mask = XCreateBitmapFromData(wsDisplay, win->WindowID, data, win->Width, win->Height);
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
942 XShapeCombineMask(wsDisplay, win->WindowID, ShapeBounding, 0, 0, win->Mask, ShapeSet);
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
943 XFreePixmap(wsDisplay, win->Mask);
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
944 } else
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
945 XShapeCombineMask(wsDisplay, win->WindowID, ShapeBounding, 0, 0, None, ShapeSet);
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
946 #endif
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
947 }
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
948
34081
66c5a04a5c32 Fix cursor autohide functionality of the GUI.
ib
parents: 34034
diff changeset
949 /**
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
950 * @brief Set differently sized icons to a window.
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
951 *
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
952 * This function sets the X icon hint as well as
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
953 * the properties KWM_WIN_ICON and _NET_WM_ICON.
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
954 *
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
955 * @param display display
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
956 * @param Win window
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
957 * @param icon pointer to the icons
34081
66c5a04a5c32 Fix cursor autohide functionality of the GUI.
ib
parents: 34034
diff changeset
958 */
35681
80c5c89f77d6 Cosmetic: Rename ws functions for the sake of consistency.
ib
parents: 35680
diff changeset
959 void wsWindowIcon(Display *display, Window Win, guiIcon_t *icon)
34081
66c5a04a5c32 Fix cursor autohide functionality of the GUI.
ib
parents: 34034
diff changeset
960 {
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
961 XWMHints *wm;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
962 Atom iconatom;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
963 long data[2];
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
964
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
965 if (icon->normal) {
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
966 wm = XGetWMHints(display, Win);
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
967
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
968 if (!wm)
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
969 wm = XAllocWMHints();
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
970
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
971 wm->icon_pixmap = icon->normal;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
972 wm->icon_mask = icon->normal_mask;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
973 wm->flags |= IconPixmapHint | IconMaskHint;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
974
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
975 XSetWMHints(display, Win, wm);
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
976 XFree(wm);
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
977 }
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
978
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
979 if (icon->small || icon->normal) {
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
980 iconatom = XInternAtom(display, "KWM_WIN_ICON", False);
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
981 data[0] = (icon->small ? icon->small : icon->normal);
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
982 data[1] = (icon->small ? icon->small_mask : icon->normal_mask);
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
983
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
984 XChangeProperty(display, Win, iconatom, iconatom, 32, PropModeReplace, (unsigned char *)data, 2);
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
985 }
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
986
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
987 if (icon->collection) {
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
988 iconatom = XInternAtom(display, "_NET_WM_ICON", False);
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
989 XChangeProperty(display, Win, iconatom, XA_CARDINAL, 32, PropModeReplace, (unsigned char *)icon->collection, icon->collection_size);
34081
66c5a04a5c32 Fix cursor autohide functionality of the GUI.
ib
parents: 34034
diff changeset
990 }
66c5a04a5c32 Fix cursor autohide functionality of the GUI.
ib
parents: 34034
diff changeset
991 }
66c5a04a5c32 Fix cursor autohide functionality of the GUI.
ib
parents: 34034
diff changeset
992
35730
330325df88ed Relocate #defines and make them functions.
ib
parents: 35728
diff changeset
993 /**
330325df88ed Relocate #defines and make them functions.
ib
parents: 35728
diff changeset
994 * @brief Pack color components @a r, @a g and @a b into 15 bits.
330325df88ed Relocate #defines and make them functions.
ib
parents: 35728
diff changeset
995 *
330325df88ed Relocate #defines and make them functions.
ib
parents: 35728
diff changeset
996 * @param r red (0 - 255)
330325df88ed Relocate #defines and make them functions.
ib
parents: 35728
diff changeset
997 * @param g green (0 - 255)
330325df88ed Relocate #defines and make them functions.
ib
parents: 35728
diff changeset
998 * @param b blue (0 - 255)
330325df88ed Relocate #defines and make them functions.
ib
parents: 35728
diff changeset
999 *
330325df88ed Relocate #defines and make them functions.
ib
parents: 35728
diff changeset
1000 * @return pixel suitable for a RGB 15 bits color format
330325df88ed Relocate #defines and make them functions.
ib
parents: 35728
diff changeset
1001 */
330325df88ed Relocate #defines and make them functions.
ib
parents: 35728
diff changeset
1002 static int pack_rgb15(int r, int g, int b)
330325df88ed Relocate #defines and make them functions.
ib
parents: 35728
diff changeset
1003 {
330325df88ed Relocate #defines and make them functions.
ib
parents: 35728
diff changeset
1004 int pixel;
330325df88ed Relocate #defines and make them functions.
ib
parents: 35728
diff changeset
1005
35734
4ac697e15661 Remove pointless parentheses.
ib
parents: 35733
diff changeset
1006 pixel = r >> 3;
35730
330325df88ed Relocate #defines and make them functions.
ib
parents: 35728
diff changeset
1007 pixel <<= 5;
35734
4ac697e15661 Remove pointless parentheses.
ib
parents: 35733
diff changeset
1008 pixel |= g >> 3;
35730
330325df88ed Relocate #defines and make them functions.
ib
parents: 35728
diff changeset
1009 pixel <<= 5;
35734
4ac697e15661 Remove pointless parentheses.
ib
parents: 35733
diff changeset
1010 pixel |= b >> 3;
35730
330325df88ed Relocate #defines and make them functions.
ib
parents: 35728
diff changeset
1011
330325df88ed Relocate #defines and make them functions.
ib
parents: 35728
diff changeset
1012 return pixel;
330325df88ed Relocate #defines and make them functions.
ib
parents: 35728
diff changeset
1013 }
330325df88ed Relocate #defines and make them functions.
ib
parents: 35728
diff changeset
1014
330325df88ed Relocate #defines and make them functions.
ib
parents: 35728
diff changeset
1015 /**
330325df88ed Relocate #defines and make them functions.
ib
parents: 35728
diff changeset
1016 * @brief Pack color components @a r, @a g and @a b into 16 bits.
330325df88ed Relocate #defines and make them functions.
ib
parents: 35728
diff changeset
1017 *
330325df88ed Relocate #defines and make them functions.
ib
parents: 35728
diff changeset
1018 * @param r red (0 - 255)
330325df88ed Relocate #defines and make them functions.
ib
parents: 35728
diff changeset
1019 * @param g green (0 - 255)
330325df88ed Relocate #defines and make them functions.
ib
parents: 35728
diff changeset
1020 * @param b blue (0 - 255)
330325df88ed Relocate #defines and make them functions.
ib
parents: 35728
diff changeset
1021 *
330325df88ed Relocate #defines and make them functions.
ib
parents: 35728
diff changeset
1022 * @return pixel suitable for a RGB 16 bits color format
330325df88ed Relocate #defines and make them functions.
ib
parents: 35728
diff changeset
1023 */
330325df88ed Relocate #defines and make them functions.
ib
parents: 35728
diff changeset
1024 static int pack_rgb16(int r, int g, int b)
330325df88ed Relocate #defines and make them functions.
ib
parents: 35728
diff changeset
1025 {
330325df88ed Relocate #defines and make them functions.
ib
parents: 35728
diff changeset
1026 int pixel;
330325df88ed Relocate #defines and make them functions.
ib
parents: 35728
diff changeset
1027
35734
4ac697e15661 Remove pointless parentheses.
ib
parents: 35733
diff changeset
1028 pixel = r >> 3;
35730
330325df88ed Relocate #defines and make them functions.
ib
parents: 35728
diff changeset
1029 pixel <<= 6;
35734
4ac697e15661 Remove pointless parentheses.
ib
parents: 35733
diff changeset
1030 pixel |= g >> 2;
35730
330325df88ed Relocate #defines and make them functions.
ib
parents: 35728
diff changeset
1031 pixel <<= 5;
35734
4ac697e15661 Remove pointless parentheses.
ib
parents: 35733
diff changeset
1032 pixel |= b >> 3;
35730
330325df88ed Relocate #defines and make them functions.
ib
parents: 35728
diff changeset
1033
330325df88ed Relocate #defines and make them functions.
ib
parents: 35728
diff changeset
1034 return pixel;
330325df88ed Relocate #defines and make them functions.
ib
parents: 35728
diff changeset
1035 }
330325df88ed Relocate #defines and make them functions.
ib
parents: 35728
diff changeset
1036
35755
589cf8a5f165 Realize a smooth and flicker-free video when resizing during playback.
ib
parents: 35754
diff changeset
1037 /**
589cf8a5f165 Realize a smooth and flicker-free video when resizing during playback.
ib
parents: 35754
diff changeset
1038 * @brief Set and fill, or unset a window background.
589cf8a5f165 Realize a smooth and flicker-free video when resizing during playback.
ib
parents: 35754
diff changeset
1039 *
589cf8a5f165 Realize a smooth and flicker-free video when resizing during playback.
ib
parents: 35754
diff changeset
1040 * @param win pointer to a ws window structure
589cf8a5f165 Realize a smooth and flicker-free video when resizing during playback.
ib
parents: 35754
diff changeset
1041 * @param r red (0 - 255, or -1)
589cf8a5f165 Realize a smooth and flicker-free video when resizing during playback.
ib
parents: 35754
diff changeset
1042 * @param g green (0 - 255, or -1)
589cf8a5f165 Realize a smooth and flicker-free video when resizing during playback.
ib
parents: 35754
diff changeset
1043 * @param b blue (0 - 255, or -1)
589cf8a5f165 Realize a smooth and flicker-free video when resizing during playback.
ib
parents: 35754
diff changeset
1044 *
589cf8a5f165 Realize a smooth and flicker-free video when resizing during playback.
ib
parents: 35754
diff changeset
1045 * @note Passing -1 for @a r, @a g and @a b unsets the background.
589cf8a5f165 Realize a smooth and flicker-free video when resizing during playback.
ib
parents: 35754
diff changeset
1046 */
35681
80c5c89f77d6 Cosmetic: Rename ws functions for the sake of consistency.
ib
parents: 35680
diff changeset
1047 void wsWindowBackground(wsWindow *win, int r, int g, int b)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1048 {
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1049 int color = 0;
35541
ded4a8c2aa70 Cosmetic: Add some blank lines.
ib
parents: 35499
diff changeset
1050
35733
ca384f3cd809 Remove and simplify code.
ib
parents: 35731
diff changeset
1051 switch (out_pix_fmt) {
ca384f3cd809 Remove and simplify code.
ib
parents: 35731
diff changeset
1052 case PIX_FMT_RGB32:
ca384f3cd809 Remove and simplify code.
ib
parents: 35731
diff changeset
1053 case PIX_FMT_RGB24:
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1054 color = (r << 16) + (g << 8) + b;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1055 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1056
35733
ca384f3cd809 Remove and simplify code.
ib
parents: 35731
diff changeset
1057 case PIX_FMT_BGR32:
ca384f3cd809 Remove and simplify code.
ib
parents: 35731
diff changeset
1058 case PIX_FMT_BGR24:
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1059 color = (b << 16) + (g << 8) + r;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1060 break;
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1061
35733
ca384f3cd809 Remove and simplify code.
ib
parents: 35731
diff changeset
1062 case PIX_FMT_RGB565:
35730
330325df88ed Relocate #defines and make them functions.
ib
parents: 35728
diff changeset
1063 color = pack_rgb16(r, g, b);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1064 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1065
35733
ca384f3cd809 Remove and simplify code.
ib
parents: 35731
diff changeset
1066 case PIX_FMT_BGR565:
35730
330325df88ed Relocate #defines and make them functions.
ib
parents: 35728
diff changeset
1067 color = pack_rgb16(b, g, r);
35728
168aae142525 Redefine PACK_RGB16 and PACK_RGB15.
ib
parents: 35707
diff changeset
1068 break;
168aae142525 Redefine PACK_RGB16 and PACK_RGB15.
ib
parents: 35707
diff changeset
1069
35733
ca384f3cd809 Remove and simplify code.
ib
parents: 35731
diff changeset
1070 case PIX_FMT_RGB555:
35730
330325df88ed Relocate #defines and make them functions.
ib
parents: 35728
diff changeset
1071 color = pack_rgb15(r, g, b);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1072 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1073
35733
ca384f3cd809 Remove and simplify code.
ib
parents: 35731
diff changeset
1074 case PIX_FMT_BGR555:
35730
330325df88ed Relocate #defines and make them functions.
ib
parents: 35728
diff changeset
1075 color = pack_rgb15(b, g, r);
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1076 break;
35733
ca384f3cd809 Remove and simplify code.
ib
parents: 35731
diff changeset
1077
ca384f3cd809 Remove and simplify code.
ib
parents: 35731
diff changeset
1078 default:
ca384f3cd809 Remove and simplify code.
ib
parents: 35731
diff changeset
1079 ;
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1080 }
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1081
36299
f5e428d7991b Add a XSync() call.
ib
parents: 36298
diff changeset
1082 if (r == -1 && g == -1 && b == -1) {
f5e428d7991b Add a XSync() call.
ib
parents: 36298
diff changeset
1083 XSync(wsDisplay, False);
35755
589cf8a5f165 Realize a smooth and flicker-free video when resizing during playback.
ib
parents: 35754
diff changeset
1084 XSetWindowBackgroundPixmap(wsDisplay, win->WindowID, None);
36299
f5e428d7991b Add a XSync() call.
ib
parents: 36298
diff changeset
1085 } else {
35756
3919b6360e54 Cosmetic: Adjust indent.
ib
parents: 35755
diff changeset
1086 XSetWindowBackground(wsDisplay, win->WindowID, color);
3919b6360e54 Cosmetic: Adjust indent.
ib
parents: 35755
diff changeset
1087 XClearWindow(wsDisplay, win->WindowID);
35755
589cf8a5f165 Realize a smooth and flicker-free video when resizing during playback.
ib
parents: 35754
diff changeset
1088 }
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1089 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1090
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1091 // ----------------------------------------------------------------------------------------------
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1092 // Move window to x, y.
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1093 // ----------------------------------------------------------------------------------------------
35681
80c5c89f77d6 Cosmetic: Rename ws functions for the sake of consistency.
ib
parents: 35680
diff changeset
1094 void wsWindowMove(wsWindow *win, Bool abs, int x, int y)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1095 {
33993
57d711d3dcca Change parameter b of wsMoveWindow().
ib
parents: 33992
diff changeset
1096 if (abs) {
57d711d3dcca Change parameter b of wsMoveWindow().
ib
parents: 33992
diff changeset
1097 win->X = x;
57d711d3dcca Change parameter b of wsMoveWindow().
ib
parents: 33992
diff changeset
1098 win->Y = y;
33995
9c2779f24077 Move common code to new function wsWindowPosition().
ib
parents: 33994
diff changeset
1099 } else
35681
80c5c89f77d6 Cosmetic: Rename ws functions for the sake of consistency.
ib
parents: 35680
diff changeset
1100 wsWindowUpdatePosition(win, x, y, win->Width, win->Height);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1101
35700
7820bad7c1f8 Cosmetic: Rename ws functions for the sake of consistency.
ib
parents: 35699
diff changeset
1102 wsWindowSizeHint(win);
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1103 XMoveWindow(wsDisplay, win->WindowID, win->X, win->Y);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1104 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1105
33998
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1106 /**
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1107 * @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
1108 * 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
1109 *
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1110 * @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
1111 * @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
1112 * @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
1113 * @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
1114 */
35681
80c5c89f77d6 Cosmetic: Rename ws functions for the sake of consistency.
ib
parents: 35680
diff changeset
1115 void wsWindowMoveWithin(wsWindow *win, Bool abs, int x, int y)
33998
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1116 {
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1117 Bool fitting = True;
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1118
35681
80c5c89f77d6 Cosmetic: Rename ws functions for the sake of consistency.
ib
parents: 35680
diff changeset
1119 wsWindowMove(win, abs, x, y);
33998
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1120
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1121 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
1122 fitting = False;
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1123 win->X = wsMaxX - win->Width;
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 if (win->X < 0)
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1126 win->X = 0;
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1127 }
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1128
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1129 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
1130 fitting = False;
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1131 win->Y = wsMaxY - win->Height;
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1132
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1133 if (win->Y < 0)
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1134 win->Y = 0;
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
ca20e4098c1d Preserve x and y position of a double-size window if possible.
ib
parents: 33996
diff changeset
1137 if (!fitting)
35681
80c5c89f77d6 Cosmetic: Rename ws functions for the sake of consistency.
ib
parents: 35680
diff changeset
1138 wsWindowMove(win, True, win->X, win->Y);
33998
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
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1141 // ----------------------------------------------------------------------------------------------
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1142 // Resize window to sx, sy.
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1143 // ----------------------------------------------------------------------------------------------
35682
fcb8f12cefa7 Cosmetic: Change parameter names.
ib
parents: 35681
diff changeset
1144 void wsWindowResize(wsWindow *win, int w, int h)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1145 {
35682
fcb8f12cefa7 Cosmetic: Change parameter names.
ib
parents: 35681
diff changeset
1146 win->Width = w;
fcb8f12cefa7 Cosmetic: Change parameter names.
ib
parents: 35681
diff changeset
1147 win->Height = h;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1148
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1149 if (vo_wm_type == 0)
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1150 XUnmapWindow(wsDisplay, win->WindowID);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1151
35700
7820bad7c1f8 Cosmetic: Rename ws functions for the sake of consistency.
ib
parents: 35699
diff changeset
1152 wsWindowSizeHint(win);
35682
fcb8f12cefa7 Cosmetic: Change parameter names.
ib
parents: 35681
diff changeset
1153 XResizeWindow(wsDisplay, win->WindowID, w, h);
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1154
34124
7777da659cbe Fix bug in wsResizeWindow().
ib
parents: 34083
diff changeset
1155 if (vo_wm_type == 0)
7777da659cbe Fix bug in wsResizeWindow().
ib
parents: 34083
diff changeset
1156 XMapWindow(wsDisplay, win->WindowID);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1157 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1158
35355
c8478a499a17 Pass big parameter by reference rather than by value.
ib
parents: 35354
diff changeset
1159 /**
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1160 * @brief Switch window fullscreen state.
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1161 *
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1162 * Switch normal window to fullscreen and fullscreen window to normal.
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1163 *
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1164 * @param win pointer to a ws window structure
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1165 */
35681
80c5c89f77d6 Cosmetic: Rename ws functions for the sake of consistency.
ib
parents: 35680
diff changeset
1166 void wsWindowFullscreen(wsWindow *win)
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1167 {
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1168 if (win->isFullScreen) {
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1169 if (vo_fs_type & vo_wm_FULLSCREEN)
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1170 /* window manager supports EWMH */
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1171 vo_x11_ewmh_fullscreen(win->WindowID, _NET_WM_STATE_REMOVE);
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1172 else {
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1173 win->X = win->OldX;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1174 win->Y = win->OldY;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1175 win->Width = win->OldWidth;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1176 win->Height = win->OldHeight;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1177 }
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1178
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1179 win->isFullScreen = False;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1180 } else {
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1181 if (vo_fs_type & vo_wm_FULLSCREEN)
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1182 /* window manager supports EWMH */
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1183 vo_x11_ewmh_fullscreen(win->WindowID, _NET_WM_STATE_ADD);
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1184 else {
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1185 win->OldX = win->X;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1186 win->OldY = win->Y;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1187 win->OldWidth = win->Width;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1188 win->OldHeight = win->Height;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1189 }
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1190
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1191 win->isFullScreen = True;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1192
35681
80c5c89f77d6 Cosmetic: Rename ws functions for the sake of consistency.
ib
parents: 35680
diff changeset
1193 wsWindowUpdateXinerama(win);
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1194 }
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1195
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1196 /* unknown window manager and obsolete option -fsmode used */
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1197 if (vo_wm_type == 0 && !(vo_fsmode & 16)) {
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1198 XUnmapWindow(wsDisplay, win->WindowID); // required for MWM
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1199 XWithdrawWindow(wsDisplay, win->WindowID, wsScreen);
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1200 }
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1201
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1202 /* restore window if window manager doesn't support EWMH */
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1203 if (!(vo_fs_type & vo_wm_FULLSCREEN)) {
35697
13f8a04c5524 Remove redundant parameter from function.
ib
parents: 35696
diff changeset
1204 if (!win->isFullScreen)
13f8a04c5524 Remove redundant parameter from function.
ib
parents: 35696
diff changeset
1205 wsWindowDecoration(win);
13f8a04c5524 Remove redundant parameter from function.
ib
parents: 35696
diff changeset
1206
35700
7820bad7c1f8 Cosmetic: Rename ws functions for the sake of consistency.
ib
parents: 35699
diff changeset
1207 wsWindowSizeHint(win);
35681
80c5c89f77d6 Cosmetic: Rename ws functions for the sake of consistency.
ib
parents: 35680
diff changeset
1208 wsWindowLayer(wsDisplay, win->WindowID, win->isFullScreen);
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1209 XMoveResizeWindow(wsDisplay, win->WindowID, win->X, win->Y, win->Width, win->Height);
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1210 }
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1211
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1212 /* some window managers lose ontop after fullscreen */
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1213 if (!win->isFullScreen & vo_ontop)
35681
80c5c89f77d6 Cosmetic: Rename ws functions for the sake of consistency.
ib
parents: 35680
diff changeset
1214 wsWindowLayer(wsDisplay, win->WindowID, vo_ontop);
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1215
35681
80c5c89f77d6 Cosmetic: Rename ws functions for the sake of consistency.
ib
parents: 35680
diff changeset
1216 wsWindowRaiseTop(wsDisplay, win->WindowID);
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1217 }
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1218
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1219 /**
35355
c8478a499a17 Pass big parameter by reference rather than by value.
ib
parents: 35354
diff changeset
1220 * @brief Iconify a window.
c8478a499a17 Pass big parameter by reference rather than by value.
ib
parents: 35354
diff changeset
1221 *
c8478a499a17 Pass big parameter by reference rather than by value.
ib
parents: 35354
diff changeset
1222 * @param win pointer to a ws window structure
c8478a499a17 Pass big parameter by reference rather than by value.
ib
parents: 35354
diff changeset
1223 */
35681
80c5c89f77d6 Cosmetic: Rename ws functions for the sake of consistency.
ib
parents: 35680
diff changeset
1224 void wsWindowIconify(wsWindow *win)
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1225 {
35355
c8478a499a17 Pass big parameter by reference rather than by value.
ib
parents: 35354
diff changeset
1226 XIconifyWindow(wsDisplay, win->WindowID, 0);
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1227 }
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1228
35682
fcb8f12cefa7 Cosmetic: Change parameter names.
ib
parents: 35681
diff changeset
1229 void wsWindowVisibility(wsWindow *win, int vis)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1230 {
35682
fcb8f12cefa7 Cosmetic: Change parameter names.
ib
parents: 35681
diff changeset
1231 switch (vis) {
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1232 case wsShowWindow:
35541
ded4a8c2aa70 Cosmetic: Add some blank lines.
ib
parents: 35499
diff changeset
1233
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1234 XMapRaised(wsDisplay, win->WindowID);
35541
ded4a8c2aa70 Cosmetic: Add some blank lines.
ib
parents: 35499
diff changeset
1235
33952
75b858ef3666 Keep track of fullscreen state.
ib
parents: 33937
diff changeset
1236 if (vo_fs_type & vo_wm_FULLSCREEN)
75b858ef3666 Keep track of fullscreen state.
ib
parents: 33937
diff changeset
1237 win->isFullScreen = False;
35541
ded4a8c2aa70 Cosmetic: Add some blank lines.
ib
parents: 35499
diff changeset
1238
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1239 break;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1240
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1241 case wsHideWindow:
35541
ded4a8c2aa70 Cosmetic: Add some blank lines.
ib
parents: 35499
diff changeset
1242
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1243 XUnmapWindow(wsDisplay, win->WindowID);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1244 break;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1245 }
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1246 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1247
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1248 /**
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1249 * @brief Map a window and raise it to the top.
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1250 *
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1251 * @param display display
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1252 * @param Win window
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1253 */
35681
80c5c89f77d6 Cosmetic: Rename ws functions for the sake of consistency.
ib
parents: 35680
diff changeset
1254 void wsWindowRaiseTop(Display *display, Window Win)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1255 {
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1256 XMapRaised(display, Win); // NOTE TO MYSELF: is that really enough?
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1257 XRaiseWindow(display, Win); // NOTE TO MYSELF: is that really enough?
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1258 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1259
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1260 // ----------------------------------------------------------------------------------------------
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1261 // Move window to selected layer
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1262 // ----------------------------------------------------------------------------------------------
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1263
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1264 /**
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1265 * @brief Set the layer for a window.
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1266 *
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1267 * @param display display
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1268 * @param Win window
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1269 * @param fullscreen whether to set fullscreen or normal layer
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1270 */
35681
80c5c89f77d6 Cosmetic: Rename ws functions for the sake of consistency.
ib
parents: 35680
diff changeset
1271 void wsWindowLayer(Display *display, Window Win, Bool fullscreen)
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1272 {
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1273 vo_x11_setlayer(display, Win, fullscreen);
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1274 }
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1275
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1276 // ----------------------------------------------------------------------------------------------
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1277 // Redraw screen.
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1278 // ----------------------------------------------------------------------------------------------
35681
80c5c89f77d6 Cosmetic: Rename ws functions for the sake of consistency.
ib
parents: 35680
diff changeset
1279 void wsWindowRedraw(wsWindow *win)
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1280 {
35760
1aedd24c032b Cosmetic: Rename ReDraw DrawHandler.
ib
parents: 35759
diff changeset
1281 if (win->DrawHandler) {
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1282 win->State = wsWindowExpose;
35760
1aedd24c032b Cosmetic: Rename ReDraw DrawHandler.
ib
parents: 35759
diff changeset
1283 win->DrawHandler();
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1284 }
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1285 }
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1286
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1287 // ----------------------------------------------------------------------------------------------
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1288 // Put 'Image' to window.
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1289 // ----------------------------------------------------------------------------------------------
35682
fcb8f12cefa7 Cosmetic: Change parameter names.
ib
parents: 35681
diff changeset
1290 void wsImageCreate(wsWindow *win, int w, int h)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1291 {
34465
3c1a1038bfc7 Properly handle the lack of XShm.
ib
parents: 34463
diff changeset
1292 #ifdef HAVE_SHM
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1293 if (wsUseXShm) {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1294 win->xImage = XShmCreateImage(wsDisplay, win->VisualInfo.visual,
35682
fcb8f12cefa7 Cosmetic: Change parameter names.
ib
parents: 35681
diff changeset
1295 win->VisualInfo.depth, ZPixmap, NULL, &win->Shminfo, w, h);
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1296
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1297 if (win->xImage == NULL) {
36694
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36299
diff changeset
1298 mp_msg(MSGT_GPLAYER, MSGL_FATAL, MSGTR_GUI_MSG_XSharedMemoryError);
33768
cee9987bc81d Remove guiExit().
ib
parents: 33550
diff changeset
1299 mplayer(MPLAYER_EXIT_GUI, EXIT_ERROR, 0);
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1300 }
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1301
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1302 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
1303
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1304 if (win->Shminfo.shmid < 0) {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1305 XDestroyImage(win->xImage);
36694
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36299
diff changeset
1306 mp_msg(MSGT_GPLAYER, MSGL_FATAL, MSGTR_GUI_MSG_XSharedMemoryError);
33768
cee9987bc81d Remove guiExit().
ib
parents: 33550
diff changeset
1307 mplayer(MPLAYER_EXIT_GUI, EXIT_ERROR, 0);
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1308 }
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1309
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1310 win->Shminfo.shmaddr = (char *)shmat(win->Shminfo.shmid, 0, 0);
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 if (win->Shminfo.shmaddr == ((char *)-1)) {
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1313 XDestroyImage(win->xImage);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1314
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1315 if (win->Shminfo.shmaddr != ((char *)-1))
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1316 shmdt(win->Shminfo.shmaddr);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1317
36694
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36299
diff changeset
1318 mp_msg(MSGT_GPLAYER, MSGL_FATAL, MSGTR_GUI_MSG_XSharedMemoryError);
33768
cee9987bc81d Remove guiExit().
ib
parents: 33550
diff changeset
1319 mplayer(MPLAYER_EXIT_GUI, EXIT_ERROR, 0);
33539
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
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1322 win->xImage->data = win->Shminfo.shmaddr;
35493
411875efca3f Introduce boolean symbolic constants.
ib
parents: 35492
diff changeset
1323 win->Shminfo.readOnly = False;
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1324 XShmAttach(wsDisplay, &win->Shminfo);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1325 shmctl(win->Shminfo.shmid, IPC_RMID, 0);
34465
3c1a1038bfc7 Properly handle the lack of XShm.
ib
parents: 34463
diff changeset
1326 } else
3c1a1038bfc7 Properly handle the lack of XShm.
ib
parents: 34463
diff changeset
1327 #endif
3c1a1038bfc7 Properly handle the lack of XShm.
ib
parents: 34463
diff changeset
1328 {
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1329 win->xImage = XCreateImage(wsDisplay, win->VisualInfo.visual, win->VisualInfo.depth,
35682
fcb8f12cefa7 Cosmetic: Change parameter names.
ib
parents: 35681
diff changeset
1330 ZPixmap, 0, 0, w, h,
35676
b0ad675bd3b7 Cosmetic: Rename DepthOnScreen ScreenDepth.
ib
parents: 35674
diff changeset
1331 (wsScreenDepth == 3) ? 32 : wsScreenDepth,
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1332 0);
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1333
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1334 if ((win->xImage->data = malloc(win->xImage->bytes_per_line * win->xImage->height)) == NULL) {
36694
eed2fb870f43 Rename symbolic constants of GUI help message texts.
ib
parents: 36299
diff changeset
1335 mp_msg(MSGT_GPLAYER, MSGL_FATAL, MSGTR_GUI_MSG_MemoryErrorImage);
33768
cee9987bc81d Remove guiExit().
ib
parents: 33550
diff changeset
1336 mplayer(MPLAYER_EXIT_GUI, EXIT_ERROR, 0);
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1337 }
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1338 }
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1339
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1340 win->ImageData = (unsigned char *)win->xImage->data;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1341 win->ImageDataw = (unsigned short int *)win->xImage->data;
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1342 win->ImageDatadw = (unsigned int *)win->xImage->data;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1343 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1344
35681
80c5c89f77d6 Cosmetic: Rename ws functions for the sake of consistency.
ib
parents: 35680
diff changeset
1345 void wsImageDestroy(wsWindow *win)
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1346 {
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1347 if (win->xImage) {
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1348 XDestroyImage(win->xImage);
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1349
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1350 #ifdef HAVE_SHM
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1351 if (wsUseXShm) {
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1352 XShmDetach(wsDisplay, &win->Shminfo);
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1353 shmdt(win->Shminfo.shmaddr);
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1354 }
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1355 #endif
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1356 }
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1357
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1358 win->xImage = NULL;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1359 }
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1360
35744
bfe51acc36fb Cosmetic: Rename wsImageConvert() wsImageRender().
ib
parents: 35738
diff changeset
1361 void wsImageRender(wsWindow *win, unsigned char *img)
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1362 {
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1363 static struct SwsContext *sws_ctx;
35682
fcb8f12cefa7 Cosmetic: Change parameter names.
ib
parents: 35681
diff changeset
1364 const uint8_t *src[4] = { img, NULL, NULL, NULL };
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1365 int src_stride[4] = { 4 * win->xImage->width, 0, 0, 0 };
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1366 uint8_t *dst[4] = { win->ImageData, NULL, NULL, NULL };
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1367 int dst_stride[4];
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1368 int i;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1369
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1370 sws_ctx = sws_getCachedContext(sws_ctx, win->xImage->width, win->xImage->height, PIX_FMT_RGB32,
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1371 win->xImage->width, win->xImage->height, out_pix_fmt,
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1372 SWS_POINT, NULL, NULL, NULL);
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1373 av_image_fill_linesizes(dst_stride, out_pix_fmt, win->xImage->width);
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1374 sws_scale(sws_ctx, src, src_stride, 0, win->xImage->height, dst, dst_stride);
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1375
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1376 if (!wsNonNativeOrder)
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1377 return;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1378
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1379 switch (win->xImage->bits_per_pixel) {
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1380 case 32:
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1381 {
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1382 uint32_t *d = (uint32_t *)win->ImageData;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1383
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1384 for (i = 0; i < win->xImage->width * win->xImage->height; i++)
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1385 d[i] = bswap_32(d[i]);
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1386
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1387 break;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1388 }
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1389
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1390 case 16:
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1391 case 15:
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1392 {
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1393 uint16_t *d = (uint16_t *)win->ImageData;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1394
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1395 for (i = 0; i < win->xImage->width * win->xImage->height; i++)
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1396 d[i] = bswap_16(d[i]);
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1397
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1398 break;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1399 }
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1400 }
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1401 }
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1402
35681
80c5c89f77d6 Cosmetic: Rename ws functions for the sake of consistency.
ib
parents: 35680
diff changeset
1403 void wsImageDraw(wsWindow *win)
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1404 {
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1405 #ifdef HAVE_SHM
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1406 if (wsUseXShm) {
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1407 XShmPutImage(wsDisplay, win->WindowID, win->wGC, win->xImage,
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1408 0, 0,
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1409 (win->Width - win->xImage->width) / 2, (win->Height - win->xImage->height) / 2,
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1410 win->xImage->width, win->xImage->height, 0);
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1411 } else
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1412 #endif
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1413 {
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1414 XPutImage(wsDisplay, win->WindowID, win->wGC, win->xImage,
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1415 0, 0,
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1416 (win->Width - win->xImage->width) / 2, (win->Height - win->xImage->height) / 2,
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1417 win->xImage->width, win->xImage->height);
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1418 }
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1419 }
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1420
35682
fcb8f12cefa7 Cosmetic: Change parameter names.
ib
parents: 35681
diff changeset
1421 void wsImageResize(wsWindow *win, int w, int h)
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1422 {
35681
80c5c89f77d6 Cosmetic: Rename ws functions for the sake of consistency.
ib
parents: 35680
diff changeset
1423 wsImageDestroy(win);
35682
fcb8f12cefa7 Cosmetic: Change parameter names.
ib
parents: 35681
diff changeset
1424 wsImageCreate(win, w, h);
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1425 }
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1426
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1427 // ----------------------------------------------------------------------------------------------
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1428 // Show / hide mouse cursor.
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1429 // ----------------------------------------------------------------------------------------------
35682
fcb8f12cefa7 Cosmetic: Change parameter names.
ib
parents: 35681
diff changeset
1430 void wsMouseVisibility(wsWindow *win, int vis)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1431 {
35682
fcb8f12cefa7 Cosmetic: Change parameter names.
ib
parents: 35681
diff changeset
1432 switch (vis) {
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1433 case wsShowMouseCursor:
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1434
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1435 if (win->wsCursor != None) {
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1436 XFreeCursor(wsDisplay, win->wsCursor);
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1437 win->wsCursor = None;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1438 }
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1439
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1440 XDefineCursor(wsDisplay, win->WindowID, 0);
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1441 break;
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1442
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1443 case wsHideMouseCursor:
33539
5bdc088113f7 Cosmetic: Format to MPlayer coding style.
ib
parents: 33529
diff changeset
1444
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1445 win->wsCursor = XCreatePixmapCursor(wsDisplay, win->wsCursorPixmap, win->wsCursorPixmap, &win->wsColor, &win->wsColor, 0, 0);
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1446 XDefineCursor(wsDisplay, win->WindowID, win->wsCursor);
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1447 break;
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1448 }
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1449 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1450
35639
2e7f2ecaaf0b Don't define a function by a macro.
ib
parents: 35637
diff changeset
1451 /**
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1452 * @brief Handle automatic hiding of the cursor.
35639
2e7f2ecaaf0b Don't define a function by a macro.
ib
parents: 35637
diff changeset
1453 */
35681
80c5c89f77d6 Cosmetic: Rename ws functions for the sake of consistency.
ib
parents: 35680
diff changeset
1454 void wsMouseAutohide(void)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1455 {
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1456 if (mouse_win && (GetTimerMS() - mouse_time >= MOUSEHIDE_DELAY)) {
35681
80c5c89f77d6 Cosmetic: Rename ws functions for the sake of consistency.
ib
parents: 35680
diff changeset
1457 wsMouseVisibility(mouse_win, wsHideMouseCursor);
35672
144d3a71db7d Cosmetic: Relocate some functions.
ib
parents: 35670
diff changeset
1458 mouse_win = NULL;
33542
107084241b00 Add support for _NET_WM_ICON
ib
parents: 33541
diff changeset
1459 }
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1460 }