Mercurial > mplayer.hg
annotate libvo/vo_xvidix.c @ 36779:f5320e43d458
Simplify code.
Use a variable and cast once.
author | ib |
---|---|
date | Mon, 17 Feb 2014 14:33:03 +0000 |
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 } |