Mercurial > mplayer.hg
annotate libvo/vo_xover.c @ 30387:30d6f38357c7
If audio was identified as DTS in the PMT do not override that with TrueHD
based only on substream id.
Works with all available DTS and TrueHD samples available (2 each).
author | reimar |
---|---|
date | Sun, 24 Jan 2010 20:54:17 +0000 |
parents | 0f1b5b68af32 |
children | 09dd92639e7b |
rev | line source |
---|---|
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
1 /* |
28446
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
27927
diff
changeset
|
2 * XOver a general x11 vo for MPlayer overlay drivers based on: |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
27927
diff
changeset
|
3 * VIDIX-accelerated overlay in an X window |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
27927
diff
changeset
|
4 * |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
27927
diff
changeset
|
5 * copyright (C) Alex Beregszaszi & Zoltan Ponekker & Nick Kurshev |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
27927
diff
changeset
|
6 * |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
27927
diff
changeset
|
7 * WS window manager by Pontscho/Fresh! |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
27927
diff
changeset
|
8 * |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
27927
diff
changeset
|
9 * based on vo_gl.c and vo_vesa.c and vo_xmga.c (.so mastah! ;)) |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
27927
diff
changeset
|
10 * |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
27927
diff
changeset
|
11 * This file is part of MPlayer. |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
27927
diff
changeset
|
12 * |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
27927
diff
changeset
|
13 * MPlayer is free software; you can redistribute it and/or modify |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
27927
diff
changeset
|
14 * it under the terms of the GNU General Public License as published by |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
27927
diff
changeset
|
15 * the Free Software Foundation; either version 2 of the License, or |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
27927
diff
changeset
|
16 * (at your option) any later version. |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
27927
diff
changeset
|
17 * |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
27927
diff
changeset
|
18 * MPlayer is distributed in the hope that it will be useful, |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
27927
diff
changeset
|
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
27927
diff
changeset
|
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
27927
diff
changeset
|
21 * GNU General Public License for more details. |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
27927
diff
changeset
|
22 * |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
27927
diff
changeset
|
23 * You should have received a copy of the GNU General Public License along |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
27927
diff
changeset
|
24 * with MPlayer; if not, write to the Free Software Foundation, Inc., |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
27927
diff
changeset
|
25 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
7681eab10aea
Add standard license headers, unify header formatting.
diego
parents:
27927
diff
changeset
|
26 */ |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
27 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
28 #include <stdio.h> |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
29 #include <stdlib.h> |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
30 #include <string.h> |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
31 #include <math.h> |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
32 #include <errno.h> |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
33 #include <unistd.h> |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
34 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
35 #include "config.h" |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
36 #include "video_out.h" |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
37 #include "video_out_internal.h" |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
38 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
39 #include <X11/Xlib.h> |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
40 #include <X11/Xutil.h> |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
41 //#include <X11/keysym.h> |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
42 |
27377
d58d06eafe83
Change a bunch of X11-specific preprocessor directives.
diego
parents:
27343
diff
changeset
|
43 #ifdef CONFIG_XINERAMA |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
44 #include <X11/extensions/Xinerama.h> |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
45 #endif |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
46 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
47 #include "x11_common.h" |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
48 #include "aspect.h" |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
49 #include "mp_msg.h" |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
50 |
27343 | 51 #ifdef CONFIG_GUI |
23077 | 52 #include "gui/interface.h" |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
53 #endif |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
54 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
55 |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28446
diff
changeset
|
56 static const vo_info_t info = |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
57 { |
12783 | 58 "General X11 driver for overlay capable video output drivers", |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
59 "xover", |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
60 "Albeu", |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
61 "" |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
62 }; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
63 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
64 LIBVO_EXTERN(xover) |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
65 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
66 #define UNUSED(x) ((void)(x)) /* Removes warning about unused arguments */ |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
67 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
68 /* X11 related variables */ |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
69 /* Colorkey handling */ |
10988 | 70 static int colorkey; |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
71 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
72 /* Image parameters */ |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
73 static uint32_t image_width; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
74 static uint32_t image_height; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
75 static uint32_t image_format; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
76 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
77 /* Window parameters */ |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
78 static uint32_t window_x, window_y; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
79 static uint32_t window_width, window_height; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
80 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
81 /* used by XGetGeometry & XTranslateCoordinates for moving/resizing window */ |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
82 static uint32_t drwX, drwY, drwWidth, drwHeight, drwBorderWidth, |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
83 drwDepth, drwcX, drwcY, dwidth, dheight; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
84 |
25219
e82ecde2cbd4
Mark several uses of vo_functions_t as const to stop some of the current
reimar
parents:
25216
diff
changeset
|
85 static const vo_functions_t* sub_vo = NULL; |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
86 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
87 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
88 static void set_window(int force_update) |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
89 { |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
90 Window mRoot; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
91 if ( WinID ) |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
92 { |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
93 XGetGeometry(mDisplay, vo_window, &mRoot, &drwX, &drwY, &drwWidth, |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
94 &drwHeight, &drwBorderWidth, &drwDepth); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
95 drwX = drwY = 0; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
96 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
97 XTranslateCoordinates(mDisplay, vo_window, mRoot, 0, 0, |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
98 &drwcX, &drwcY, &mRoot); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
99 aspect(&dwidth,&dheight,A_NOZOOM); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
100 if (!vo_fs) |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
101 mp_msg(MSGT_VO, MSGL_V, "[xvidix] dcx: %d dcy: %d dx: %d dy: %d dw: %d dh: %d\n", |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
102 drwcX, drwcY, drwX, drwY, drwWidth, drwHeight); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
103 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
104 /* following stuff copied from vo_xmga.c */ |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28446
diff
changeset
|
105 } |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28446
diff
changeset
|
106 else |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28446
diff
changeset
|
107 { |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
108 aspect(&dwidth,&dheight,A_NOZOOM); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28446
diff
changeset
|
109 drwcX=drwX=vo_dx; drwcY=drwY=vo_dy; drwWidth=vo_dwidth; drwHeight=vo_dheight; |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
110 } |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
111 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
112 #if X11_FULLSCREEN |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
113 if (vo_fs) |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
114 { |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
115 aspect(&dwidth,&dheight,A_ZOOM); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
116 drwX = (vo_screenwidth - ((int)dwidth > vo_screenwidth ? vo_screenwidth : dwidth)) / 2; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
117 drwcX = drwX; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
118 drwY = (vo_screenheight - ((int)dheight > vo_screenheight ? vo_screenheight : dheight)) / 2; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
119 drwcY = drwY; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
120 drwWidth = ((int)dwidth > vo_screenwidth ? vo_screenwidth : dwidth); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
121 drwHeight = ((int)dheight > vo_screenheight ? vo_screenheight : dheight); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
122 mp_msg(MSGT_VO, MSGL_V, "[xvidix-fs] dcx: %d dcy: %d dx: %d dy: %d dw: %d dh: %d\n", |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
123 drwcX, drwcY, drwX, drwY, drwWidth, drwHeight); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
124 } |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
125 #endif |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
126 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
127 vo_dwidth=drwWidth; vo_dheight=drwHeight; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
128 |
27377
d58d06eafe83
Change a bunch of X11-specific preprocessor directives.
diego
parents:
27343
diff
changeset
|
129 #ifdef CONFIG_XINERAMA |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
130 if (XineramaIsActive(mDisplay)) |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
131 { |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
132 XineramaScreenInfo *screens; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
133 int num_screens; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
134 int i = 0; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28446
diff
changeset
|
135 |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
136 screens = XineramaQueryScreens(mDisplay, &num_screens); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28446
diff
changeset
|
137 |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
138 /* find the screen we are on */ |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
139 while (i<num_screens && |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28446
diff
changeset
|
140 ((screens[i].x_org < (int)drwcX) || |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
141 (screens[i].y_org < (int)drwcY) || |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
142 (screens[i].x_org + screens[i].width >= (int)drwcX) || |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
143 (screens[i].y_org + screens[i].height >= (int)drwcY))) |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
144 { |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
145 i++; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
146 } |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
147 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
148 if(i<num_screens) |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
149 { |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
150 /* save the screen we are on */ |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
151 xinerama_screen = i; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
152 } else { |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
153 /* oops.. couldnt find the screen we are on |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
154 * because the upper left corner left the |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
155 * visual range. assume we are still on the |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
156 * same screen |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
157 */ |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
158 i = xinerama_screen; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
159 } |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
160 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
161 /* set drwcX and drwcY to the right values */ |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
162 drwcX = drwcX - screens[i].x_org; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
163 drwcY = drwcY - screens[i].y_org; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
164 XFree(screens); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
165 } |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
166 #endif |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
167 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
168 if ( vo_panscan > 0.0f && vo_fs ) |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
169 { |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
170 drwcX-=vo_panscan_x >> 1; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
171 drwcY-=vo_panscan_y >> 1; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
172 drwX-=vo_panscan_x >> 1; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
173 drwY-=vo_panscan_y >> 1; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
174 drwWidth+=vo_panscan_x; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
175 drwHeight+=vo_panscan_y; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
176 } |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
177 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
178 /* set new values in VIDIX */ |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
179 if (force_update || (window_x != drwcX) || (window_y != drwcY) || |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
180 (window_width != drwWidth) || (window_height != drwHeight)) |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
181 { |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
182 mp_win_t w; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
183 // do a backup of window coordinates |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
184 w.x = window_x = drwcX; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
185 w.y = window_y = drwcY; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
186 vo_dx = drwcX; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
187 vo_dy = drwcY; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
188 w.w = window_width = drwWidth; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
189 w.h = window_height = drwHeight; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
190 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
191 if(sub_vo->control(VOCTRL_XOVERLAY_SET_WIN,&w) != VO_TRUE) |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
192 mp_msg(MSGT_VO, MSGL_ERR, "xvidx: set_overlay failed\n"); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
193 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
194 mp_msg(MSGT_VO, MSGL_V, "[xvidix] window properties: pos: %dx%d, size: %dx%d\n", vo_dx, vo_dy, window_width, window_height); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
195 } |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
196 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
197 /* mDrawColorKey: */ |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
198 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
199 /* fill drawable with specified color */ |
10988 | 200 XSetBackground(mDisplay, vo_gc, 0L); |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
201 XClearWindow( mDisplay,vo_window ); |
10988 | 202 XSetForeground(mDisplay, vo_gc, colorkey); |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
203 XFillRectangle(mDisplay, vo_window, vo_gc, drwX, drwY, drwWidth, |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
204 (vo_fs ? drwHeight - 1 : drwHeight)); |
11542 | 205 |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
206 /* flush, update drawable */ |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
207 XFlush(mDisplay); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
208 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
209 return; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
210 } |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
211 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
212 /* connect to server, create and map window, |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
213 * allocate colors and (shared) memory |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
214 */ |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15540
diff
changeset
|
215 static int config(uint32_t width, uint32_t height, uint32_t d_width, |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
216 uint32_t d_height, uint32_t flags, char *title, uint32_t format) |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
217 { |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
218 XVisualInfo vinfo; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
219 // XSizeHints hint; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
220 XSetWindowAttributes xswa; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
221 unsigned long xswamask; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
222 XWindowAttributes attribs; |
10988 | 223 int window_depth, r, g, b; |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
224 mp_colorkey_t colork; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
225 char _title[255]; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
226 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
227 sprintf(_title,"MPlayer %s X11 Overlay",sub_vo->info->name); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
228 title = _title; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
229 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
230 panscan_init(); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
231 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
232 image_height = height; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
233 image_width = width; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
234 image_format = format; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
235 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
236 aspect_save_orig(width, height); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
237 aspect_save_prescale(d_width, d_height); |
18116 | 238 update_xinerama_info(); |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
239 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
240 window_width = d_width; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
241 window_height = d_height; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
242 |
10988 | 243 r = (vo_colorkey & 0x00ff0000) >> 16; |
244 g = (vo_colorkey & 0x0000ff00) >> 8; | |
245 b = vo_colorkey & 0x000000ff; | |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
246 switch(vo_depthonscreen) |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
247 { |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
248 case 32: |
10988 | 249 colorkey = vo_colorkey; |
250 break; | |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
251 case 24: |
10988 | 252 colorkey = vo_colorkey & 0x00ffffff; |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
253 break; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
254 case 16: |
10988 | 255 colorkey = ((r >> 3) << 11) | ((g >> 2) << 5) | (b >> 3); |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
256 break; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
257 case 15: |
10988 | 258 colorkey = ((r >> 3) << 10) | ((g >> 3) << 5) | (b >> 3); |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
259 break; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
260 default: |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
261 mp_msg(MSGT_VO, MSGL_ERR, "Sorry, this (%d) color depth is not supported\n", |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
262 vo_depthonscreen); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
263 } |
13946 | 264 mp_msg(MSGT_VO, MSGL_V, "Using colorkey: %x\n", colorkey); |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
265 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
266 aspect(&d_width, &d_height, A_NOZOOM); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
267 |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28446
diff
changeset
|
268 vo_dx=( vo_screenwidth - d_width ) / 2; vo_dy=( vo_screenheight - d_height ) / 2; |
18116 | 269 vo_dx += xinerama_x; |
270 vo_dy += xinerama_y; | |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
271 vo_dwidth=d_width; vo_dheight=d_height; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
272 |
27343 | 273 #ifdef CONFIG_GUI |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
274 if(use_gui) guiGetEvent( guiSetShVideo,0 ); // the GUI will set up / resize the window |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
275 else |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
276 { |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
277 #endif |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
278 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
279 #ifdef X11_FULLSCREEN |
15212
05aa13cdf92f
replace VO and VF numeric flags with #defined identifiers
henry
parents:
13946
diff
changeset
|
280 if ( ( flags&VOFLAG_FULLSCREEN )||(flags & VOFLAG_SWSCALE) ) aspect(&d_width, &d_height, A_ZOOM); |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
281 #endif |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
282 dwidth = d_width; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
283 dheight = d_height; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
284 /* Make the window */ |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
285 XGetWindowAttributes(mDisplay, DefaultRootWindow(mDisplay), &attribs); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
286 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
287 /* from vo_x11 */ |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
288 window_depth = attribs.depth; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
289 if ((window_depth != 15) && (window_depth != 16) && (window_depth != 24) |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
290 && (window_depth != 32)) |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
291 window_depth = 24; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
292 XMatchVisualInfo(mDisplay, mScreen, window_depth, TrueColor, &vinfo); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
293 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
294 xswa.background_pixel = BlackPixel(mDisplay, mScreen); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
295 xswa.border_pixel = 0; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
296 xswa.colormap = XCreateColormap(mDisplay, RootWindow(mDisplay, mScreen), |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
297 vinfo.visual, AllocNone); |
27927
6f199f065e15
Factor common code like -wid handling, vo_gc creation etc. out into
reimar
parents:
27903
diff
changeset
|
298 xswamask = CWBackPixel | CWBorderPixel | CWColormap; |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
299 |
23655
00aa61cde84a
Make X11 window creation and (with -fixed-vo) management simpler and more
reimar
parents:
23616
diff
changeset
|
300 vo_x11_create_vo_window(&vinfo, vo_dx, vo_dy, |
00aa61cde84a
Make X11 window creation and (with -fixed-vo) management simpler and more
reimar
parents:
23616
diff
changeset
|
301 window_width, window_height, flags, |
23822 | 302 xswa.colormap, "xvidix", title); |
23655
00aa61cde84a
Make X11 window creation and (with -fixed-vo) management simpler and more
reimar
parents:
23616
diff
changeset
|
303 XChangeWindowAttributes(mDisplay, vo_window, xswamask, &xswa); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28446
diff
changeset
|
304 |
27343 | 305 #ifdef CONFIG_GUI |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
306 } |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
307 #endif |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
308 |
15212
05aa13cdf92f
replace VO and VF numeric flags with #defined identifiers
henry
parents:
13946
diff
changeset
|
309 if ( ( !WinID )&&( flags&VOFLAG_FULLSCREEN ) ) { vo_dx=0; vo_dy=0; vo_dwidth=vo_screenwidth; vo_dheight=vo_screenheight; vo_fs=1; } |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
310 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
311 if(sub_vo->config(image_width,image_height,vo_dwidth,vo_dheight, |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
312 flags | VOFLAG_XOVERLAY_SUB_VO,NULL,format)) { |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
313 mp_msg(MSGT_VO, MSGL_ERR, "xover: sub vo config failed\n"); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
314 return 1; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
315 } |
10988 | 316 colork.x11 = colorkey; |
317 colork.r = r; | |
318 colork.g = g; | |
319 colork.b = b; | |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
320 if(sub_vo->control(VOCTRL_XOVERLAY_SET_COLORKEY,&colork) != VO_TRUE) |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
321 mp_msg(MSGT_VO, MSGL_WARN, "xover: set_colorkey failed\n"); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
322 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
323 set_window(1); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
324 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
325 XSync(mDisplay, False); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
326 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
327 panscan_calc(); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
328 |
26755
46f0b4d34fa1
cosmetics: Remove useless parentheses from from return statements.
diego
parents:
25219
diff
changeset
|
329 return 0; |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
330 } |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
331 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
332 static void check_events(void) |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
333 { |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
334 const int event = vo_x11_check_events(mDisplay); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
335 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
336 if ((event & VO_EVENT_RESIZE) || (event & VO_EVENT_EXPOSE)) |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
337 set_window(0); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
338 sub_vo->check_events(); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
339 return; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
340 } |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
341 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
342 /* draw_osd, flip_page, draw_slice, draw_frame should be |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
343 overwritten with vidix functions (vosub_vidix.c) */ |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
344 static void draw_osd(void) |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
345 { |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
346 mp_msg(MSGT_VO, MSGL_FATAL, "xover error: didn't used sub vo draw_osd!\n"); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
347 } |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
348 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
349 static void flip_page(void) |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
350 { |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
351 mp_msg(MSGT_VO, MSGL_FATAL, "xover error: didn't used sub vo flip_page!\n"); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
352 } |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
353 |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15540
diff
changeset
|
354 static int draw_slice(uint8_t *src[], int stride[], |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
355 int w, int h, int x, int y) |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
356 { |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
357 UNUSED(src); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
358 UNUSED(stride); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
359 UNUSED(w); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
360 UNUSED(h); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
361 UNUSED(x); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
362 UNUSED(y); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
363 mp_msg(MSGT_VO, MSGL_FATAL, "xover error: didn't used sub vo draw_slice!\n"); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
364 return 1; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
365 } |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
366 |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15540
diff
changeset
|
367 static int draw_frame(uint8_t *src[]) |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
368 { |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
369 UNUSED(src); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
370 mp_msg(MSGT_VO, MSGL_FATAL, "xover error: didn't used sub vo draw_frame!\n"); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
371 return 1; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
372 } |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
373 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
374 static void uninit(void) |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
375 { |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
376 if(!vo_config_count) return; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
377 if(sub_vo) sub_vo->uninit(); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
378 sub_vo = NULL; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
379 vo_x11_uninit(); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
380 // Restore our callbacks |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
381 video_out_xover.draw_frame = draw_frame; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
382 video_out_xover.draw_slice = draw_slice; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
383 video_out_xover.flip_page = flip_page; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
384 video_out_xover.draw_osd = draw_osd; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
385 } |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
386 |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15540
diff
changeset
|
387 static int preinit(const char *arg) |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
388 { |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
389 int i; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
390 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
391 if(!arg) { |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
392 mp_msg(MSGT_VO, MSGL_ERR, "VO XOverlay need a subdriver\n"); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
393 return 1; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
394 } |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
395 |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
396 for(i = 0 ; video_out_drivers[i] != NULL ; i++) { |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
397 if(!strcmp(video_out_drivers[i]->info->short_name,arg) && |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
398 strcmp(video_out_drivers[i]->info->short_name,"xover")) |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
399 break; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
400 } |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
401 if(!video_out_drivers[i]) { |
10718 | 402 mp_msg(MSGT_VO, MSGL_ERR, "VO XOverlay: Subdriver %s not found\n", arg); |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
403 return 1; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
404 } |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
405 if(video_out_drivers[i]->control(VOCTRL_XOVERLAY_SUPPORT,NULL) != VO_TRUE) { |
10718 | 406 mp_msg(MSGT_VO, MSGL_ERR, "VO XOverlay: %s doesn't support XOverlay\n", arg); |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
407 return 1; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
408 } |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
409 // X11 init |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
410 if (!vo_init()) return VO_FALSE; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
411 if(video_out_drivers[i]->preinit(NULL)) { |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
412 mp_msg(MSGT_VO, MSGL_ERR, "VO XOverlay: Subvo init failed\n"); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
413 return 1; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
414 } |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
415 sub_vo = video_out_drivers[i]; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
416 // Setup the sub vo callbacks |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
417 video_out_xover.draw_frame = sub_vo->draw_frame; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
418 video_out_xover.draw_slice = sub_vo->draw_slice; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
419 video_out_xover.flip_page = sub_vo->flip_page; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
420 video_out_xover.draw_osd = sub_vo->draw_osd; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
421 return 0; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
422 } |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
423 |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15540
diff
changeset
|
424 static int control(uint32_t request, void *data, ...) |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
425 { |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
426 if(!sub_vo) return VO_ERROR; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
427 switch (request) { |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
428 case VOCTRL_GUISUPPORT: |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
429 return VO_TRUE; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
430 case VOCTRL_GET_PANSCAN: |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
431 if ( !vo_config_count || !vo_fs ) return VO_FALSE; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
432 return VO_TRUE; |
11542 | 433 case VOCTRL_ONTOP: |
434 vo_x11_ontop(); | |
435 return VO_TRUE; | |
9569
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
436 case VOCTRL_FULLSCREEN: |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
437 vo_x11_fullscreen(); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
438 case VOCTRL_SET_PANSCAN: |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
439 if ( vo_fs && ( vo_panscan != vo_panscan_amount ) ) |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
440 { |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
441 panscan_calc(); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
442 set_window(0); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
443 } |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
444 return VO_TRUE; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
445 default: |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
446 // Safe atm bcs nothing use more than 1 arg |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
447 return sub_vo->control(request,data); |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
448 } |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
449 return VO_NOTIMPL; |
894d02a6469e
vo_xover is a new vo that should make easy to have x11 support for
albeu
parents:
diff
changeset
|
450 } |