Mercurial > mplayer.hg
annotate libvo/vo_xvidix.c @ 36815:4c44fdd14655
Fix issue with Win32 GUI default preferences.
Don't (mis)use option variables to set defaults (and then don't use
them when actually setting the defaults in the preferences dialog).
Set them directly (and correctly) instead, and use proper symbolic
constants.
author | ib |
---|---|
date | Sun, 23 Feb 2014 19:33:46 +0000 (2014-02-23) |
parents | 598ef7d90b78 |
children |
rev | line source |
---|---|
4123 | 1 /* |
28446
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28051
diff
changeset
|
2 * VIDIX-accelerated overlay in an X window |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28051
diff
changeset
|
3 * |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28051
diff
changeset
|
4 * copyright (C) Alex Beregszaszi & Zoltan Ponekker & Nick Kurshev |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28051
diff
changeset
|
5 * |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28051
diff
changeset
|
6 * WS window manager by Pontscho/Fresh! |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28051
diff
changeset
|
7 * |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28051
diff
changeset
|
8 * based on vo_gl.c and vo_vesa.c and vo_xmga.c (.so mastah! ;)) |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28051
diff
changeset
|
9 * |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28051
diff
changeset
|
10 * This file is part of MPlayer. |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28051
diff
changeset
|
11 * |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28051
diff
changeset
|
12 * MPlayer is free software; you can redistribute it and/or modify |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28051
diff
changeset
|
13 * it under the terms of the GNU General Public License as published by |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28051
diff
changeset
|
14 * the Free Software Foundation; either version 2 of the License, or |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28051
diff
changeset
|
15 * (at your option) any later version. |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28051
diff
changeset
|
16 * |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28051
diff
changeset
|
17 * MPlayer is distributed in the hope that it will be useful, |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28051
diff
changeset
|
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28051
diff
changeset
|
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28051
diff
changeset
|
20 * GNU General Public License for more details. |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28051
diff
changeset
|
21 * |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28051
diff
changeset
|
22 * You should have received a copy of the GNU General Public License along |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28051
diff
changeset
|
23 * with MPlayer; if not, write to the Free Software Foundation, Inc., |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28051
diff
changeset
|
24 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
28051
diff
changeset
|
25 */ |
4123 | 26 |
27 #include <stdio.h> | |
28 #include <stdlib.h> | |
29 #include <string.h> | |
30 #include <math.h> | |
31 #include <errno.h> | |
32 | |
33 #include "config.h" | |
34 #include "video_out.h" | |
36517 | 35 #define NO_DRAW_FRAME |
4123 | 36 #include "video_out_internal.h" |
37 | |
38 #include <X11/Xlib.h> | |
39 #include <X11/Xutil.h> | |
40 //#include <X11/keysym.h> | |
41 | |
27377
d58d06eafe83
Change a bunch of X11-specific preprocessor directives.
diego
parents:
27343
diff
changeset
|
42 #ifdef CONFIG_XINERAMA |
4241
817742049fa0
updated based vo_xmga, using colorkey, working with gui, fixed xinerama and window moving/resizing
alex
parents:
4198
diff
changeset
|
43 #include <X11/extensions/Xinerama.h> |
817742049fa0
updated based vo_xmga, using colorkey, working with gui, fixed xinerama and window moving/resizing
alex
parents:
4198
diff
changeset
|
44 #endif |
817742049fa0
updated based vo_xmga, using colorkey, working with gui, fixed xinerama and window moving/resizing
alex
parents:
4198
diff
changeset
|
45 |
4123 | 46 #include "x11_common.h" |
47 #include "aspect.h" | |
48 #include "mp_msg.h" | |
49 | |
50 #include "vosub_vidix.h" | |
27079 | 51 #include "vidix/vidix.h" |
4123 | 52 |
25216 | 53 static const vo_info_t info = { |
4123 | 54 "X11 (VIDIX)", |
55 "xvidix", | |
56 "Alex Beregszaszi", | |
57 "" | |
58 }; | |
59 | |
8148
5b39e79af5fe
removed get_info, using the same sheme as in libmpcodecs instead
alex
parents:
8123
diff
changeset
|
60 LIBVO_EXTERN(xvidix) |
32336
09dd92639e7b
Remove UNUSED macros used to shut up unused function parameter warnings.
diego
parents:
31315
diff
changeset
|
61 |
4123 | 62 /* X11 related variables */ |
4363 | 63 /* Colorkey handling */ |
10988 | 64 static int colorkey; |
4363 | 65 static vidix_grkey_t gr_key; |
4241
817742049fa0
updated based vo_xmga, using colorkey, working with gui, fixed xinerama and window moving/resizing
alex
parents:
4198
diff
changeset
|
66 |
4363 | 67 /* VIDIX related */ |
68 static char *vidix_name; | |
4123 | 69 |
70 /* Image parameters */ | |
71 static uint32_t image_width; | |
72 static uint32_t image_height; | |
73 static uint32_t image_format; | |
74 | |
75 /* Window parameters */ | |
6299
4446af3c1a75
set_window() fixing detection of changement of the window position
attila
parents:
6095
diff
changeset
|
76 static uint32_t window_x, window_y; |
4123 | 77 static uint32_t window_width, window_height; |
78 | |
4363 | 79 /* used by XGetGeometry & XTranslateCoordinates for moving/resizing window */ |
4123 | 80 static uint32_t drwX, drwY, drwWidth, drwHeight, drwBorderWidth, |
4981 | 81 drwDepth, drwcX, drwcY, dwidth, dheight; |
4123 | 82 |
28051 | 83 void set_video_eq(int cap); |
6755 | 84 |
8991 | 85 |
7124
eca7dbad0166
finally removed query_vaa, bes_da and vo_tune_info - the obsoleted libvo api
alex
parents:
6953
diff
changeset
|
86 static void set_window(int force_update) |
4123 | 87 { |
6095 | 88 Window mRoot; |
12582 | 89 |
90 if (WinID) | |
91 { | |
92 XGetGeometry(mDisplay, vo_window, &mRoot, &drwX, &drwY, &drwWidth, | |
93 &drwHeight, &drwBorderWidth, &drwDepth); | |
94 drwX = drwY = 0; | |
6307 | 95 |
12582 | 96 XTranslateCoordinates(mDisplay, vo_window, mRoot, 0, 0, |
97 &drwcX, &drwcY, &mRoot); | |
98 aspect(&dwidth, &dheight, A_NOZOOM); | |
99 if (!vo_fs) | |
100 mp_msg(MSGT_VO, MSGL_V, | |
101 "[xvidix] dcx: %d dcy: %d dx: %d dy: %d dw: %d dh: %d\n", | |
102 drwcX, drwcY, drwX, drwY, drwWidth, drwHeight); | |
4123 | 103 |
12582 | 104 /* following stuff copied from vo_xmga.c */ |
105 } else | |
106 { | |
107 aspect(&dwidth, &dheight, A_NOZOOM); | |
108 drwcX = drwX = vo_dx; | |
109 drwcY = drwY = vo_dy; | |
110 drwWidth = vo_dwidth; | |
111 drwHeight = vo_dheight; | |
112 } | |
6043 | 113 |
4981 | 114 if (vo_fs) |
4241
817742049fa0
updated based vo_xmga, using colorkey, working with gui, fixed xinerama and window moving/resizing
alex
parents:
4198
diff
changeset
|
115 { |
12582 | 116 aspect(&dwidth, &dheight, A_ZOOM); |
117 drwX = | |
118 (vo_screenwidth - | |
119 (dwidth > vo_screenwidth ? vo_screenwidth : dwidth)) / 2; | |
120 drwcX = drwX; | |
121 drwY = | |
122 (vo_screenheight - | |
123 (dheight > vo_screenheight ? vo_screenheight : dheight)) / 2; | |
124 drwcY = drwY; | |
125 drwWidth = (dwidth > vo_screenwidth ? vo_screenwidth : dwidth); | |
126 drwHeight = | |
127 (dheight > vo_screenheight ? vo_screenheight : dheight); | |
128 mp_msg(MSGT_VO, MSGL_V, | |
129 "[xvidix-fs] dcx: %d dcy: %d dx: %d dy: %d dw: %d dh: %d\n", | |
130 drwcX, drwcY, drwX, drwY, drwWidth, drwHeight); | |
4241
817742049fa0
updated based vo_xmga, using colorkey, working with gui, fixed xinerama and window moving/resizing
alex
parents:
4198
diff
changeset
|
131 } |
817742049fa0
updated based vo_xmga, using colorkey, working with gui, fixed xinerama and window moving/resizing
alex
parents:
4198
diff
changeset
|
132 |
12582 | 133 vo_dwidth = drwWidth; |
134 vo_dheight = drwHeight; | |
6307 | 135 |
27748 | 136 update_xinerama_info(); |
137 drwcX -= xinerama_x; | |
138 drwcY -= xinerama_y; | |
4241
817742049fa0
updated based vo_xmga, using colorkey, working with gui, fixed xinerama and window moving/resizing
alex
parents:
4198
diff
changeset
|
139 |
12582 | 140 if (vo_panscan > 0.0f && vo_fs) |
141 { | |
142 drwcX -= vo_panscan_x >> 1; | |
143 drwcY -= vo_panscan_y >> 1; | |
144 drwX -= vo_panscan_x >> 1; | |
145 drwY -= vo_panscan_y >> 1; | |
146 drwWidth += vo_panscan_x; | |
147 drwHeight += vo_panscan_y; | |
148 } | |
6307 | 149 |
4241
817742049fa0
updated based vo_xmga, using colorkey, working with gui, fixed xinerama and window moving/resizing
alex
parents:
4198
diff
changeset
|
150 /* set new values in VIDIX */ |
6299
4446af3c1a75
set_window() fixing detection of changement of the window position
attila
parents:
6095
diff
changeset
|
151 if (force_update || (window_x != drwcX) || (window_y != drwcY) || |
12582 | 152 (window_width != drwWidth) || (window_height != drwHeight)) |
4123 | 153 { |
12582 | 154 // do a backup of window coordinates |
155 window_x = drwcX; | |
156 window_y = drwcY; | |
157 vo_dx = drwcX; | |
158 vo_dy = drwcY; | |
159 window_width = drwWidth; | |
160 window_height = drwHeight; | |
4198
7e2bf04c9a7c
added vidix_start() and vidix_stop() for better runtime-resize support ;)
alex
parents:
4194
diff
changeset
|
161 |
12582 | 162 /* FIXME: implement runtime resize/move if possible, this way is very ugly! */ |
163 vidix_stop(); | |
164 if (vidix_init(image_width, image_height, vo_dx, vo_dy, | |
165 window_width, window_height, image_format, | |
166 vo_depthonscreen, vo_screenwidth, | |
167 vo_screenheight) != 0) | |
4123 | 168 { |
12582 | 169 mp_msg(MSGT_VO, MSGL_FATAL, |
170 "Can't initialize VIDIX driver: %s\n", strerror(errno)); | |
171 abort(); | |
172 } | |
173 vidix_start(); | |
4123 | 174 } |
12582 | 175 |
176 mp_msg(MSGT_VO, MSGL_V, | |
177 "[xvidix] window properties: pos: %dx%d, size: %dx%d\n", vo_dx, | |
178 vo_dy, window_width, window_height); | |
4123 | 179 |
4271
2c7e6c87fb6f
reworked, picture moves when window moved, fullscreen working with gui, fixed some annoying bugs
alex
parents:
4255
diff
changeset
|
180 /* mDrawColorKey: */ |
2c7e6c87fb6f
reworked, picture moves when window moved, fullscreen working with gui, fixed some annoying bugs
alex
parents:
4255
diff
changeset
|
181 |
2c7e6c87fb6f
reworked, picture moves when window moved, fullscreen working with gui, fixed some annoying bugs
alex
parents:
4255
diff
changeset
|
182 /* fill drawable with specified color */ |
11216 | 183 if (!(vo_colorkey & 0xff000000)) |
11158
85f4534d1edb
Colorkeying can be disabled. Fbdev, svga and vesa vidix colorkeying support
alex
parents:
10988
diff
changeset
|
184 { |
12582 | 185 XSetBackground(mDisplay, vo_gc, 0L); |
186 XClearWindow(mDisplay, vo_window); | |
187 XSetForeground(mDisplay, vo_gc, colorkey); | |
188 XFillRectangle(mDisplay, vo_window, vo_gc, drwX, drwY, drwWidth, | |
189 (vo_fs ? drwHeight - 1 : drwHeight)); | |
11158
85f4534d1edb
Colorkeying can be disabled. Fbdev, svga and vesa vidix colorkeying support
alex
parents:
10988
diff
changeset
|
190 } |
4271
2c7e6c87fb6f
reworked, picture moves when window moved, fullscreen working with gui, fixed some annoying bugs
alex
parents:
4255
diff
changeset
|
191 /* flush, update drawable */ |
2c7e6c87fb6f
reworked, picture moves when window moved, fullscreen working with gui, fixed some annoying bugs
alex
parents:
4255
diff
changeset
|
192 XFlush(mDisplay); |
2c7e6c87fb6f
reworked, picture moves when window moved, fullscreen working with gui, fixed some annoying bugs
alex
parents:
4255
diff
changeset
|
193 |
4123 | 194 return; |
195 } | |
196 | |
197 /* connect to server, create and map window, | |
198 * allocate colors and (shared) memory | |
199 */ | |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15540
diff
changeset
|
200 static int config(uint32_t width, uint32_t height, uint32_t d_width, |
12582 | 201 uint32_t d_height, uint32_t flags, char *title, |
202 uint32_t format) | |
4123 | 203 { |
204 XVisualInfo vinfo; | |
12582 | 205 |
8123
9fc45fe0d444
*HUGE* set of compiler warning fixes, unused variables removal
arpi
parents:
7931
diff
changeset
|
206 // XSizeHints hint; |
4123 | 207 XSetWindowAttributes xswa; |
208 unsigned long xswamask; | |
209 XWindowAttributes attribs; | |
10988 | 210 int window_depth, r, g, b; |
4125 | 211 |
5738 | 212 title = "MPlayer VIDIX X11 Overlay"; |
4123 | 213 |
214 image_height = height; | |
215 image_width = width; | |
216 image_format = format; | |
4459 | 217 |
4241
817742049fa0
updated based vo_xmga, using colorkey, working with gui, fixed xinerama and window moving/resizing
alex
parents:
4198
diff
changeset
|
218 window_width = d_width; |
817742049fa0
updated based vo_xmga, using colorkey, working with gui, fixed xinerama and window moving/resizing
alex
parents:
4198
diff
changeset
|
219 window_height = d_height; |
817742049fa0
updated based vo_xmga, using colorkey, working with gui, fixed xinerama and window moving/resizing
alex
parents:
4198
diff
changeset
|
220 |
6009 | 221 // vo_fs = flags&0x01; |
222 // if (vo_fs) | |
223 // { vo_old_width=d_width; vo_old_height=d_height; } | |
4123 | 224 |
10988 | 225 r = (vo_colorkey & 0x00ff0000) >> 16; |
226 g = (vo_colorkey & 0x0000ff00) >> 8; | |
227 b = vo_colorkey & 0x000000ff; | |
12582 | 228 switch (vo_depthonscreen) |
4241
817742049fa0
updated based vo_xmga, using colorkey, working with gui, fixed xinerama and window moving/resizing
alex
parents:
4198
diff
changeset
|
229 { |
12582 | 230 case 32: |
231 colorkey = vo_colorkey; | |
232 break; | |
233 case 24: | |
234 colorkey = vo_colorkey & 0x00ffffff; | |
235 break; | |
236 case 16: | |
237 colorkey = ((r >> 3) << 11) | ((g >> 2) << 5) | (b >> 3); | |
238 break; | |
239 case 15: | |
240 colorkey = ((r >> 3) << 10) | ((g >> 3) << 5) | (b >> 3); | |
241 break; | |
242 default: | |
243 mp_msg(MSGT_VO, MSGL_ERR, | |
244 "Sorry, this (%d) color depth is not supported\n", | |
245 vo_depthonscreen); | |
4241
817742049fa0
updated based vo_xmga, using colorkey, working with gui, fixed xinerama and window moving/resizing
alex
parents:
4198
diff
changeset
|
246 } |
13946 | 247 mp_msg(MSGT_VO, MSGL_V, "Using colorkey: %x\n", colorkey); |
4123 | 248 |
15212
05aa13cdf92f
replace VO and VF numeric flags with #defined identifiers
henry
parents:
13946
diff
changeset
|
249 if ((flags & VOFLAG_FULLSCREEN) || (flags & VOFLAG_SWSCALE)) |
12582 | 250 aspect(&d_width, &d_height, A_ZOOM); |
251 dwidth = d_width; | |
252 dheight = d_height; | |
253 /* Make the window */ | |
254 XGetWindowAttributes(mDisplay, DefaultRootWindow(mDisplay), | |
255 &attribs); | |
4123 | 256 |
12582 | 257 /* from vo_x11 */ |
258 window_depth = attribs.depth; | |
259 if ((window_depth != 15) && (window_depth != 16) | |
260 && (window_depth != 24) && (window_depth != 32)) | |
261 window_depth = 24; | |
262 XMatchVisualInfo(mDisplay, mScreen, window_depth, TrueColor, | |
263 &vinfo); | |
4123 | 264 |
12582 | 265 xswa.background_pixel = BlackPixel(mDisplay, mScreen); |
266 xswa.border_pixel = 0; | |
267 xswa.colormap = | |
268 XCreateColormap(mDisplay, RootWindow(mDisplay, mScreen), | |
269 vinfo.visual, AllocNone); | |
27927
6f199f065e15
Factor common code like -wid handling, vo_gc creation etc. out into
reimar
parents:
27903
diff
changeset
|
270 xswamask = CWBackPixel | CWBorderPixel | CWColormap; |
4123 | 271 |
23655
00aa61cde84a
Make X11 window creation and (with -fixed-vo) management simpler and more
reimar
parents:
23077
diff
changeset
|
272 vo_x11_create_vo_window(&vinfo, vo_dx, vo_dy, |
00aa61cde84a
Make X11 window creation and (with -fixed-vo) management simpler and more
reimar
parents:
23077
diff
changeset
|
273 window_width, window_height, flags, |
00aa61cde84a
Make X11 window creation and (with -fixed-vo) management simpler and more
reimar
parents:
23077
diff
changeset
|
274 CopyFromParent, "xvidix", title); |
00aa61cde84a
Make X11 window creation and (with -fixed-vo) management simpler and more
reimar
parents:
23077
diff
changeset
|
275 XChangeWindowAttributes(mDisplay, vo_window, xswamask, &xswa); |
12582 | 276 |
15212
05aa13cdf92f
replace VO and VF numeric flags with #defined identifiers
henry
parents:
13946
diff
changeset
|
277 if ((!WinID) && (flags & VOFLAG_FULLSCREEN)) |
12582 | 278 { |
279 vo_dx = 0; | |
280 vo_dy = 0; | |
281 vo_dwidth = vo_screenwidth; | |
282 vo_dheight = vo_screenheight; | |
283 vo_fs = 1; | |
284 } | |
4271
2c7e6c87fb6f
reworked, picture moves when window moved, fullscreen working with gui, fixed some annoying bugs
alex
parents:
4255
diff
changeset
|
285 |
4255 | 286 if (vidix_grkey_support()) |
287 { | |
12582 | 288 vidix_grkey_get(&gr_key); |
289 gr_key.key_op = KEYS_PUT; | |
290 if (!(vo_colorkey & 0xff000000)) | |
291 { | |
292 gr_key.ckey.op = CKEY_TRUE; | |
293 gr_key.ckey.red = r; | |
294 gr_key.ckey.green = g; | |
295 gr_key.ckey.blue = b; | |
296 } else | |
297 gr_key.ckey.op = CKEY_FALSE; | |
298 vidix_grkey_set(&gr_key); | |
4255 | 299 } |
4241
817742049fa0
updated based vo_xmga, using colorkey, working with gui, fixed xinerama and window moving/resizing
alex
parents:
4198
diff
changeset
|
300 |
7124
eca7dbad0166
finally removed query_vaa, bes_da and vo_tune_info - the obsoleted libvo api
alex
parents:
6953
diff
changeset
|
301 set_window(1); |
6755 | 302 |
4805 | 303 XSync(mDisplay, False); |
4123 | 304 |
6382
86d5fc5b54e2
fix panscan support and add Jesper Svennevid's <mplayer@svennevid.net> patch
pontscho
parents:
6311
diff
changeset
|
305 panscan_calc(); |
86d5fc5b54e2
fix panscan support and add Jesper Svennevid's <mplayer@svennevid.net> patch
pontscho
parents:
6311
diff
changeset
|
306 |
26755
46f0b4d34fa1
cosmetics: Remove useless parentheses from from return statements.
diego
parents:
25216
diff
changeset
|
307 return 0; |
4123 | 308 } |
309 | |
310 static void check_events(void) | |
311 { | |
312 const int event = vo_x11_check_events(mDisplay); | |
4125 | 313 |
32371 | 314 if (event & (VO_EVENT_RESIZE | VO_EVENT_MOVE | VO_EVENT_EXPOSE)) |
12582 | 315 set_window(0); |
4241
817742049fa0
updated based vo_xmga, using colorkey, working with gui, fixed xinerama and window moving/resizing
alex
parents:
4198
diff
changeset
|
316 |
4125 | 317 return; |
4123 | 318 } |
319 | |
36517 | 320 /* draw_osd, flip_page, draw_slice should be |
4123 | 321 overwritten with vidix functions (vosub_vidix.c) */ |
322 static void draw_osd(void) | |
323 { | |
12582 | 324 mp_msg(MSGT_VO, MSGL_FATAL, |
325 "[xvidix] error: didn't used vidix draw_osd!\n"); | |
4123 | 326 return; |
327 } | |
328 | |
329 static void flip_page(void) | |
330 { | |
12582 | 331 mp_msg(MSGT_VO, MSGL_FATAL, |
332 "[xvidix] error: didn't used vidix flip_page!\n"); | |
4123 | 333 return; |
334 } | |
335 | |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15540
diff
changeset
|
336 static int draw_slice(uint8_t * src[], int stride[], |
12582 | 337 int w, int h, int x, int y) |
4123 | 338 { |
12582 | 339 mp_msg(MSGT_VO, MSGL_FATAL, |
340 "[xvidix] error: didn't used vidix draw_slice!\n"); | |
26755
46f0b4d34fa1
cosmetics: Remove useless parentheses from from return statements.
diego
parents:
25216
diff
changeset
|
341 return -1; |
4123 | 342 } |
343 | |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15540
diff
changeset
|
344 static int query_format(uint32_t format) |
4123 | 345 { |
26755
46f0b4d34fa1
cosmetics: Remove useless parentheses from from return statements.
diego
parents:
25216
diff
changeset
|
346 return vidix_query_fourcc(format); |
4123 | 347 } |
348 | |
349 static void uninit(void) | |
350 { | |
12582 | 351 if (!vo_config_count) |
352 return; | |
4241
817742049fa0
updated based vo_xmga, using colorkey, working with gui, fixed xinerama and window moving/resizing
alex
parents:
4198
diff
changeset
|
353 vidix_term(); |
12582 | 354 |
32537
8fa2f43cb760
Remove most of the NULL pointer check before free all over the code
cboesch
parents:
32371
diff
changeset
|
355 free(vidix_name); |
8fa2f43cb760
Remove most of the NULL pointer check before free all over the code
cboesch
parents:
32371
diff
changeset
|
356 vidix_name = NULL; |
4441
90814d64a840
removed obosolete Terminate_Display_Process. using vo_x11_uninit. support UYVY format
alex
parents:
4434
diff
changeset
|
357 |
6095 | 358 vo_x11_uninit(); |
4271
2c7e6c87fb6f
reworked, picture moves when window moved, fullscreen working with gui, fixed some annoying bugs
alex
parents:
4255
diff
changeset
|
359 } |
4352 | 360 |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15540
diff
changeset
|
361 static int preinit(const char *arg) |
4352 | 362 { |
6016 | 363 |
4363 | 364 if (arg) |
365 vidix_name = strdup(arg); | |
366 else | |
367 { | |
12582 | 368 mp_msg(MSGT_VO, MSGL_INFO, |
369 "No vidix driver name provided, probing available ones (-v option for details)!\n"); | |
370 vidix_name = NULL; | |
4363 | 371 } |
372 | |
12582 | 373 if (!vo_init()) |
26755
46f0b4d34fa1
cosmetics: Remove useless parentheses from from return statements.
diego
parents:
25216
diff
changeset
|
374 return -1; |
7777 | 375 |
4363 | 376 if (vidix_preinit(vidix_name, &video_out_xvidix) != 0) |
26755
46f0b4d34fa1
cosmetics: Remove useless parentheses from from return statements.
diego
parents:
25216
diff
changeset
|
377 return 1; |
4363 | 378 |
26755
46f0b4d34fa1
cosmetics: Remove useless parentheses from from return statements.
diego
parents:
25216
diff
changeset
|
379 return 0; |
4352 | 380 } |
381 | |
33305
ddb45e9443ec
Remove the variable arguments from the libvo control() functions.
iive
parents:
33301
diff
changeset
|
382 static int control(uint32_t request, void *data) |
4352 | 383 { |
12582 | 384 switch (request) |
385 { | |
386 case VOCTRL_QUERY_FORMAT: | |
387 return query_format(*((uint32_t *) data)); | |
388 case VOCTRL_GUISUPPORT: | |
389 return VO_TRUE; | |
390 case VOCTRL_GET_PANSCAN: | |
391 if (!vo_config_count || !vo_fs) | |
392 return VO_FALSE; | |
393 return VO_TRUE; | |
394 case VOCTRL_ONTOP: | |
395 vo_x11_ontop(); | |
396 return VO_TRUE; | |
397 case VOCTRL_FULLSCREEN: | |
398 vo_x11_fullscreen(); | |
36641 | 399 /* Fallthrough to reconfigure panscan */ |
12582 | 400 case VOCTRL_SET_PANSCAN: |
401 if (vo_fs && (vo_panscan != vo_panscan_amount)) | |
402 { | |
403 panscan_calc(); | |
404 set_window(0); | |
405 } | |
406 return VO_TRUE; | |
22232 | 407 case VOCTRL_UPDATE_SCREENINFO: |
408 aspect_save_screenres(vo_screenwidth, vo_screenheight); | |
409 return VO_TRUE; | |
410 | |
12582 | 411 } |
412 return vidix_control(request, data); | |
6531 | 413 // return VO_NOTIMPL; |
4352 | 414 } |