annotate libvo/vo_xv.c @ 35418:cedb0ba2b5c6

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