annotate libvo/vo_xv.c @ 37158:08bbd1e9036d

vd_ffmpeg: Rewrite ticket reference in comment Omit the issue tracking software's name. Despite the migration from Bugzilla to Trac we were able to keep the ticket numbers.
author al
date Fri, 15 Aug 2014 22:27:52 +0000
parents e788bcd9d49b
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
28446
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28250
diff changeset
1 /*
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28250
diff changeset
2 * X11 Xv interface
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28250
diff changeset
3 *
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28250
diff changeset
4 * This file is part of MPlayer.
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28250
diff changeset
5 *
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28250
diff changeset
6 * MPlayer is free software; you can redistribute it and/or modify
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28250
diff changeset
7 * it under the terms of the GNU General Public License as published by
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28250
diff changeset
8 * the Free Software Foundation; either version 2 of the License, or
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28250
diff changeset
9 * (at your option) any later version.
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28250
diff changeset
10 *
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28250
diff changeset
11 * MPlayer is distributed in the hope that it will be useful,
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28250
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28250
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28250
diff changeset
14 * GNU General Public License for more details.
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28250
diff changeset
15 *
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28250
diff changeset
16 * You should have received a copy of the GNU General Public License along
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28250
diff changeset
17 * with MPlayer; if not, write to the Free Software Foundation, Inc.,
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28250
diff changeset
18 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 28250
diff changeset
19 */
676
428755f858f7 multi buffering added (modify NUM_BUFFERS in the source)
arpi_esp
parents: 616
diff changeset
20
1265
f1f35276f635 switching double buffering at runtime with -double
arpi
parents: 1186
diff changeset
21 // Number of buffers _FOR_DOUBLEBUFFERING_MODE_
f1f35276f635 switching double buffering at runtime with -double
arpi
parents: 1186
diff changeset
22 // Use option -double to enable double buffering! (default: single buffer)
6758
ecc71f27bfd7 DR1 IP/IPB supoprt (I/P only with -double) -- OSD *must be* disabled! :)
arpi
parents: 6755
diff changeset
23 #define NUM_BUFFERS 3
ecc71f27bfd7 DR1 IP/IPB supoprt (I/P only with -double) -- OSD *must be* disabled! :)
arpi
parents: 6755
diff changeset
24
ecc71f27bfd7 DR1 IP/IPB supoprt (I/P only with -double) -- OSD *must be* disabled! :)
arpi
parents: 6755
diff changeset
25 /*
ecc71f27bfd7 DR1 IP/IPB supoprt (I/P only with -double) -- OSD *must be* disabled! :)
arpi
parents: 6755
diff changeset
26 Buffer allocation:
ecc71f27bfd7 DR1 IP/IPB supoprt (I/P only with -double) -- OSD *must be* disabled! :)
arpi
parents: 6755
diff changeset
27
ecc71f27bfd7 DR1 IP/IPB supoprt (I/P only with -double) -- OSD *must be* disabled! :)
arpi
parents: 6755
diff changeset
28 -nodr:
ecc71f27bfd7 DR1 IP/IPB supoprt (I/P only with -double) -- OSD *must be* disabled! :)
arpi
parents: 6755
diff changeset
29 1: TEMP
ecc71f27bfd7 DR1 IP/IPB supoprt (I/P only with -double) -- OSD *must be* disabled! :)
arpi
parents: 6755
diff changeset
30 2: 2*TEMP
ecc71f27bfd7 DR1 IP/IPB supoprt (I/P only with -double) -- OSD *must be* disabled! :)
arpi
parents: 6755
diff changeset
31
ecc71f27bfd7 DR1 IP/IPB supoprt (I/P only with -double) -- OSD *must be* disabled! :)
arpi
parents: 6755
diff changeset
32 -dr:
ecc71f27bfd7 DR1 IP/IPB supoprt (I/P only with -double) -- OSD *must be* disabled! :)
arpi
parents: 6755
diff changeset
33 1: TEMP
ecc71f27bfd7 DR1 IP/IPB supoprt (I/P only with -double) -- OSD *must be* disabled! :)
arpi
parents: 6755
diff changeset
34 3: 2*STATIC+TEMP
ecc71f27bfd7 DR1 IP/IPB supoprt (I/P only with -double) -- OSD *must be* disabled! :)
arpi
parents: 6755
diff changeset
35 */
ecc71f27bfd7 DR1 IP/IPB supoprt (I/P only with -double) -- OSD *must be* disabled! :)
arpi
parents: 6755
diff changeset
36
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
37 #include <stdio.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
38 #include <stdlib.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
39 #include <string.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
40
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
41 #include "config.h"
5935
5074aa8fae5a printf to mp_msg
albeu
parents: 5835
diff changeset
42 #include "mp_msg.h"
16958
3ff863e54b93 Test if source image dimensions are too big.
al
parents: 16171
diff changeset
43 #include "help_mp.h"
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
44 #include "video_out.h"
36517
5d3f93051de9 Remove empty draw_slice and draw_frame stubs.
reimar
parents: 35227
diff changeset
45 #define NO_DRAW_FRAME
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
46 #include "video_out_internal.h"
33301
899d817e56fc Implement control() VOCTRL_SET/GET_EQUALIZER using a vf_equalize struct,
iive
parents: 32467
diff changeset
47 #include "libmpcodecs/vf.h"
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
48
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
49
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
50 #include <X11/Xlib.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
51 #include <X11/Xutil.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
52 #include <errno.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
53
31
1fc618eba830 added check_events() interface
arpi_esp
parents: 1
diff changeset
54 #include "x11_common.h"
1fc618eba830 added check_events() interface
arpi_esp
parents: 1
diff changeset
55
354
7de9e48c83a5 memcpy() moved mmx.h -> fastmemcpy.h
arpi_esp
parents: 350
diff changeset
56 #include "fastmemcpy.h"
32467
fbe5c829c69b Move libvo/sub.[ch] from libvo to sub.
cigaes
parents: 31315
diff changeset
57 #include "sub/sub.h"
2054
a74a82334f60 Use aspect()
atmos4
parents: 2031
diff changeset
58 #include "aspect.h"
350
601822cc8c52 applied MMX2 memcpy() patch by Nick Kurshev
arpi_esp
parents: 326
diff changeset
59
14742
76d461a061df Unified colorkey code for vo xv and vo xvmc.
al
parents: 13953
diff changeset
60 #include "subopt-helper.h"
76d461a061df Unified colorkey code for vo xv and vo xvmc.
al
parents: 13953
diff changeset
61
24133
d43cda21236d Watch X11 fd in main input select() if using vo xv
uau
parents: 23656
diff changeset
62 #include "input/input.h"
d43cda21236d Watch X11 fd in main input select() if using vo xv
uau
parents: 23656
diff changeset
63
25963
4f59356268a0 Revert accidentally committed line of r25994.
cehoyos
parents: 25962
diff changeset
64 #include "libavutil/common.h"
22461
c54ad95f852a Factor out some duplicated code in vo_xv and vo_xvmc
reimar
parents: 22232
diff changeset
65
25216
3aee342be929 Make vo info structs const
reimar
parents: 24239
diff changeset
66 static const vo_info_t info = {
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
67 "X11/Xv",
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
68 "xv",
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
69 "Gerd Knorr <kraxel@goldbach.in-berlin.de> and others",
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
70 ""
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
71 };
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
72
25220
c9e9ac2008c2 Mark the vo_functions_t definitions as const where possible.
reimar
parents: 25216
diff changeset
73 const LIBVO_EXTERN(xv)
6719
5291d74a60c9 xv support under cygwin - patch by Sycotic Smith <sycotic at linuxmail.org>
alex
parents: 6417
diff changeset
74 #ifdef HAVE_SHM
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
75 #include <sys/ipc.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
76 #include <sys/shm.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
77 #include <X11/extensions/XShm.h>
6416
2e323cde8ad1 Allow building vo_xv without SHM support
atmos4
parents: 6382
diff changeset
78
2e323cde8ad1 Allow building vo_xv without SHM support
atmos4
parents: 6382
diff changeset
79 static XShmSegmentInfo Shminfo[NUM_BUFFERS];
6417
44bca09c1edd 100l accidently removed a line too much (Shmem_Flag)
atmos4
parents: 6416
diff changeset
80 static int Shmem_Flag;
6416
2e323cde8ad1 Allow building vo_xv without SHM support
atmos4
parents: 6382
diff changeset
81 #endif
2e323cde8ad1 Allow building vo_xv without SHM support
atmos4
parents: 6382
diff changeset
82
10855
eeae5c1b8fff fix some warnings (define order)
pl
parents: 10839
diff changeset
83 // Note: depends on the inclusion of X11/extensions/XShm.h
eeae5c1b8fff fix some warnings (define order)
pl
parents: 10839
diff changeset
84 #include <X11/extensions/Xv.h>
eeae5c1b8fff fix some warnings (define order)
pl
parents: 10839
diff changeset
85 #include <X11/extensions/Xvlib.h>
eeae5c1b8fff fix some warnings (define order)
pl
parents: 10839
diff changeset
86
eeae5c1b8fff fix some warnings (define order)
pl
parents: 10839
diff changeset
87 // FIXME: dynamically allocate this stuff
eeae5c1b8fff fix some warnings (define order)
pl
parents: 10839
diff changeset
88 static void allocate_xvimage(int);
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
89 static unsigned int ver, rel, req, ev, err;
14742
76d461a061df Unified colorkey code for vo xv and vo xvmc.
al
parents: 13953
diff changeset
90 static unsigned int formats, adaptors, xv_format;
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
91 static XvAdaptorInfo *ai = NULL;
13953
3dbebe82fc37 3 memory leaks fixed
iive
parents: 13914
diff changeset
92 static XvImageFormatValues *fo=NULL;
10855
eeae5c1b8fff fix some warnings (define order)
pl
parents: 10839
diff changeset
93
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
94 static int current_buf = 0;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
95 static int current_ip_buf = 0;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
96 static int num_buffers = 1; // default
14782
b0b668d69632 Don't change buffers when paused and redrawing.
al
parents: 14742
diff changeset
97 static int visible_buf = -1; // -1 means: no buffer was drawn yet
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
98 static XvImage *xvimage[NUM_BUFFERS];
10855
eeae5c1b8fff fix some warnings (define order)
pl
parents: 10839
diff changeset
99
eeae5c1b8fff fix some warnings (define order)
pl
parents: 10839
diff changeset
100
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
101 static uint32_t image_width;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
102 static uint32_t image_height;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
103 static uint32_t image_format;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
104
10757
3aea64e0d6d9 Avoid flickering during resizes. Keep video contents even when paused. Fix by Tomas Simonaitis <haden@homelan.lt>
mosu
parents: 10359
diff changeset
105 static int int_pause;
3aea64e0d6d9 Avoid flickering during resizes. Keep video contents even when paused. Fix by Tomas Simonaitis <haden@homelan.lt>
mosu
parents: 10359
diff changeset
106
28511
db19e31a2c7c Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents: 28446
diff changeset
107 static struct vo_rect src_rect;
db19e31a2c7c Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents: 28446
diff changeset
108 static struct vo_rect dst_rect;
16958
3ff863e54b93 Test if source image dimensions are too big.
al
parents: 16171
diff changeset
109 static uint32_t max_width = 0, max_height = 0; // zero means: not set
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
110
35227
6b08a8332561 Fix variable declarations I stupidly forgot to make "static".
reimar
parents: 35050
diff changeset
111 static vo_draw_alpha_func draw_alpha_func;
1647
22480104ddfd added draw_alpha_XXXX functions, draw_alpha_func<=correct one in init
atlka
parents: 1501
diff changeset
112
31231
77bdb012aaae Factor out some common code and ensure we will not try to draw OSD
reimar
parents: 30122
diff changeset
113 static void fixup_osd_position(int *x0, int *y0, int *w, int *h)
77bdb012aaae Factor out some common code and ensure we will not try to draw OSD
reimar
parents: 30122
diff changeset
114 {
77bdb012aaae Factor out some common code and ensure we will not try to draw OSD
reimar
parents: 30122
diff changeset
115 *x0 += image_width * (vo_panscan_x >> 1) / (vo_dwidth + vo_panscan_x);
77bdb012aaae Factor out some common code and ensure we will not try to draw OSD
reimar
parents: 30122
diff changeset
116 *w = av_clip(*w, 0, image_width);
77bdb012aaae Factor out some common code and ensure we will not try to draw OSD
reimar
parents: 30122
diff changeset
117 *h = av_clip(*h, 0, image_height);
77bdb012aaae Factor out some common code and ensure we will not try to draw OSD
reimar
parents: 30122
diff changeset
118 *x0 = FFMIN(*x0, image_width - *w);
77bdb012aaae Factor out some common code and ensure we will not try to draw OSD
reimar
parents: 30122
diff changeset
119 *y0 = FFMIN(*y0, image_height - *h);
77bdb012aaae Factor out some common code and ensure we will not try to draw OSD
reimar
parents: 30122
diff changeset
120 }
77bdb012aaae Factor out some common code and ensure we will not try to draw OSD
reimar
parents: 30122
diff changeset
121
35050
b291f44d864a Avoid some code duplication related to drawing the OSD.
reimar
parents: 33434
diff changeset
122 static void draw_alpha(int x0, int y0, int w, int h,
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
123 unsigned char *src, unsigned char *srca,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
124 int stride)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
125 {
35050
b291f44d864a Avoid some code duplication related to drawing the OSD.
reimar
parents: 33434
diff changeset
126 if (!draw_alpha_func) return;
31231
77bdb012aaae Factor out some common code and ensure we will not try to draw OSD
reimar
parents: 30122
diff changeset
127 fixup_osd_position(&x0, &y0, &w, &h);
35050
b291f44d864a Avoid some code duplication related to drawing the OSD.
reimar
parents: 33434
diff changeset
128 x0 *= pixel_stride(xv_format);
b291f44d864a Avoid some code duplication related to drawing the OSD.
reimar
parents: 33434
diff changeset
129 draw_alpha_func(w, h, src, srca, stride,
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
130 xvimage[current_buf]->data +
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
131 xvimage[current_buf]->offsets[0] +
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
132 xvimage[current_buf]->pitches[0] * y0 + x0,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
133 xvimage[current_buf]->pitches[0]);
1647
22480104ddfd added draw_alpha_XXXX functions, draw_alpha_func<=correct one in init
atlka
parents: 1501
diff changeset
134 }
22480104ddfd added draw_alpha_XXXX functions, draw_alpha_func<=correct one in init
atlka
parents: 1501
diff changeset
135
6786
b16cb6cbff5a eq reworked
alex
parents: 6781
diff changeset
136
7757
03c707b25fdc -fixed-vo support, based on patch by .so :)
arpi
parents: 7694
diff changeset
137 static void deallocate_xvimage(int foo);
03c707b25fdc -fixed-vo support, based on patch by .so :)
arpi
parents: 7694
diff changeset
138
28511
db19e31a2c7c Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents: 28446
diff changeset
139 static void resize(void)
db19e31a2c7c Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents: 28446
diff changeset
140 {
28598
4172d83194f2 Extend calc_src_dst_rects to also calculate the border values needed for
reimar
parents: 28511
diff changeset
141 calc_src_dst_rects(image_width, image_height, &src_rect, &dst_rect, NULL, NULL);
33434
229982126641 Fix xv/xvmc window background clearing.
iive
parents: 33420
diff changeset
142 // vo_x11_clearwindow_part(mDisplay, vo_window, dst_rect.width, dst_rect.height, vo_fs);
28511
db19e31a2c7c Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents: 28446
diff changeset
143 vo_xv_draw_colorkey(dst_rect.left, dst_rect.top, dst_rect.width, dst_rect.height);
db19e31a2c7c Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents: 28446
diff changeset
144 }
db19e31a2c7c Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents: 28446
diff changeset
145
182
80a7b40f201a *** empty log message ***
pontscho
parents: 31
diff changeset
146 /*
80a7b40f201a *** empty log message ***
pontscho
parents: 31
diff changeset
147 * connect to server, create and map window,
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
148 * allocate colors and (shared) memory
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
149 */
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15826
diff changeset
150 static int config(uint32_t width, uint32_t height, uint32_t d_width,
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
151 uint32_t d_height, uint32_t flags, char *title,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
152 uint32_t format)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
153 {
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
154 XVisualInfo vinfo;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
155 XSetWindowAttributes xswa;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
156 XWindowAttributes attribs;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
157 unsigned long xswamask;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
158 int depth;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
159
27377
d58d06eafe83 Change a bunch of X11-specific preprocessor directives.
diego
parents: 27343
diff changeset
160 #ifdef CONFIG_XF86VM
27952
94bab93a8d17 Simplify handling of VOFLAG_MODESWITCHNG, merge assignment and declaration
reimar
parents: 27951
diff changeset
161 int vm = flags & VOFLAG_MODESWITCHING;
4426
1ceadec3ea67 using the common -vm code, patch by Santi B«±jar <tiarda@yahoo.es>
arpi
parents: 4406
diff changeset
162 #endif
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
163
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
164 image_height = height;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
165 image_width = width;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
166 image_format = format;
2249
48f0ac1e9d13 Update to new (cleaner, more bugfree, better) aspect api. vo_gl vo_gl2 and vo_xmga are untested!
atmos4
parents: 2055
diff changeset
167
16958
3ff863e54b93 Test if source image dimensions are too big.
al
parents: 16171
diff changeset
168 if ((max_width != 0 && max_height != 0) &&
3ff863e54b93 Test if source image dimensions are too big.
al
parents: 16171
diff changeset
169 (image_width > max_width || image_height > max_height))
3ff863e54b93 Test if source image dimensions are too big.
al
parents: 16171
diff changeset
170 {
20765
dd41a1fc9000 MSGTRs for libvo/aspect.c and libvo/vo_xv.c
kraymer
parents: 18715
diff changeset
171 mp_msg( MSGT_VO, MSGL_ERR, MSGTR_VO_XV_ImagedimTooHigh,
16958
3ff863e54b93 Test if source image dimensions are too big.
al
parents: 16171
diff changeset
172 image_width, image_height, max_width, max_height);
3ff863e54b93 Test if source image dimensions are too big.
al
parents: 16171
diff changeset
173 return -1;
3ff863e54b93 Test if source image dimensions are too big.
al
parents: 16171
diff changeset
174 }
3ff863e54b93 Test if source image dimensions are too big.
al
parents: 16171
diff changeset
175
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
176 int_pause = 0;
14782
b0b668d69632 Don't change buffers when paused and redrawing.
al
parents: 14742
diff changeset
177 visible_buf = -1;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
178
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
179 num_buffers =
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
180 vo_doublebuffering ? (vo_directrendering ? NUM_BUFFERS : 2) : 1;
5509
1e90dd889c34 initialization moved to preinit(), query_format now really checks for supported formats
arpi
parents: 5466
diff changeset
181
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
182 /* check image formats */
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
183 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
184 unsigned int i;
10855
eeae5c1b8fff fix some warnings (define order)
pl
parents: 10839
diff changeset
185
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
186 xv_format = 0;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
187 for (i = 0; i < formats; i++)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
188 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
189 mp_msg(MSGT_VO, MSGL_V,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
190 "Xvideo image format: 0x%x (%4.4s) %s\n", fo[i].id,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
191 (char *) &fo[i].id,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
192 (fo[i].format == XvPacked) ? "packed" : "planar");
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
193 if (fo[i].id == format)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
194 xv_format = fo[i].id;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
195 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
196 if (!xv_format)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
197 return -1;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
198 }
2249
48f0ac1e9d13 Update to new (cleaner, more bugfree, better) aspect api. vo_gl vo_gl2 and vo_xmga are untested!
atmos4
parents: 2055
diff changeset
199
723
c3e0bdb64027 add gui support
pontscho
parents: 676
diff changeset
200 {
27377
d58d06eafe83 Change a bunch of X11-specific preprocessor directives.
diego
parents: 27343
diff changeset
201 #ifdef CONFIG_XF86VM
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
202 if (vm)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
203 {
27890
a4e2700e9381 Simplify vo_vm_switch and vo_vm_close, everyone was using the (almost) same
reimar
parents: 27889
diff changeset
204 vo_vm_switch();
27895
69b4b8d73b5e Remove a nonsensical "else" for the video mode switching case.
reimar
parents: 27892
diff changeset
205 }
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
206 #endif
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
207 XGetWindowAttributes(mDisplay, DefaultRootWindow(mDisplay),
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
208 &attribs);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
209 depth = attribs.depth;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
210 if (depth != 15 && depth != 16 && depth != 24 && depth != 32)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
211 depth = 24;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
212 XMatchVisualInfo(mDisplay, mScreen, depth, TrueColor, &vinfo);
723
c3e0bdb64027 add gui support
pontscho
parents: 676
diff changeset
213
33434
229982126641 Fix xv/xvmc window background clearing.
iive
parents: 33420
diff changeset
214 xswa.border_pixel = 0;
229982126641 Fix xv/xvmc window background clearing.
iive
parents: 33420
diff changeset
215 xswamask = CWBorderPixel;
14742
76d461a061df Unified colorkey code for vo xv and vo xvmc.
al
parents: 13953
diff changeset
216 if (xv_ck_info.method == CK_METHOD_BACKGROUND)
76d461a061df Unified colorkey code for vo xv and vo xvmc.
al
parents: 13953
diff changeset
217 {
76d461a061df Unified colorkey code for vo xv and vo xvmc.
al
parents: 13953
diff changeset
218 xswa.background_pixel = xv_colorkey;
33434
229982126641 Fix xv/xvmc window background clearing.
iive
parents: 33420
diff changeset
219 xswamask |= CWBackPixel;
14742
76d461a061df Unified colorkey code for vo xv and vo xvmc.
al
parents: 13953
diff changeset
220 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
221
27891
8742bcad99b5 Use vo_dwidth/vo_dheight for creating the windows instead of d_width/d_height.
reimar
parents: 27890
diff changeset
222 vo_x11_create_vo_window(&vinfo, vo_dx, vo_dy, vo_dwidth, vo_dheight,
23655
00aa61cde84a Make X11 window creation and (with -fixed-vo) management simpler and more
reimar
parents: 23077
diff changeset
223 flags, CopyFromParent, "xv", title);
00aa61cde84a Make X11 window creation and (with -fixed-vo) management simpler and more
reimar
parents: 23077
diff changeset
224 XChangeWindowAttributes(mDisplay, vo_window, xswamask, &xswa);
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
225
27377
d58d06eafe83 Change a bunch of X11-specific preprocessor directives.
diego
parents: 27343
diff changeset
226 #ifdef CONFIG_XF86VM
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
227 if (vm)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
228 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
229 /* Grab the mouse pointer in our window */
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
230 if (vo_grabpointer)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
231 XGrabPointer(mDisplay, vo_window, True, 0,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
232 GrabModeAsync, GrabModeAsync,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
233 vo_window, None, CurrentTime);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
234 XSetInputFocus(mDisplay, vo_window, RevertToNone, CurrentTime);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
235 }
4426
1ceadec3ea67 using the common -vm code, patch by Santi B«±jar <tiarda@yahoo.es>
arpi
parents: 4406
diff changeset
236 #endif
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
237 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
238
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
239 mp_msg(MSGT_VO, MSGL_V, "using Xvideo port %d for hw scaling\n",
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
240 xv_port);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
241
35050
b291f44d864a Avoid some code duplication related to drawing the OSD.
reimar
parents: 33434
diff changeset
242 draw_alpha_func = vo_get_draw_alpha(xv_format);
182
80a7b40f201a *** empty log message ***
pontscho
parents: 31
diff changeset
243
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
244 if (vo_config_count)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
245 for (current_buf = 0; current_buf < num_buffers; ++current_buf)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
246 deallocate_xvimage(current_buf);
7757
03c707b25fdc -fixed-vo support, based on patch by .so :)
arpi
parents: 7694
diff changeset
247
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
248 for (current_buf = 0; current_buf < num_buffers; ++current_buf)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
249 allocate_xvimage(current_buf);
676
428755f858f7 multi buffering added (modify NUM_BUFFERS in the source)
arpi_esp
parents: 616
diff changeset
250
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
251 current_buf = 0;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
252 current_ip_buf = 0;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
253
28511
db19e31a2c7c Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents: 28446
diff changeset
254 resize();
5945
f9fe22a52e80 fix aspect ratio handling
pontscho
parents: 5935
diff changeset
255
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
256 return 0;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
257 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
258
182
80a7b40f201a *** empty log message ***
pontscho
parents: 31
diff changeset
259 static void allocate_xvimage(int foo)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
260 {
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
261 /*
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
262 * allocate XvImages. FIXME: no error checking, without
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
263 * mit-shm this will bomb... trzing to fix ::atmos
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
264 */
6416
2e323cde8ad1 Allow building vo_xv without SHM support
atmos4
parents: 6382
diff changeset
265 #ifdef HAVE_SHM
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
266 if (mLocalDisplay && XShmQueryExtension(mDisplay))
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
267 Shmem_Flag = 1;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
268 else
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
269 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
270 Shmem_Flag = 0;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
271 mp_msg(MSGT_VO, MSGL_INFO,
20765
dd41a1fc9000 MSGTRs for libvo/aspect.c and libvo/vo_xv.c
kraymer
parents: 18715
diff changeset
272 MSGTR_LIBVO_XV_SharedMemoryNotSupported);
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
273 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
274 if (Shmem_Flag)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
275 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
276 xvimage[foo] =
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
277 (XvImage *) XvShmCreateImage(mDisplay, xv_port, xv_format,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
278 NULL, image_width, image_height,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
279 &Shminfo[foo]);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
280
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
281 Shminfo[foo].shmid =
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
282 shmget(IPC_PRIVATE, xvimage[foo]->data_size, IPC_CREAT | 0777);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
283 Shminfo[foo].shmaddr = (char *) shmat(Shminfo[foo].shmid, 0, 0);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
284 Shminfo[foo].readOnly = False;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
285
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
286 xvimage[foo]->data = Shminfo[foo].shmaddr;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
287 XShmAttach(mDisplay, &Shminfo[foo]);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
288 XSync(mDisplay, False);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
289 shmctl(Shminfo[foo].shmid, IPC_RMID, 0);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
290 } else
6416
2e323cde8ad1 Allow building vo_xv without SHM support
atmos4
parents: 6382
diff changeset
291 #endif
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
292 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
293 xvimage[foo] =
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
294 (XvImage *) XvCreateImage(mDisplay, xv_port, xv_format, NULL,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
295 image_width, image_height);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
296 xvimage[foo]->data = malloc(xvimage[foo]->data_size);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
297 XSync(mDisplay, False);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
298 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
299 memset(xvimage[foo]->data, 128, xvimage[foo]->data_size);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
300 return;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
301 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
302
1794
fa2b852f494d add dealloc func
pontscho
parents: 1775
diff changeset
303 static void deallocate_xvimage(int foo)
fa2b852f494d add dealloc func
pontscho
parents: 1775
diff changeset
304 {
6416
2e323cde8ad1 Allow building vo_xv without SHM support
atmos4
parents: 6382
diff changeset
305 #ifdef HAVE_SHM
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
306 if (Shmem_Flag)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
307 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
308 XShmDetach(mDisplay, &Shminfo[foo]);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
309 shmdt(Shminfo[foo].shmaddr);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
310 } else
6416
2e323cde8ad1 Allow building vo_xv without SHM support
atmos4
parents: 6382
diff changeset
311 #endif
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
312 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
313 free(xvimage[foo]->data);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
314 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
315 XFree(xvimage[foo]);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
316
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
317 XSync(mDisplay, False);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
318 return;
1794
fa2b852f494d add dealloc func
pontscho
parents: 1775
diff changeset
319 }
fa2b852f494d add dealloc func
pontscho
parents: 1775
diff changeset
320
14782
b0b668d69632 Don't change buffers when paused and redrawing.
al
parents: 14742
diff changeset
321 static inline void put_xvimage( XvImage * xvi )
b0b668d69632 Don't change buffers when paused and redrawing.
al
parents: 14742
diff changeset
322 {
b0b668d69632 Don't change buffers when paused and redrawing.
al
parents: 14742
diff changeset
323 #ifdef HAVE_SHM
b0b668d69632 Don't change buffers when paused and redrawing.
al
parents: 14742
diff changeset
324 if (Shmem_Flag)
b0b668d69632 Don't change buffers when paused and redrawing.
al
parents: 14742
diff changeset
325 {
b0b668d69632 Don't change buffers when paused and redrawing.
al
parents: 14742
diff changeset
326 XvShmPutImage(mDisplay, xv_port, vo_window, vo_gc,
28511
db19e31a2c7c Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents: 28446
diff changeset
327 xvi,
db19e31a2c7c Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents: 28446
diff changeset
328 src_rect.left, src_rect.top, src_rect.width, src_rect.height,
db19e31a2c7c Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents: 28446
diff changeset
329 dst_rect.left, dst_rect.top, dst_rect.width, dst_rect.height,
14782
b0b668d69632 Don't change buffers when paused and redrawing.
al
parents: 14742
diff changeset
330 False);
b0b668d69632 Don't change buffers when paused and redrawing.
al
parents: 14742
diff changeset
331 } else
b0b668d69632 Don't change buffers when paused and redrawing.
al
parents: 14742
diff changeset
332 #endif
b0b668d69632 Don't change buffers when paused and redrawing.
al
parents: 14742
diff changeset
333 {
b0b668d69632 Don't change buffers when paused and redrawing.
al
parents: 14742
diff changeset
334 XvPutImage(mDisplay, xv_port, vo_window, vo_gc,
28511
db19e31a2c7c Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents: 28446
diff changeset
335 xvi,
db19e31a2c7c Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents: 28446
diff changeset
336 src_rect.left, src_rect.top, src_rect.width, src_rect.height,
db19e31a2c7c Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents: 28446
diff changeset
337 dst_rect.left, dst_rect.top, dst_rect.width, dst_rect.height);
14782
b0b668d69632 Don't change buffers when paused and redrawing.
al
parents: 14742
diff changeset
338 }
b0b668d69632 Don't change buffers when paused and redrawing.
al
parents: 14742
diff changeset
339 }
b0b668d69632 Don't change buffers when paused and redrawing.
al
parents: 14742
diff changeset
340
31
1fc618eba830 added check_events() interface
arpi_esp
parents: 1
diff changeset
341 static void check_events(void)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
342 {
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
343 int e = vo_x11_check_events(mDisplay);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
344
14742
76d461a061df Unified colorkey code for vo xv and vo xvmc.
al
parents: 13953
diff changeset
345 if (e & VO_EVENT_EXPOSE || e & VO_EVENT_RESIZE)
76d461a061df Unified colorkey code for vo xv and vo xvmc.
al
parents: 13953
diff changeset
346 {
28511
db19e31a2c7c Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents: 28446
diff changeset
347 resize();
14742
76d461a061df Unified colorkey code for vo xv and vo xvmc.
al
parents: 13953
diff changeset
348 }
76d461a061df Unified colorkey code for vo xv and vo xvmc.
al
parents: 13953
diff changeset
349
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
350 if ((e & VO_EVENT_EXPOSE || e & VO_EVENT_RESIZE) && int_pause)
14782
b0b668d69632 Don't change buffers when paused and redrawing.
al
parents: 14742
diff changeset
351 {
b0b668d69632 Don't change buffers when paused and redrawing.
al
parents: 14742
diff changeset
352 /* did we already draw a buffer */
b0b668d69632 Don't change buffers when paused and redrawing.
al
parents: 14742
diff changeset
353 if ( visible_buf != -1 )
b0b668d69632 Don't change buffers when paused and redrawing.
al
parents: 14742
diff changeset
354 {
b0b668d69632 Don't change buffers when paused and redrawing.
al
parents: 14742
diff changeset
355 /* redraw the last visible buffer */
b0b668d69632 Don't change buffers when paused and redrawing.
al
parents: 14742
diff changeset
356 put_xvimage( xvimage[visible_buf] );
b0b668d69632 Don't change buffers when paused and redrawing.
al
parents: 14742
diff changeset
357 }
b0b668d69632 Don't change buffers when paused and redrawing.
al
parents: 14742
diff changeset
358 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
359 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
360
1501
d40f2b686846 changes according to -utf8 option, draw_osd() function added
atlka
parents: 1265
diff changeset
361 static void draw_osd(void)
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
362 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
363 vo_draw_text(image_width -
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
364 image_width * vo_panscan_x / (vo_dwidth + vo_panscan_x),
35050
b291f44d864a Avoid some code duplication related to drawing the OSD.
reimar
parents: 33434
diff changeset
365 image_height, draw_alpha);
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
366 }
1501
d40f2b686846 changes according to -utf8 option, draw_osd() function added
atlka
parents: 1265
diff changeset
367
182
80a7b40f201a *** empty log message ***
pontscho
parents: 31
diff changeset
368 static void flip_page(void)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
369 {
14782
b0b668d69632 Don't change buffers when paused and redrawing.
al
parents: 14742
diff changeset
370 put_xvimage( xvimage[current_buf] );
6304
ee65527096c2 pan&scan support with -vo xv by ?? <mplayer@svennevid.net>
arpi
parents: 6295
diff changeset
371
14782
b0b668d69632 Don't change buffers when paused and redrawing.
al
parents: 14742
diff changeset
372 /* remember the currently visible buffer */
b0b668d69632 Don't change buffers when paused and redrawing.
al
parents: 14742
diff changeset
373 visible_buf = current_buf;
b0b668d69632 Don't change buffers when paused and redrawing.
al
parents: 14742
diff changeset
374
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
375 if (num_buffers > 1)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
376 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
377 current_buf =
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
378 vo_directrendering ? 0 : ((current_buf + 1) % num_buffers);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
379 XFlush(mDisplay);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
380 } else
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
381 XSync(mDisplay, False);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
382 return;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
383 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
384
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15826
diff changeset
385 static int draw_slice(uint8_t * image[], int stride[], int w, int h,
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
386 int x, int y)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
387 {
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
388 uint8_t *dst;
182
80a7b40f201a *** empty log message ***
pontscho
parents: 31
diff changeset
389
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
390 dst = xvimage[current_buf]->data + xvimage[current_buf]->offsets[0] +
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
391 xvimage[current_buf]->pitches[0] * y + x;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
392 memcpy_pic(dst, image[0], w, h, xvimage[current_buf]->pitches[0],
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
393 stride[0]);
182
80a7b40f201a *** empty log message ***
pontscho
parents: 31
diff changeset
394
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
395 x /= 2;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
396 y /= 2;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
397 w /= 2;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
398 h /= 2;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
399
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
400 dst = xvimage[current_buf]->data + xvimage[current_buf]->offsets[1] +
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
401 xvimage[current_buf]->pitches[1] * y + x;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
402 if (image_format != IMGFMT_YV12)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
403 memcpy_pic(dst, image[1], w, h, xvimage[current_buf]->pitches[1],
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
404 stride[1]);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
405 else
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
406 memcpy_pic(dst, image[2], w, h, xvimage[current_buf]->pitches[1],
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
407 stride[2]);
5316
ce6f625f6682 I420 UV swapping fixed
arpi
parents: 5311
diff changeset
408
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
409 dst = xvimage[current_buf]->data + xvimage[current_buf]->offsets[2] +
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
410 xvimage[current_buf]->pitches[2] * y + x;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
411 if (image_format == IMGFMT_YV12)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
412 memcpy_pic(dst, image[1], w, h, xvimage[current_buf]->pitches[1],
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
413 stride[1]);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
414 else
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
415 memcpy_pic(dst, image[2], w, h, xvimage[current_buf]->pitches[1],
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
416 stride[2]);
6231
3acbdbc8f212 - some cleanup, removed unused code
arpi
parents: 6174
diff changeset
417
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
418 return 0;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
419 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
420
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
421 static uint32_t draw_image(mp_image_t * mpi)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
422 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
423 if (mpi->flags & MP_IMGFLAG_DIRECT)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
424 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
425 // direct rendering:
36762
e788bcd9d49b Avoid many pointer cast warnings.
reimar
parents: 36517
diff changeset
426 current_buf = (intptr_t)mpi->priv; // hack!
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
427 return VO_TRUE;
6760
d4db17f7271a DR1 with IPB fixed
arpi
parents: 6758
diff changeset
428 }
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
429 if (mpi->flags & MP_IMGFLAG_DRAW_CALLBACK)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
430 return VO_TRUE; // done
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
431 if (mpi->flags & MP_IMGFLAG_PLANAR)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
432 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
433 draw_slice(mpi->planes, mpi->stride, mpi->w, mpi->h, 0, 0);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
434 return VO_TRUE;
7684
d4ded16d66dc draw_image()
arpi
parents: 7539
diff changeset
435 }
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
436 if (mpi->flags & MP_IMGFLAG_YUV)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
437 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
438 // packed YUV:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
439 memcpy_pic(xvimage[current_buf]->data +
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
440 xvimage[current_buf]->offsets[0], mpi->planes[0],
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
441 mpi->w * (mpi->bpp / 8), mpi->h,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
442 xvimage[current_buf]->pitches[0], mpi->stride[0]);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
443 return VO_TRUE;
7684
d4ded16d66dc draw_image()
arpi
parents: 7539
diff changeset
444 }
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
445 return VO_FALSE; // not (yet) supported
6760
d4db17f7271a DR1 with IPB fixed
arpi
parents: 6758
diff changeset
446 }
d4db17f7271a DR1 with IPB fixed
arpi
parents: 6758
diff changeset
447
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
448 static uint32_t get_image(mp_image_t * mpi)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
449 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
450 int buf = current_buf; // we shouldn't change current_buf unless we do DR!
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
451
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
452 if (mpi->type == MP_IMGTYPE_STATIC && num_buffers > 1)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
453 return VO_FALSE; // it is not static
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
454 if (mpi->imgfmt != image_format)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
455 return VO_FALSE; // needs conversion :(
4980
0e6e50c02f7b direct rendering support
arpi
parents: 4978
diff changeset
456 // if(mpi->flags&MP_IMGFLAG_READABLE) return VO_FALSE; // slow video ram
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
457 if (mpi->flags & MP_IMGFLAG_READABLE &&
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
458 (mpi->type == MP_IMGTYPE_IPB || mpi->type == MP_IMGTYPE_IP))
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
459 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
460 // reference (I/P) frame of IP or IPB:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
461 if (num_buffers < 2)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
462 return VO_FALSE; // not enough
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
463 current_ip_buf ^= 1;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
464 // for IPB with 2 buffers we can DR only one of the 2 P frames:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
465 if (mpi->type == MP_IMGTYPE_IPB && num_buffers < 3
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
466 && current_ip_buf)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
467 return VO_FALSE;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
468 buf = current_ip_buf;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
469 if (mpi->type == MP_IMGTYPE_IPB)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
470 ++buf; // preserve space for B
6758
ecc71f27bfd7 DR1 IP/IPB supoprt (I/P only with -double) -- OSD *must be* disabled! :)
arpi
parents: 6755
diff changeset
471 }
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
472 if (mpi->height > xvimage[buf]->height)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
473 return VO_FALSE; //buffer to small
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
474 if (mpi->width * (mpi->bpp / 8) > xvimage[buf]->pitches[0])
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
475 return VO_FALSE; //buffer to small
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
476 if ((mpi->flags & (MP_IMGFLAG_ACCEPT_STRIDE | MP_IMGFLAG_ACCEPT_WIDTH))
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
477 || (mpi->width * (mpi->bpp / 8) == xvimage[buf]->pitches[0]))
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
478 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
479 current_buf = buf;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
480 mpi->planes[0] =
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
481 xvimage[current_buf]->data + xvimage[current_buf]->offsets[0];
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
482 mpi->stride[0] = xvimage[current_buf]->pitches[0];
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
483 mpi->width = mpi->stride[0] / (mpi->bpp / 8);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
484 if (mpi->flags & MP_IMGFLAG_PLANAR)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
485 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
486 if (mpi->flags & MP_IMGFLAG_SWAPPED)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
487 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
488 // I420
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
489 mpi->planes[1] =
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
490 xvimage[current_buf]->data +
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
491 xvimage[current_buf]->offsets[1];
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
492 mpi->planes[2] =
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
493 xvimage[current_buf]->data +
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
494 xvimage[current_buf]->offsets[2];
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
495 mpi->stride[1] = xvimage[current_buf]->pitches[1];
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
496 mpi->stride[2] = xvimage[current_buf]->pitches[2];
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
497 } else
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
498 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
499 // YV12
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
500 mpi->planes[1] =
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
501 xvimage[current_buf]->data +
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
502 xvimage[current_buf]->offsets[2];
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
503 mpi->planes[2] =
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
504 xvimage[current_buf]->data +
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
505 xvimage[current_buf]->offsets[1];
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
506 mpi->stride[1] = xvimage[current_buf]->pitches[2];
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
507 mpi->stride[2] = xvimage[current_buf]->pitches[1];
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
508 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
509 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
510 mpi->flags |= MP_IMGFLAG_DIRECT;
36762
e788bcd9d49b Avoid many pointer cast warnings.
reimar
parents: 36517
diff changeset
511 mpi->priv = (void *)(intptr_t)current_buf;
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
512 // printf("mga: get_image() SUCCESS -> Direct Rendering ENABLED\n");
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
513 return VO_TRUE;
4980
0e6e50c02f7b direct rendering support
arpi
parents: 4978
diff changeset
514 }
0e6e50c02f7b direct rendering support
arpi
parents: 4978
diff changeset
515 return VO_FALSE;
0e6e50c02f7b direct rendering support
arpi
parents: 4978
diff changeset
516 }
0e6e50c02f7b direct rendering support
arpi
parents: 4978
diff changeset
517
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15826
diff changeset
518 static int query_format(uint32_t format)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
519 {
10855
eeae5c1b8fff fix some warnings (define order)
pl
parents: 10839
diff changeset
520 uint32_t i;
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
521 int flag = VFCAP_CSP_SUPPORTED | VFCAP_CSP_SUPPORTED_BY_HW | VFCAP_HWSCALE_UP | VFCAP_HWSCALE_DOWN | VFCAP_OSD | VFCAP_ACCEPT_STRIDE; // FIXME! check for DOWN
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
522
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
523 /* check image formats */
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
524 for (i = 0; i < formats; i++)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
525 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
526 if (fo[i].id == format)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
527 return flag; //xv_format = fo[i].id;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
528 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
529 return 0;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
530 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
531
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
532 static void uninit(void)
1852
58dd326fcc4a fix xshape, mixer, fullscreen, etc
pontscho
parents: 1818
diff changeset
533 {
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
534 int i;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
535
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
536 if (!vo_config_count)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
537 return;
14782
b0b668d69632 Don't change buffers when paused and redrawing.
al
parents: 14742
diff changeset
538 visible_buf = -1;
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
539 XvFreeAdaptorInfo(ai);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
540 ai = NULL;
13953
3dbebe82fc37 3 memory leaks fixed
iive
parents: 13914
diff changeset
541 if(fo){
3dbebe82fc37 3 memory leaks fixed
iive
parents: 13914
diff changeset
542 XFree(fo);
3dbebe82fc37 3 memory leaks fixed
iive
parents: 13914
diff changeset
543 fo=NULL;
3dbebe82fc37 3 memory leaks fixed
iive
parents: 13914
diff changeset
544 }
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
545 for (i = 0; i < num_buffers; i++)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
546 deallocate_xvimage(i);
27377
d58d06eafe83 Change a bunch of X11-specific preprocessor directives.
diego
parents: 27343
diff changeset
547 #ifdef CONFIG_XF86VM
27890
a4e2700e9381 Simplify vo_vm_switch and vo_vm_close, everyone was using the (almost) same
reimar
parents: 27889
diff changeset
548 vo_vm_close();
6016
be9cd7d845c2 -zoom, -fs with x[11|mga|v] fix -- round two
pontscho
parents: 6009
diff changeset
549 #endif
24133
d43cda21236d Watch X11 fd in main input select() if using vo xv
uau
parents: 23656
diff changeset
550 mp_input_rm_event_fd(ConnectionNumber(mDisplay));
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
551 vo_x11_uninit();
322
4e69a8e2700a Screensaver and monitor powersafe function is switched off when playing a
laaz
parents: 249
diff changeset
552 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
553
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15826
diff changeset
554 static int preinit(const char *arg)
4352
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4351
diff changeset
555 {
5509
1e90dd889c34 initialization moved to preinit(), query_format now really checks for supported formats
arpi
parents: 5466
diff changeset
556 XvPortID xv_p;
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
557 int busy_ports = 0;
10855
eeae5c1b8fff fix some warnings (define order)
pl
parents: 10839
diff changeset
558 unsigned int i;
14742
76d461a061df Unified colorkey code for vo xv and vo xvmc.
al
parents: 13953
diff changeset
559 strarg_t ck_src_arg = { 0, NULL };
76d461a061df Unified colorkey code for vo xv and vo xvmc.
al
parents: 13953
diff changeset
560 strarg_t ck_method_arg = { 0, NULL };
26730
41794a5fb100 Add a new suboption to -vo xv and -vo xvmc that allows selection
ben
parents: 25963
diff changeset
561 int xv_adaptor = -1;
14742
76d461a061df Unified colorkey code for vo xv and vo xvmc.
al
parents: 13953
diff changeset
562
28828
56eee6ffba9b Make data related to suboption parsing const in libvo
reimar
parents: 28598
diff changeset
563 const opt_t subopts[] =
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28829
diff changeset
564 {
14742
76d461a061df Unified colorkey code for vo xv and vo xvmc.
al
parents: 13953
diff changeset
565 /* name arg type arg var test */
30122
1772a5171ac7 Fix function declarations to avoid casting function pointers.
reimar
parents: 29526
diff changeset
566 { "port", OPT_ARG_INT, &xv_port, int_pos },
1772a5171ac7 Fix function declarations to avoid casting function pointers.
reimar
parents: 29526
diff changeset
567 { "adaptor", OPT_ARG_INT, &xv_adaptor, int_non_neg },
14742
76d461a061df Unified colorkey code for vo xv and vo xvmc.
al
parents: 13953
diff changeset
568 { "ck", OPT_ARG_STR, &ck_src_arg, xv_test_ck },
76d461a061df Unified colorkey code for vo xv and vo xvmc.
al
parents: 13953
diff changeset
569 { "ck-method", OPT_ARG_STR, &ck_method_arg, xv_test_ckm },
76d461a061df Unified colorkey code for vo xv and vo xvmc.
al
parents: 13953
diff changeset
570 { NULL }
76d461a061df Unified colorkey code for vo xv and vo xvmc.
al
parents: 13953
diff changeset
571 };
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
572
10826
ea6a03614754 add port parameter to -vo xv
attila
parents: 10757
diff changeset
573 xv_port = 0;
ea6a03614754 add port parameter to -vo xv
attila
parents: 10757
diff changeset
574
14742
76d461a061df Unified colorkey code for vo xv and vo xvmc.
al
parents: 13953
diff changeset
575 /* parse suboptions */
76d461a061df Unified colorkey code for vo xv and vo xvmc.
al
parents: 13953
diff changeset
576 if ( subopt_parse( arg, subopts ) != 0 )
4737
32e1f5042f65 I don't like such reports: '-vo dga:vidix or -vo x11:vidix works fine for me'
nick
parents: 4658
diff changeset
577 {
14742
76d461a061df Unified colorkey code for vo xv and vo xvmc.
al
parents: 13953
diff changeset
578 return -1;
4737
32e1f5042f65 I don't like such reports: '-vo dga:vidix or -vo x11:vidix works fine for me'
nick
parents: 4658
diff changeset
579 }
14742
76d461a061df Unified colorkey code for vo xv and vo xvmc.
al
parents: 13953
diff changeset
580
76d461a061df Unified colorkey code for vo xv and vo xvmc.
al
parents: 13953
diff changeset
581 /* modify colorkey settings according to the given options */
76d461a061df Unified colorkey code for vo xv and vo xvmc.
al
parents: 13953
diff changeset
582 xv_setup_colorkeyhandling( ck_method_arg.str, ck_src_arg.str );
76d461a061df Unified colorkey code for vo xv and vo xvmc.
al
parents: 13953
diff changeset
583
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
584 if (!vo_init())
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
585 return -1;
5509
1e90dd889c34 initialization moved to preinit(), query_format now really checks for supported formats
arpi
parents: 5466
diff changeset
586
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
587 /* check for Xvideo extension */
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
588 if (Success != XvQueryExtension(mDisplay, &ver, &rel, &req, &ev, &err))
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
589 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
590 mp_msg(MSGT_VO, MSGL_ERR,
20765
dd41a1fc9000 MSGTRs for libvo/aspect.c and libvo/vo_xv.c
kraymer
parents: 18715
diff changeset
591 MSGTR_LIBVO_XV_XvNotSupportedByX11);
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
592 return -1;
5509
1e90dd889c34 initialization moved to preinit(), query_format now really checks for supported formats
arpi
parents: 5466
diff changeset
593 }
1e90dd889c34 initialization moved to preinit(), query_format now really checks for supported formats
arpi
parents: 5466
diff changeset
594
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
595 /* check for Xvideo support */
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
596 if (Success !=
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
597 XvQueryAdaptors(mDisplay, DefaultRootWindow(mDisplay), &adaptors,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
598 &ai))
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
599 {
20765
dd41a1fc9000 MSGTRs for libvo/aspect.c and libvo/vo_xv.c
kraymer
parents: 18715
diff changeset
600 mp_msg(MSGT_VO, MSGL_ERR, MSGTR_LIBVO_XV_XvQueryAdaptorsFailed);
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
601 return -1;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
602 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
603
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
604 /* check adaptors */
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
605 if (xv_port)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
606 {
10839
0f2182b3261f hopefully final xv ports.
attila
parents: 10834
diff changeset
607 int port_found;
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
608
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
609 for (port_found = 0, i = 0; !port_found && i < adaptors; i++)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
610 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
611 if ((ai[i].type & XvInputMask) && (ai[i].type & XvImageMask))
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
612 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
613 for (xv_p = ai[i].base_id;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
614 xv_p < ai[i].base_id + ai[i].num_ports; ++xv_p)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
615 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
616 if (xv_p == xv_port)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
617 {
10839
0f2182b3261f hopefully final xv ports.
attila
parents: 10834
diff changeset
618 port_found = 1;
0f2182b3261f hopefully final xv ports.
attila
parents: 10834
diff changeset
619 break;
0f2182b3261f hopefully final xv ports.
attila
parents: 10834
diff changeset
620 }
0f2182b3261f hopefully final xv ports.
attila
parents: 10834
diff changeset
621 }
0f2182b3261f hopefully final xv ports.
attila
parents: 10834
diff changeset
622 }
0f2182b3261f hopefully final xv ports.
attila
parents: 10834
diff changeset
623 }
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
624 if (port_found)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
625 {
10839
0f2182b3261f hopefully final xv ports.
attila
parents: 10834
diff changeset
626 if (XvGrabPort(mDisplay, xv_port, CurrentTime))
0f2182b3261f hopefully final xv ports.
attila
parents: 10834
diff changeset
627 xv_port = 0;
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
628 } else
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
629 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
630 mp_msg(MSGT_VO, MSGL_WARN,
20765
dd41a1fc9000 MSGTRs for libvo/aspect.c and libvo/vo_xv.c
kraymer
parents: 18715
diff changeset
631 MSGTR_LIBVO_XV_InvalidPortParameter);
10839
0f2182b3261f hopefully final xv ports.
attila
parents: 10834
diff changeset
632 xv_port = 0;
0f2182b3261f hopefully final xv ports.
attila
parents: 10834
diff changeset
633 }
10826
ea6a03614754 add port parameter to -vo xv
attila
parents: 10757
diff changeset
634 }
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
635
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
636 for (i = 0; i < adaptors && xv_port == 0; i++)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
637 {
26730
41794a5fb100 Add a new suboption to -vo xv and -vo xvmc that allows selection
ben
parents: 25963
diff changeset
638 /* check if adaptor number has been specified */
41794a5fb100 Add a new suboption to -vo xv and -vo xvmc that allows selection
ben
parents: 25963
diff changeset
639 if (xv_adaptor != -1 && xv_adaptor != i)
41794a5fb100 Add a new suboption to -vo xv and -vo xvmc that allows selection
ben
parents: 25963
diff changeset
640 continue;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28829
diff changeset
641
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
642 if ((ai[i].type & XvInputMask) && (ai[i].type & XvImageMask))
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
643 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
644 for (xv_p = ai[i].base_id;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
645 xv_p < ai[i].base_id + ai[i].num_ports; ++xv_p)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
646 if (!XvGrabPort(mDisplay, xv_p, CurrentTime))
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
647 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
648 xv_port = xv_p;
27031
0f7770b2230d Move message about which adapter is used to verbose mode.
diego
parents: 26755
diff changeset
649 mp_msg(MSGT_VO, MSGL_V,
0f7770b2230d Move message about which adapter is used to verbose mode.
diego
parents: 26755
diff changeset
650 "[VO_XV] Using Xv Adapter #%d (%s)\n",
0f7770b2230d Move message about which adapter is used to verbose mode.
diego
parents: 26755
diff changeset
651 i, ai[i].name);
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
652 break;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
653 } else
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
654 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
655 mp_msg(MSGT_VO, MSGL_WARN,
20765
dd41a1fc9000 MSGTRs for libvo/aspect.c and libvo/vo_xv.c
kraymer
parents: 18715
diff changeset
656 MSGTR_LIBVO_XV_CouldNotGrabPort, (int) xv_p);
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
657 ++busy_ports;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
658 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
659 }
5509
1e90dd889c34 initialization moved to preinit(), query_format now really checks for supported formats
arpi
parents: 5466
diff changeset
660 }
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
661 if (!xv_port)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
662 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
663 if (busy_ports)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
664 mp_msg(MSGT_VO, MSGL_ERR,
20765
dd41a1fc9000 MSGTRs for libvo/aspect.c and libvo/vo_xv.c
kraymer
parents: 18715
diff changeset
665 MSGTR_LIBVO_XV_CouldNotFindFreePort);
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
666 else
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
667 mp_msg(MSGT_VO, MSGL_ERR,
20765
dd41a1fc9000 MSGTRs for libvo/aspect.c and libvo/vo_xv.c
kraymer
parents: 18715
diff changeset
668 MSGTR_LIBVO_XV_NoXvideoSupport);
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
669 return -1;
5509
1e90dd889c34 initialization moved to preinit(), query_format now really checks for supported formats
arpi
parents: 5466
diff changeset
670 }
1e90dd889c34 initialization moved to preinit(), query_format now really checks for supported formats
arpi
parents: 5466
diff changeset
671
14742
76d461a061df Unified colorkey code for vo xv and vo xvmc.
al
parents: 13953
diff changeset
672 if ( !vo_xv_init_colorkey() )
7857
3c690d2ad1ac MPlayer being unable to display video properly on many nVidia graphics cards.
arpi
parents: 7848
diff changeset
673 {
14742
76d461a061df Unified colorkey code for vo xv and vo xvmc.
al
parents: 13953
diff changeset
674 return -1; // bail out, colorkey setup failed
7857
3c690d2ad1ac MPlayer being unable to display video properly on many nVidia graphics cards.
arpi
parents: 7848
diff changeset
675 }
15826
db966bdf6f5b Try to set XV_SYNC_TO_VBLANK to enable vsync on non-overlay xv adapters.
reimar
parents: 15540
diff changeset
676 vo_xv_enable_vsync();
16958
3ff863e54b93 Test if source image dimensions are too big.
al
parents: 16171
diff changeset
677 vo_xv_get_max_img_dim( &max_width, &max_height );
7857
3c690d2ad1ac MPlayer being unable to display video properly on many nVidia graphics cards.
arpi
parents: 7848
diff changeset
678
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
679 fo = XvListImageFormats(mDisplay, xv_port, (int *) &formats);
5566
e01c664def74 VFCAP added
arpi
parents: 5509
diff changeset
680
24133
d43cda21236d Watch X11 fd in main input select() if using vo xv
uau
parents: 23656
diff changeset
681 mp_input_add_event_fd(ConnectionNumber(mDisplay), check_events);
4737
32e1f5042f65 I don't like such reports: '-vo dga:vidix or -vo x11:vidix works fine for me'
nick
parents: 4658
diff changeset
682 return 0;
4352
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4351
diff changeset
683 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
684
33305
ddb45e9443ec Remove the variable arguments from the libvo control() functions.
iive
parents: 33301
diff changeset
685 static int control(uint32_t request, void *data)
4592
5fbfd8545c3b query_ stuff replaced by new control() - patch by David Holm
arpi
parents: 4433
diff changeset
686 {
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
687 switch (request)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
688 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
689 case VOCTRL_PAUSE:
26755
46f0b4d34fa1 cosmetics: Remove useless parentheses from from return statements.
diego
parents: 26730
diff changeset
690 return int_pause = 1;
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
691 case VOCTRL_RESUME:
26755
46f0b4d34fa1 cosmetics: Remove useless parentheses from from return statements.
diego
parents: 26730
diff changeset
692 return int_pause = 0;
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
693 case VOCTRL_QUERY_FORMAT:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
694 return query_format(*((uint32_t *) data));
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
695 case VOCTRL_GET_IMAGE:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
696 return get_image(data);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
697 case VOCTRL_DRAW_IMAGE:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
698 return draw_image(data);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
699 case VOCTRL_GUISUPPORT:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
700 return VO_TRUE;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
701 case VOCTRL_GET_PANSCAN:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
702 return VO_TRUE;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
703 case VOCTRL_FULLSCREEN:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
704 vo_x11_fullscreen();
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
705 /* indended, fallthrough to update panscan on fullscreen/windowed switch */
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
706 case VOCTRL_SET_PANSCAN:
28511
db19e31a2c7c Add a calc_src_dst_rects that calculates from window size, panscan etc.
reimar
parents: 28446
diff changeset
707 resize();
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
708 return VO_TRUE;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
709 case VOCTRL_SET_EQUALIZER:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
710 {
33301
899d817e56fc Implement control() VOCTRL_SET/GET_EQUALIZER using a vf_equalize struct,
iive
parents: 32467
diff changeset
711 vf_equalizer_t *eq=data;
899d817e56fc Implement control() VOCTRL_SET/GET_EQUALIZER using a vf_equalize struct,
iive
parents: 32467
diff changeset
712 return vo_xv_set_eq(xv_port, eq->item, eq->value);
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
713 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
714 case VOCTRL_GET_EQUALIZER:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
715 {
33301
899d817e56fc Implement control() VOCTRL_SET/GET_EQUALIZER using a vf_equalize struct,
iive
parents: 32467
diff changeset
716 vf_equalizer_t *eq=data;
899d817e56fc Implement control() VOCTRL_SET/GET_EQUALIZER using a vf_equalize struct,
iive
parents: 32467
diff changeset
717 return vo_xv_get_eq(xv_port, eq->item, &eq->value);
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
718 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
719 case VOCTRL_ONTOP:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
720 vo_x11_ontop();
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
721 return VO_TRUE;
22232
d0b60d14d8d7 Move common vo initialization code to video_out.c
reimar
parents: 22130
diff changeset
722 case VOCTRL_UPDATE_SCREENINFO:
d0b60d14d8d7 Move common vo initialization code to video_out.c
reimar
parents: 22130
diff changeset
723 update_xinerama_info();
d0b60d14d8d7 Move common vo initialization code to video_out.c
reimar
parents: 22130
diff changeset
724 return VO_TRUE;
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
725 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
726 return VO_NOTIMPL;
4592
5fbfd8545c3b query_ stuff replaced by new control() - patch by David Holm
arpi
parents: 4433
diff changeset
727 }