annotate libvo/vo_xmga.c @ 29516:87897065b7d7

Fix aspect_fit to work correctly when borders need to be added on top and bottom, previous code accidentally compared against screen dimensions, resulting in cropping instead of added borders.
author reimar
date Thu, 27 Aug 2009 12:38:22 +0000
parents 7681eab10aea
children 317649676214
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
28446
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27927
diff changeset
1 /*
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27927
diff changeset
2 * copyright (C) 2001 Zoltan Ponekker
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27927
diff changeset
3 *
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27927
diff changeset
4 * This file is part of MPlayer.
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27927
diff changeset
5 *
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27927
diff changeset
6 * MPlayer is free software; you can redistribute it and/or modify
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27927
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: 27927
diff changeset
8 * the Free Software Foundation; either version 2 of the License, or
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27927
diff changeset
9 * (at your option) any later version.
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 * MPlayer is distributed in the hope that it will be useful,
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27927
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27927
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27927
diff changeset
14 * GNU General Public License for more details.
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27927
diff changeset
15 *
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27927
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: 27927
diff changeset
17 * with MPlayer; if not, write to the Free Software Foundation, Inc.,
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27927
diff changeset
18 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27927
diff changeset
19 */
100
201c2f931497 added #define SHOW_TIME option... (debug)
arpi_esp
parents: 56
diff changeset
20
201c2f931497 added #define SHOW_TIME option... (debug)
arpi_esp
parents: 56
diff changeset
21 //#define SHOW_TIME
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
22
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
23 #include <stdio.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
24 #include <stdlib.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
25 #include <string.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
26
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
27 #include "config.h"
6296
74115095d9fe msg/i18n fixes and some printf->mp_msg
arpi
parents: 6095
diff changeset
28
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
29 #include "video_out.h"
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
30 #include "video_out_internal.h"
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
31
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
32
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
33 #include <sys/ioctl.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
34 #include <unistd.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
35 #include <fcntl.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
36 #include <sys/mman.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
37
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
38 #include "drivers/mga_vid.h"
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
39
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
40 #include <X11/Xlib.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
41 #include <X11/Xutil.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
42 #include <errno.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
43
27377
d58d06eafe83 Change a bunch of X11-specific preprocessor directives.
diego
parents: 27343
diff changeset
44 #ifdef CONFIG_XINERAMA
4017
21a75ab24703 Xinerama patch number two by attila.
atmos4
parents: 3990
diff changeset
45 #include <X11/extensions/Xinerama.h>
21a75ab24703 Xinerama patch number two by attila.
atmos4
parents: 3990
diff changeset
46 #endif
21a75ab24703 Xinerama patch number two by attila.
atmos4
parents: 3990
diff changeset
47
31
1fc618eba830 added check_events() interface
arpi_esp
parents: 1
diff changeset
48 #include "x11_common.h"
616
41d6eec69b60 clean up
pontscho
parents: 614
diff changeset
49 #include "sub.h"
2057
378aed6b232d Use aspect()
atmos4
parents: 2039
diff changeset
50 #include "aspect.h"
31
1fc618eba830 added check_events() interface
arpi_esp
parents: 1
diff changeset
51
182
80a7b40f201a *** empty log message ***
pontscho
parents: 120
diff changeset
52 #ifdef SHOW_TIME
13787
e047e70a9767 Handle "xxx.h" vs "../xxx.h" include paths in a consistent way.
diego
parents: 13056
diff changeset
53 #include "osdep/timer.h"
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
54 static unsigned int timer = 0;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
55 static unsigned int timerd = 0;
100
201c2f931497 added #define SHOW_TIME option... (debug)
arpi_esp
parents: 56
diff changeset
56 #endif
201c2f931497 added #define SHOW_TIME option... (debug)
arpi_esp
parents: 56
diff changeset
57
27343
5fe6a8adf569 Rename two GUI-related preprocessor directives:
diego
parents: 25962
diff changeset
58 #ifdef CONFIG_GUI
23077
17bf4f4b0715 Gui --> gui
diego
parents: 18715
diff changeset
59 #include "gui/interface.h"
5955
caac20b1ca79 fix xmga fs, resize to movie size and mouse auto hide + dga
pontscho
parents: 5945
diff changeset
60 #endif
caac20b1ca79 fix xmga fs, resize to movie size and mouse auto hide + dga
pontscho
parents: 5945
diff changeset
61
25216
3aee342be929 Make vo info structs const
reimar
parents: 24348
diff changeset
62 static const vo_info_t info = {
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
63 "Matrox G200/G4x0/G550 overlay in X11 window (using /dev/mga_vid)",
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
64 "xmga",
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
65 "Zoltan Ponekker <pontscho@makacs.poliod.hu>",
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
66 ""
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
67 };
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
68
25220
c9e9ac2008c2 Mark the vo_functions_t definitions as const where possible.
reimar
parents: 25216
diff changeset
69 const LIBVO_EXTERN(xmga)
8148
5b39e79af5fe removed get_info, using the same sheme as in libmpcodecs instead
alex
parents: 8017
diff changeset
70
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
71 static uint32_t mDepth;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
72 static XWindowAttributes attribs;
10988
c2bff70784d5 user settable colorkey
alex
parents: 10729
diff changeset
73 static int colorkey;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
74
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
75 static uint32_t mvHeight;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
76 static uint32_t mvWidth;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
77
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
78 static Window mRoot;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
79
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
80 static XSetWindowAttributes xWAttribs;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
81
25962
afa125da85cf typo fix: inited --> initialized
diego
parents: 25220
diff changeset
82 static int initialized = 0;
6311
da2dda48b7ec add mute support ( step 1 ) and fixed panscan bugs (1000l for me)
pontscho
parents: 6307
diff changeset
83
4981
bfc652fc7f43 rewrite fullscreen support in some libvo driver
pontscho
parents: 4970
diff changeset
84 #define VO_XMGA
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
85 #include "mga_common.c"
4981
bfc652fc7f43 rewrite fullscreen support in some libvo driver
pontscho
parents: 4970
diff changeset
86 #undef VO_XMGA
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
87
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
88 static void mDrawColorKey(void)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
89 {
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
90 XSetBackground(mDisplay, vo_gc, 0);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
91 XClearWindow(mDisplay, vo_window);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
92 XSetForeground(mDisplay, vo_gc, colorkey);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
93 XFillRectangle(mDisplay, vo_window, vo_gc, drwX, drwY, drwWidth,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
94 (vo_fs ? drwHeight - 1 : drwHeight));
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
95 XFlush(mDisplay);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
96 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
97
31
1fc618eba830 added check_events() interface
arpi_esp
parents: 1
diff changeset
98 static void check_events(void)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
99 {
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
100 int e = vo_x11_check_events(mDisplay);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
101
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
102 if (!(e & VO_EVENT_RESIZE) && !(e & VO_EVENT_EXPOSE))
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
103 return;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
104 set_window();
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
105 mDrawColorKey();
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
106 if (ioctl(f, MGA_VID_CONFIG, &mga_vid_config))
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
107 mp_msg(MSGT_VO, MSGL_WARN,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
108 "Error in mga_vid_config ioctl (wrong mga_vid.o version?)");
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
109 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
110
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
111 static void flip_page(void)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
112 {
182
80a7b40f201a *** empty log message ***
pontscho
parents: 120
diff changeset
113 #ifdef SHOW_TIME
100
201c2f931497 added #define SHOW_TIME option... (debug)
arpi_esp
parents: 56
diff changeset
114 unsigned int t;
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
115
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
116 t = GetTimer();
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
117 mp_msg(MSGT_VO, MSGL_STATUS,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
118 " [timer: %08X diff: %6d dd: %6d ] \n", t, t - timer,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
119 (t - timer) - timerd);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
120 timerd = t - timer;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
121 timer = t;
182
80a7b40f201a *** empty log message ***
pontscho
parents: 120
diff changeset
122 #endif
100
201c2f931497 added #define SHOW_TIME option... (debug)
arpi_esp
parents: 56
diff changeset
123
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
124 vo_mga_flip_page();
31
1fc618eba830 added check_events() interface
arpi_esp
parents: 1
diff changeset
125 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
126
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15540
diff changeset
127 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
128 uint32_t d_height, uint32_t flags, char *title,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
129 uint32_t format)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
130 {
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
131 XVisualInfo vinfo;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
132 unsigned long xswamask;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
133 int r, g, b;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
134
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
135 if (mga_init(width, height, format))
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
136 return -1; // ioctl errors?
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
137
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
138 aspect_save_orig(width, height);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
139 aspect_save_prescale(d_width, d_height);
18116
d75953576ae4 Fix and improve xinerama support
reimar
parents: 16171
diff changeset
140 update_xinerama_info();
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
141
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
142 mvWidth = width;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
143 mvHeight = height;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
144
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
145 vo_panscan_x = vo_panscan_y = vo_panscan_amount = 0;
2249
48f0ac1e9d13 Update to new (cleaner, more bugfree, better) aspect api. vo_gl vo_gl2 and vo_xmga are untested!
atmos4
parents: 2057
diff changeset
146
18509
94965d83e2b6 do aspect correction of video size before calculating vo_dx and vo_dy.
reimar
parents: 18116
diff changeset
147 aspect(&d_width, &d_height, A_NOZOOM);
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
148 vo_dx = (vo_screenwidth - d_width) / 2;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
149 vo_dy = (vo_screenheight - d_height) / 2;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
150 geometry(&vo_dx, &vo_dy, &d_width, &d_height, vo_screenwidth,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
151 vo_screenheight);
18116
d75953576ae4 Fix and improve xinerama support
reimar
parents: 16171
diff changeset
152 vo_dx += xinerama_x;
d75953576ae4 Fix and improve xinerama support
reimar
parents: 16171
diff changeset
153 vo_dy += xinerama_y;
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
154 vo_dwidth = d_width;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
155 vo_dheight = d_height;
6307
72c87b2ec779 added panscan support for xmga/xvidix
pontscho
parents: 6296
diff changeset
156
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
157 r = (vo_colorkey & 0x00ff0000) >> 16;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
158 g = (vo_colorkey & 0x0000ff00) >> 8;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
159 b = vo_colorkey & 0x000000ff;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
160 switch (vo_depthonscreen)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
161 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
162 case 32:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
163 colorkey = vo_colorkey;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
164 break;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
165 case 24:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
166 colorkey = vo_colorkey & 0x00ffffff;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
167 break;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
168 case 16:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
169 colorkey = ((r >> 3) << 11) | ((g >> 2) << 5) | (b >> 3);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
170 break;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
171 case 15:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
172 colorkey = ((r >> 3) << 10) | ((g >> 3) << 5) | (b >> 3);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
173 break;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
174 default:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
175 mp_msg(MSGT_VO, MSGL_ERR,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
176 "Sorry, this (%d) color depth not supported.\n",
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
177 vo_depthonscreen);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
178 return -1;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
179 }
13946
e632b43f0598 Reduce excessive verbosity.
diego
parents: 13787
diff changeset
180 mp_msg(MSGT_VO, MSGL_V, "Using colorkey: %x\n", colorkey);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
181
25962
afa125da85cf typo fix: inited --> initialized
diego
parents: 25220
diff changeset
182 initialized = 1;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
183
27343
5fe6a8adf569 Rename two GUI-related preprocessor directives:
diego
parents: 25962
diff changeset
184 #ifdef CONFIG_GUI
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
185 if (use_gui)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
186 guiGetEvent(guiSetShVideo, 0); // the GUI will set up / resize the window
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
187 else
5985
cb393303865d the Right Fix for gui window setup
arpi
parents: 5975
diff changeset
188 #endif
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
189 {
15212
05aa13cdf92f replace VO and VF numeric flags with #defined identifiers
henry
parents: 13946
diff changeset
190 if (flags & VOFLAG_FULLSCREEN)
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
191 aspect(&dwidth, &dheight, A_ZOOM);
723
c3e0bdb64027 add gui support
pontscho
parents: 616
diff changeset
192
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
193 XGetWindowAttributes(mDisplay, mRootWin, &attribs);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
194 mDepth = attribs.depth;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
195 if (mDepth != 15 && mDepth != 16 && mDepth != 24 && mDepth != 32)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
196 mDepth = 24;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
197 XMatchVisualInfo(mDisplay, mScreen, mDepth, TrueColor, &vinfo);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
198 xWAttribs.colormap =
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
199 XCreateColormap(mDisplay, mRootWin, vinfo.visual, AllocNone);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
200 xWAttribs.background_pixel = 0;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
201 xWAttribs.border_pixel = 0;
27927
6f199f065e15 Factor common code like -wid handling, vo_gc creation etc. out into
reimar
parents: 27903
diff changeset
202 xswamask = CWBackPixel | CWBorderPixel | CWColormap;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
203
23655
00aa61cde84a Make X11 window creation and (with -fixed-vo) management simpler and more
reimar
parents: 23077
diff changeset
204 vo_x11_create_vo_window(&vinfo, vo_dx, vo_dy, d_width, d_height,
23822
attila
parents: 23656
diff changeset
205 flags, xWAttribs.colormap, "xmga", title);
24348
f96e42d494f9 Fix borders for xmga broken by r23675. Tested by Diego.
reimar
parents: 23822
diff changeset
206 XChangeWindowAttributes(mDisplay, vo_window, xswamask, &xWAttribs);
7679
e4e70b0e1786 some cleanup
arpi
parents: 7472
diff changeset
207
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
208 } // !GUI
7679
e4e70b0e1786 some cleanup
arpi
parents: 7472
diff changeset
209
15212
05aa13cdf92f replace VO and VF numeric flags with #defined identifiers
henry
parents: 13946
diff changeset
210 if ((flags & VOFLAG_FULLSCREEN) && (!WinID))
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
211 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
212 vo_dx = 0;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
213 vo_dy = 0;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
214 vo_dwidth = vo_screenwidth;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
215 vo_dheight = vo_screenheight;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
216 vo_fs = 1;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
217 }
7679
e4e70b0e1786 some cleanup
arpi
parents: 7472
diff changeset
218
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
219 panscan_calc();
6755
a31b9f15cbff - fix audio equalizer
pontscho
parents: 6382
diff changeset
220
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
221 mga_vid_config.colkey_on = 1;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
222 mga_vid_config.colkey_red = r;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
223 mga_vid_config.colkey_green = g;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
224 mga_vid_config.colkey_blue = b;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
225
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
226 set_window(); // set up mga_vid_config.dest_width etc
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 XSync(mDisplay, False);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
229
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
230 ioctl(f, MGA_VID_ON, 0);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
231
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
232 return 0;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
233 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
234
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
235 static void uninit(void)
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 mp_msg(MSGT_VO, MSGL_V, "vo: uninit!\n");
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
238 mga_uninit();
25962
afa125da85cf typo fix: inited --> initialized
diego
parents: 25220
diff changeset
239 if (!initialized)
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
240 return; // no window?
25962
afa125da85cf typo fix: inited --> initialized
diego
parents: 25220
diff changeset
241 initialized = 0;
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11542
diff changeset
242 vo_x11_uninit(); // destroy the window
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
243 }