annotate libvo/vo_x11.c @ 13249:a6642a4330fa

ensure that avi files have a valid header as soon as possible. without this, the header says 0x0 video size, which works with mplayer when the video size is stored in the codec data, but it does NOT work with other players or with codecs that don't store size (e.g. snow). actually i don't like having seeks in the muxer module, but i don't know any other way to implement this fix without major changes to mencoder. if you have a better fix, please reverse this and commit yours.
author rfelker
date Sun, 05 Sep 2004 16:51:15 +0000
parents 1c2f6de431bf
children e047e70a9767
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
2 #include <stdio.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
3 #include <stdlib.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
4 #include <string.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
5 #include <signal.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
6
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
7 #include "config.h"
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
8 #include "video_out.h"
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
9 #include "video_out_internal.h"
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
10
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
11
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
12 #include <X11/Xlib.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
13 #include <X11/Xutil.h>
4036
76ea6f97ebb7 added rgb24to32 instead of c converter
alex
parents: 4017
diff changeset
14
206
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
15 #ifdef HAVE_XF86VM
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
16 #include <X11/extensions/xf86vmode.h>
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
17 #endif
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
18 #include <errno.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
19
31
1fc618eba830 added check_events() interface
arpi_esp
parents: 1
diff changeset
20 #include "x11_common.h"
1fc618eba830 added check_events() interface
arpi_esp
parents: 1
diff changeset
21
11690
860bc06f32ca just the same include reordering as in vo_xv (codemetics :)
alex
parents: 11542
diff changeset
22 #ifdef HAVE_SHM
860bc06f32ca just the same include reordering as in vo_xv (codemetics :)
alex
parents: 11542
diff changeset
23 #include <sys/ipc.h>
860bc06f32ca just the same include reordering as in vo_xv (codemetics :)
alex
parents: 11542
diff changeset
24 #include <sys/shm.h>
860bc06f32ca just the same include reordering as in vo_xv (codemetics :)
alex
parents: 11542
diff changeset
25 #include <X11/extensions/XShm.h>
860bc06f32ca just the same include reordering as in vo_xv (codemetics :)
alex
parents: 11542
diff changeset
26
860bc06f32ca just the same include reordering as in vo_xv (codemetics :)
alex
parents: 11542
diff changeset
27 static int Shmem_Flag;
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
28
11690
860bc06f32ca just the same include reordering as in vo_xv (codemetics :)
alex
parents: 11542
diff changeset
29 //static int Quiet_Flag; Here also what is this for. It's used but isn't inited ?
860bc06f32ca just the same include reordering as in vo_xv (codemetics :)
alex
parents: 11542
diff changeset
30 static XShmSegmentInfo Shminfo[1];
860bc06f32ca just the same include reordering as in vo_xv (codemetics :)
alex
parents: 11542
diff changeset
31 static int gXErrorFlag;
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
32 static int CompletionType = -1;
11690
860bc06f32ca just the same include reordering as in vo_xv (codemetics :)
alex
parents: 11542
diff changeset
33
860bc06f32ca just the same include reordering as in vo_xv (codemetics :)
alex
parents: 11542
diff changeset
34 /* since it doesn't seem to be defined on some platforms */
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
35 int XShmGetEventBase(Display *);
11690
860bc06f32ca just the same include reordering as in vo_xv (codemetics :)
alex
parents: 11542
diff changeset
36 #endif
860bc06f32ca just the same include reordering as in vo_xv (codemetics :)
alex
parents: 11542
diff changeset
37
354
7de9e48c83a5 memcpy() moved mmx.h -> fastmemcpy.h
arpi_esp
parents: 350
diff changeset
38 #include "fastmemcpy.h"
616
41d6eec69b60 clean up
pontscho
parents: 614
diff changeset
39 #include "sub.h"
350
601822cc8c52 applied MMX2 memcpy() patch by Nick Kurshev
arpi_esp
parents: 326
diff changeset
40
2218
d9ea650b2c24 yv12 scaling at 24/32bpp with -zoom
arpi
parents: 2094
diff changeset
41 #include "../postproc/swscale.h"
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
42 #include "../postproc/swscale_internal.h" //FIXME
2556
71934dc06490 Using new stuff of rgb15to16
nick
parents: 2519
diff changeset
43 #include "../postproc/rgb2rgb.h"
10233
35f52ad860a0 vf_scale.h & related cleanup & some small warning fix by dominik
michael
parents: 10212
diff changeset
44 #include "../libmpcodecs/vf_scale.h"
2218
d9ea650b2c24 yv12 scaling at 24/32bpp with -zoom
arpi
parents: 2094
diff changeset
45
4734
cc375edb5eda added support for runtime fullscreen switching
alex
parents: 4726
diff changeset
46 #include "../mp_msg.h"
cc375edb5eda added support for runtime fullscreen switching
alex
parents: 4726
diff changeset
47
6013
7f6e02a16ac4 some bugfix, x[11|mga|v] ( fullscreen with more files )
pontscho
parents: 5999
diff changeset
48 #ifdef HAVE_NEW_GUI
7f6e02a16ac4 some bugfix, x[11|mga|v] ( fullscreen with more files )
pontscho
parents: 5999
diff changeset
49 #include "../Gui/interface.h"
7f6e02a16ac4 some bugfix, x[11|mga|v] ( fullscreen with more files )
pontscho
parents: 5999
diff changeset
50 #include "../mplayer.h"
7f6e02a16ac4 some bugfix, x[11|mga|v] ( fullscreen with more files )
pontscho
parents: 5999
diff changeset
51 #endif
7f6e02a16ac4 some bugfix, x[11|mga|v] ( fullscreen with more files )
pontscho
parents: 5999
diff changeset
52
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
53 static vo_info_t info = {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
54 "X11 ( XImage/Shm )",
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
55 "x11",
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
56 "Aaron Holtzman <aholtzma@ess.engr.uvic.ca>",
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
57 ""
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
58 };
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
59
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
60 LIBVO_EXTERN(x11)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
61 /* private prototypes */
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
62 static void Display_Image(XImage * myximage, unsigned char *ImageData);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
63 static void (*draw_alpha_fnc) (int x0, int y0, int w, int h,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
64 unsigned char *src, unsigned char *srca,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
65 int stride);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
66
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
67 /* local data */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
68 static unsigned char *ImageData;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
69
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
70 /* X11 related variables */
7764
13c36b2d1d45 -fixed-vo support
pontscho
parents: 7689
diff changeset
71 static XImage *myximage = NULL;
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
72 static int depth, bpp, mode;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
73 static XWindowAttributes attribs;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
74
10757
3aea64e0d6d9 Avoid flickering during resizes. Keep video contents even when paused. Fix by Tomas Simonaitis <haden@homelan.lt>
mosu
parents: 10728
diff changeset
75 static int int_pause;
3aea64e0d6d9 Avoid flickering during resizes. Keep video contents even when paused. Fix by Tomas Simonaitis <haden@homelan.lt>
mosu
parents: 10728
diff changeset
76
2969
291f45785de9 fix to compile when SHM is disabled
alex
parents: 2732
diff changeset
77 static int Flip_Flag;
4661
4df2400b0527 -fs and or -vm default is nozoom, -zoom does the expected thing
michael
parents: 4658
diff changeset
78 static int zoomFlag;
2969
291f45785de9 fix to compile when SHM is disabled
alex
parents: 2732
diff changeset
79
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
80
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
81 static uint32_t image_width;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
82 static uint32_t image_height;
4641
b7f340349470 allways use swScaler
michael
parents: 4627
diff changeset
83 static uint32_t in_format;
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
84 static uint32_t out_format = 0;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
85 static int srcW = -1;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
86 static int srcH = -1;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
87 static int aspect; // 1<<16 based fixed point aspect, so that the aspect stays correct during resizing
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
88
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
89 static int old_vo_dwidth = -1;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
90 static int old_vo_dheight = -1;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
91
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
92 static void check_events()
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
93 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
94 int ret = vo_x11_check_events(mDisplay);
6013
7f6e02a16ac4 some bugfix, x[11|mga|v] ( fullscreen with more files )
pontscho
parents: 5999
diff changeset
95
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
96 /* clear left over borders and redraw frame if we are paused */
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
97 if (ret & VO_EVENT_EXPOSE && int_pause)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
98 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
99 vo_x11_clearwindow_part(mDisplay, vo_window, myximage->width,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
100 myximage->height, 0);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
101 flip_page();
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
102 } else if ((ret & VO_EVENT_RESIZE) || (ret & VO_EVENT_EXPOSE))
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
103 vo_x11_clearwindow_part(mDisplay, vo_window, myximage->width,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
104 myximage->height, 0);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
105
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
106 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
107
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
108 static void draw_alpha_32(int x0, int y0, int w, int h, unsigned char *src,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
109 unsigned char *srca, int stride)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
110 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
111 vo_draw_alpha_rgb32(w, h, src, srca, stride,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
112 ImageData + 4 * (y0 * image_width + x0),
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
113 4 * image_width);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
114 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
115
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
116 static void draw_alpha_24(int x0, int y0, int w, int h, unsigned char *src,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
117 unsigned char *srca, int stride)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
118 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
119 vo_draw_alpha_rgb24(w, h, src, srca, stride,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
120 ImageData + 3 * (y0 * image_width + x0),
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
121 3 * image_width);
1647
22480104ddfd added draw_alpha_XXXX functions, draw_alpha_func<=correct one in init
atlka
parents: 1501
diff changeset
122 }
22480104ddfd added draw_alpha_XXXX functions, draw_alpha_func<=correct one in init
atlka
parents: 1501
diff changeset
123
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
124 static void draw_alpha_16(int x0, int y0, int w, int h, unsigned char *src,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
125 unsigned char *srca, int stride)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
126 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
127 vo_draw_alpha_rgb16(w, h, src, srca, stride,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
128 ImageData + 2 * (y0 * image_width + x0),
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
129 2 * image_width);
1647
22480104ddfd added draw_alpha_XXXX functions, draw_alpha_func<=correct one in init
atlka
parents: 1501
diff changeset
130 }
22480104ddfd added draw_alpha_XXXX functions, draw_alpha_func<=correct one in init
atlka
parents: 1501
diff changeset
131
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
132 static void draw_alpha_15(int x0, int y0, int w, int h, unsigned char *src,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
133 unsigned char *srca, int stride)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
134 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
135 vo_draw_alpha_rgb15(w, h, src, srca, stride,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
136 ImageData + 2 * (y0 * image_width + x0),
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
137 2 * image_width);
1647
22480104ddfd added draw_alpha_XXXX functions, draw_alpha_func<=correct one in init
atlka
parents: 1501
diff changeset
138 }
22480104ddfd added draw_alpha_XXXX functions, draw_alpha_func<=correct one in init
atlka
parents: 1501
diff changeset
139
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
140 static void draw_alpha_null(int x0, int y0, int w, int h,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
141 unsigned char *src, unsigned char *srca,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
142 int stride)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
143 {
1647
22480104ddfd added draw_alpha_XXXX functions, draw_alpha_func<=correct one in init
atlka
parents: 1501
diff changeset
144 }
22480104ddfd added draw_alpha_XXXX functions, draw_alpha_func<=correct one in init
atlka
parents: 1501
diff changeset
145
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
146 static SwsContext *swsContext = NULL;
4420
a7bac05524a1 real window resizeing support (i know nearly nothing about x11 so feel free to fix / reverse it, if its broken)
michael
parents: 4382
diff changeset
147 extern int sws_flags;
a7bac05524a1 real window resizeing support (i know nearly nothing about x11 so feel free to fix / reverse it, if its broken)
michael
parents: 4382
diff changeset
148
a7bac05524a1 real window resizeing support (i know nearly nothing about x11 so feel free to fix / reverse it, if its broken)
michael
parents: 4382
diff changeset
149 static XVisualInfo vinfo;
a7bac05524a1 real window resizeing support (i know nearly nothing about x11 so feel free to fix / reverse it, if its broken)
michael
parents: 4382
diff changeset
150
a7bac05524a1 real window resizeing support (i know nearly nothing about x11 so feel free to fix / reverse it, if its broken)
michael
parents: 4382
diff changeset
151 static void getMyXImage()
a7bac05524a1 real window resizeing support (i know nearly nothing about x11 so feel free to fix / reverse it, if its broken)
michael
parents: 4382
diff changeset
152 {
a7bac05524a1 real window resizeing support (i know nearly nothing about x11 so feel free to fix / reverse it, if its broken)
michael
parents: 4382
diff changeset
153 #ifdef HAVE_SHM
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
154 if (mLocalDisplay && XShmQueryExtension(mDisplay))
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
155 Shmem_Flag = 1;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
156 else
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
157 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
158 Shmem_Flag = 0;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
159 mp_msg(MSGT_VO, MSGL_WARN,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
160 "Shared memory not supported\nReverting to normal Xlib\n");
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
161 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
162 if (Shmem_Flag)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
163 CompletionType = XShmGetEventBase(mDisplay) + ShmCompletion;
4420
a7bac05524a1 real window resizeing support (i know nearly nothing about x11 so feel free to fix / reverse it, if its broken)
michael
parents: 4382
diff changeset
164
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
165 if (Shmem_Flag)
4420
a7bac05524a1 real window resizeing support (i know nearly nothing about x11 so feel free to fix / reverse it, if its broken)
michael
parents: 4382
diff changeset
166 {
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
167 myximage =
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
168 XShmCreateImage(mDisplay, vinfo.visual, depth, ZPixmap, NULL,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
169 &Shminfo[0], image_width, image_height);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
170 if (myximage == NULL)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
171 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
172 if (myximage != NULL)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
173 XDestroyImage(myximage);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
174 mp_msg(MSGT_VO, MSGL_WARN,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
175 "Shared memory error,disabling ( Ximage error )\n");
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
176 goto shmemerror;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
177 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
178 Shminfo[0].shmid = shmget(IPC_PRIVATE,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
179 myximage->bytes_per_line *
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
180 myximage->height, IPC_CREAT | 0777);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
181 if (Shminfo[0].shmid < 0)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
182 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
183 XDestroyImage(myximage);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
184 mp_msg(MSGT_VO, MSGL_V, "%s\n", strerror(errno));
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
185 //perror( strerror( errno ) );
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
186 mp_msg(MSGT_VO, MSGL_WARN,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
187 "Shared memory error,disabling ( seg id error )\n");
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
188 goto shmemerror;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
189 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
190 Shminfo[0].shmaddr = (char *) shmat(Shminfo[0].shmid, 0, 0);
3209
0b172eb639f1 swscaler cleanup
michael
parents: 3003
diff changeset
191
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
192 if (Shminfo[0].shmaddr == ((char *) -1))
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
193 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
194 XDestroyImage(myximage);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
195 if (Shminfo[0].shmaddr != ((char *) -1))
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
196 shmdt(Shminfo[0].shmaddr);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
197 mp_msg(MSGT_VO, MSGL_WARN,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
198 "Shared memory error,disabling ( address error )\n");
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
199 goto shmemerror;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
200 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
201 myximage->data = Shminfo[0].shmaddr;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
202 ImageData = (unsigned char *) myximage->data;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
203 Shminfo[0].readOnly = False;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
204 XShmAttach(mDisplay, &Shminfo[0]);
4420
a7bac05524a1 real window resizeing support (i know nearly nothing about x11 so feel free to fix / reverse it, if its broken)
michael
parents: 4382
diff changeset
205
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
206 XSync(mDisplay, False);
4420
a7bac05524a1 real window resizeing support (i know nearly nothing about x11 so feel free to fix / reverse it, if its broken)
michael
parents: 4382
diff changeset
207
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
208 if (gXErrorFlag)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
209 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
210 XDestroyImage(myximage);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
211 shmdt(Shminfo[0].shmaddr);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
212 mp_msg(MSGT_VO, MSGL_WARN, "Shared memory error,disabling.\n");
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
213 gXErrorFlag = 0;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
214 goto shmemerror;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
215 } else
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
216 shmctl(Shminfo[0].shmid, IPC_RMID, 0);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
217
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
218 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
219 static int firstTime = 1;
4420
a7bac05524a1 real window resizeing support (i know nearly nothing about x11 so feel free to fix / reverse it, if its broken)
michael
parents: 4382
diff changeset
220
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
221 if (firstTime)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
222 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
223 mp_msg(MSGT_VO, MSGL_V, "Sharing memory.\n");
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
224 firstTime = 0;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
225 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
226 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
227 } else
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
228 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
229 shmemerror:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
230 Shmem_Flag = 0;
4420
a7bac05524a1 real window resizeing support (i know nearly nothing about x11 so feel free to fix / reverse it, if its broken)
michael
parents: 4382
diff changeset
231 #endif
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
232 myximage = XGetImage(mDisplay, vo_window, 0, 0,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
233 image_width, image_height, AllPlanes,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
234 ZPixmap);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
235 ImageData = myximage->data;
4420
a7bac05524a1 real window resizeing support (i know nearly nothing about x11 so feel free to fix / reverse it, if its broken)
michael
parents: 4382
diff changeset
236 #ifdef HAVE_SHM
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
237 }
4420
a7bac05524a1 real window resizeing support (i know nearly nothing about x11 so feel free to fix / reverse it, if its broken)
michael
parents: 4382
diff changeset
238 #endif
a7bac05524a1 real window resizeing support (i know nearly nothing about x11 so feel free to fix / reverse it, if its broken)
michael
parents: 4382
diff changeset
239 }
a7bac05524a1 real window resizeing support (i know nearly nothing about x11 so feel free to fix / reverse it, if its broken)
michael
parents: 4382
diff changeset
240
a7bac05524a1 real window resizeing support (i know nearly nothing about x11 so feel free to fix / reverse it, if its broken)
michael
parents: 4382
diff changeset
241 static void freeMyXImage()
a7bac05524a1 real window resizeing support (i know nearly nothing about x11 so feel free to fix / reverse it, if its broken)
michael
parents: 4382
diff changeset
242 {
a7bac05524a1 real window resizeing support (i know nearly nothing about x11 so feel free to fix / reverse it, if its broken)
michael
parents: 4382
diff changeset
243 #ifdef HAVE_SHM
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
244 if (Shmem_Flag)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
245 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
246 XShmDetach(mDisplay, &Shminfo[0]);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
247 XDestroyImage(myximage);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
248 shmdt(Shminfo[0].shmaddr);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
249 } else
4420
a7bac05524a1 real window resizeing support (i know nearly nothing about x11 so feel free to fix / reverse it, if its broken)
michael
parents: 4382
diff changeset
250 #endif
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
251 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
252 XDestroyImage(myximage);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
253 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
254 myximage = NULL;
4420
a7bac05524a1 real window resizeing support (i know nearly nothing about x11 so feel free to fix / reverse it, if its broken)
michael
parents: 4382
diff changeset
255 }
2218
d9ea650b2c24 yv12 scaling at 24/32bpp with -zoom
arpi
parents: 2094
diff changeset
256
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
257 static uint32_t config(uint32_t width, uint32_t height, uint32_t d_width,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
258 uint32_t d_height, uint32_t flags, char *title,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
259 uint32_t format)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
260 {
1110
71b8911ec3da -Wall like cleanup
al3x
parents: 922
diff changeset
261 // int screen;
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
262 int fullscreen = 0;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
263 int vm = 0;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
264
1110
71b8911ec3da -Wall like cleanup
al3x
parents: 922
diff changeset
265 // int interval, prefer_blank, allow_exp, nothing;
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
266 unsigned int fg, bg;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
267 XEvent xev;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
268 XGCValues xgcv;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
269 Colormap theCmap;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
270 XSetWindowAttributes xswa;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
271 unsigned long xswamask;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
272
4426
1ceadec3ea67 using the common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4420
diff changeset
273 #ifdef HAVE_XF86VM
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
274 unsigned int modeline_width, modeline_height;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
275 static uint32_t vm_width;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
276 static uint32_t vm_height;
4426
1ceadec3ea67 using the common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4420
diff changeset
277 #endif
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
278
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
279 vo_mouse_autohide = 1;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
280 old_vo_dwidth = -1;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
281 old_vo_dheight = -1;
6013
7f6e02a16ac4 some bugfix, x[11|mga|v] ( fullscreen with more files )
pontscho
parents: 5999
diff changeset
282
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
283 if (!title)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
284 title = strdup("MPlayer X11 (XImage/Shm) render");
4813
15e95b9cf191 using vo_dx, vo_dy
alex
parents: 4808
diff changeset
285
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
286 in_format = format;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
287 srcW = width;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
288 srcH = height;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
289 vo_dx = (vo_screenwidth - d_width) / 2;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
290 vo_dy = (vo_screenheight - d_height) / 2;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
291 geometry(&vo_dx, &vo_dy, &d_width, &d_height, vo_screenwidth,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
292 vo_screenheight);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
293 vo_dwidth = d_width;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
294 vo_dheight = d_height;
10757
3aea64e0d6d9 Avoid flickering during resizes. Keep video contents even when paused. Fix by Tomas Simonaitis <haden@homelan.lt>
mosu
parents: 10728
diff changeset
295
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
296 if (flags & 0x03)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
297 fullscreen = 1;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
298 if (flags & 0x02)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
299 vm = 1;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
300 if (flags & 0x08)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
301 Flip_Flag = 1;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
302 zoomFlag = flags & 0x04;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
303
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
304 int_pause = 0;
4677
305a0c20bde4 default is allways nozoom again (specify -zoom if u want the sane behavior)
michael
parents: 4662
diff changeset
305 // if(!fullscreen) zoomFlag=1; //it makes no sense to avoid zooming on windowd mode
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
306
2218
d9ea650b2c24 yv12 scaling at 24/32bpp with -zoom
arpi
parents: 2094
diff changeset
307 //printf( "w: %d h: %d\n\n",vo_dwidth,vo_dheight );
1746
6e7da6f362ab add half gui support
pontscho
parents: 1647
diff changeset
308
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
309 XGetWindowAttributes(mDisplay, mRootWin, &attribs);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
310 depth = attribs.depth;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
311
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
312 if (depth != 15 && depth != 16 && depth != 24 && depth != 32)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
313 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
314 Visual *visual;
1746
6e7da6f362ab add half gui support
pontscho
parents: 1647
diff changeset
315
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
316 depth = vo_find_depth_from_visuals(mDisplay, mScreen, &visual);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
317 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
318 if (!XMatchVisualInfo(mDisplay, mScreen, depth, DirectColor, &vinfo) ||
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
319 (WinID > 0
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
320 && vinfo.visualid != XVisualIDFromVisual(attribs.visual)))
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
321 XMatchVisualInfo(mDisplay, mScreen, depth, TrueColor, &vinfo);
1746
6e7da6f362ab add half gui support
pontscho
parents: 1647
diff changeset
322
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
323 /* set image size (which is indeed neither the input nor output size),
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
324 if zoom is on it will be changed during draw_slice anyway so we don't duplicate the aspect code here
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
325 */
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
326 image_width = (width + 7) & (~7);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
327 image_height = height;
4661
4df2400b0527 -fs and or -vm default is nozoom, -zoom does the expected thing
michael
parents: 4658
diff changeset
328
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
329 aspect = ((1 << 16) * d_width + d_height / 2) / d_height;
2218
d9ea650b2c24 yv12 scaling at 24/32bpp with -zoom
arpi
parents: 2094
diff changeset
330
1752
39fc6cc71b3b vo_window bug fixed
pontscho
parents: 1746
diff changeset
331 #ifdef HAVE_NEW_GUI
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
332 if (use_gui)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
333 guiGetEvent(guiSetShVideo, 0); // the GUI will set up / resize the window
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
334 else
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
335 #endif
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
336 {
2094
dc11de07b5e7 grabs mouse with -vm - patch by Uwe Reder <Uwe.Reder@3SOFT.de>
arpi
parents: 1924
diff changeset
337 #ifdef HAVE_XF86VM
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
338 if (vm)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
339 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
340 if ((d_width == 0) && (d_height == 0))
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
341 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
342 vm_width = image_width;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
343 vm_height = image_height;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
344 } else
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
345 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
346 vm_width = d_width;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
347 vm_height = d_height;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
348 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
349 vo_vm_switch(vm_width, vm_height, &modeline_width,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
350 &modeline_height);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
351 vo_dx = (vo_screenwidth - modeline_width) / 2;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
352 vo_dy = (vo_screenheight - modeline_height) / 2;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
353 vo_dwidth = modeline_width;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
354 vo_dheight = modeline_height;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
355 }
2094
dc11de07b5e7 grabs mouse with -vm - patch by Uwe Reder <Uwe.Reder@3SOFT.de>
arpi
parents: 1924
diff changeset
356 #endif
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
357 bg = WhitePixel(mDisplay, mScreen);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
358 fg = BlackPixel(mDisplay, mScreen);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
359
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
360 theCmap = vo_x11_create_colormap(&vinfo);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
361
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
362 xswa.background_pixel = 0;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
363 xswa.border_pixel = 0;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
364 xswa.colormap = theCmap;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
365 xswamask = CWBackPixel | CWBorderPixel | CWColormap;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
366
2094
dc11de07b5e7 grabs mouse with -vm - patch by Uwe Reder <Uwe.Reder@3SOFT.de>
arpi
parents: 1924
diff changeset
367 #ifdef HAVE_XF86VM
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
368 if (vm)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
369 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
370 xswa.override_redirect = True;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
371 xswamask |= CWOverrideRedirect;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
372 }
2094
dc11de07b5e7 grabs mouse with -vm - patch by Uwe Reder <Uwe.Reder@3SOFT.de>
arpi
parents: 1924
diff changeset
373 #endif
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
374
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
375 if (WinID >= 0)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
376 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
377 vo_window = WinID ? ((Window) WinID) : mRootWin;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
378 if (WinID)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
379 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
380 XUnmapWindow(mDisplay, vo_window);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
381 XChangeWindowAttributes(mDisplay, vo_window, xswamask,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
382 &xswa);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
383 vo_x11_selectinput_witherr(mDisplay, vo_window,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
384 StructureNotifyMask |
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
385 KeyPressMask |
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
386 PropertyChangeMask |
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
387 PointerMotionMask |
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
388 ButtonPressMask |
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
389 ButtonReleaseMask |
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
390 ExposureMask);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
391 XMapWindow(mDisplay, vo_window);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
392 } else
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
393 XSelectInput(mDisplay, vo_window, ExposureMask);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
394 } else
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
395 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
396 if (vo_window == None)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
397 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
398 vo_window =
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
399 vo_x11_create_smooth_window(mDisplay, mRootWin,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
400 vinfo.visual, vo_dx, vo_dy,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
401 vo_dwidth, vo_dheight,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
402 depth, theCmap);
2094
dc11de07b5e7 grabs mouse with -vm - patch by Uwe Reder <Uwe.Reder@3SOFT.de>
arpi
parents: 1924
diff changeset
403
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
404 vo_x11_classhint(mDisplay, vo_window, "x11");
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
405 vo_hidecursor(mDisplay, vo_window);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
406 vo_x11_sizehint(vo_dx, vo_dy, vo_dwidth, vo_dheight, 0);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
407 XSelectInput(mDisplay, vo_window, StructureNotifyMask);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
408 XStoreName(mDisplay, vo_window, title);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
409 XMapWindow(mDisplay, vo_window);
7764
13c36b2d1d45 -fixed-vo support
pontscho
parents: 7689
diff changeset
410 // if(WinID!=0)
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
411 do
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
412 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
413 XNextEvent(mDisplay, &xev);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
414 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
415 while (xev.type != MapNotify
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
416 || xev.xmap.event != vo_window);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
417
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
418 if (fullscreen)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
419 vo_x11_fullscreen();
6043
421781c5b128 fix some small bug and -rootwin
pontscho
parents: 6025
diff changeset
420 #ifdef HAVE_XINERAMA
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
421 vo_x11_xinerama_move(mDisplay, vo_window);
6043
421781c5b128 fix some small bug and -rootwin
pontscho
parents: 6025
diff changeset
422 #endif
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
423 } else if (!fullscreen)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
424 XMoveResizeWindow(mDisplay, vo_window, vo_dx, vo_dy,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
425 vo_dwidth, vo_dheight);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
426 }
6043
421781c5b128 fix some small bug and -rootwin
pontscho
parents: 6025
diff changeset
427
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
428 XSync(mDisplay, False);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
429
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
430 // we cannot grab mouse events on root window :(
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
431 vo_x11_selectinput_witherr(mDisplay, vo_window,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
432 StructureNotifyMask | KeyPressMask |
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
433 PropertyChangeMask | ExposureMask |
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
434 ((WinID ==
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
435 0) ? 0 : (ButtonPressMask |
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
436 ButtonReleaseMask |
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
437 PointerMotionMask)));
4805
79b753e2e84a mondom fix bazmeg.
pontscho
parents: 4804
diff changeset
438
2094
dc11de07b5e7 grabs mouse with -vm - patch by Uwe Reder <Uwe.Reder@3SOFT.de>
arpi
parents: 1924
diff changeset
439 #ifdef HAVE_XF86VM
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
440 if (vm)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
441 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
442 /* Grab the mouse pointer in our window */
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
443 if (vo_grabpointer)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
444 XGrabPointer(mDisplay, vo_window, True, 0,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
445 GrabModeAsync, GrabModeAsync,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
446 vo_window, None, CurrentTime);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
447 XSetInputFocus(mDisplay, vo_window, RevertToNone, CurrentTime);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
448 }
2094
dc11de07b5e7 grabs mouse with -vm - patch by Uwe Reder <Uwe.Reder@3SOFT.de>
arpi
parents: 1924
diff changeset
449 #endif
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
450 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
451
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
452 if (vo_gc != None)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
453 XFreeGC(mDisplay, vo_gc);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
454 vo_gc = XCreateGC(mDisplay, vo_window, 0L, &xgcv);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
455
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
456 if (myximage)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
457 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
458 freeMyXImage();
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
459 sws_freeContext(swsContext);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
460 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
461 getMyXImage();
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
462
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
463 if (!WinID)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
464 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
465 vo_dwidth = vo_screenwidth;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
466 vo_dheight = vo_screenheight;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
467 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
468
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
469 switch ((bpp = myximage->bits_per_pixel))
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
470 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
471 case 24:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
472 draw_alpha_fnc = draw_alpha_24;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
473 out_format = IMGFMT_BGR24;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
474 break;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
475 case 32:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
476 draw_alpha_fnc = draw_alpha_32;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
477 out_format = IMGFMT_BGR32;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
478 break;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
479 case 15:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
480 case 16:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
481 if (depth == 15)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
482 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
483 draw_alpha_fnc = draw_alpha_15;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
484 out_format = IMGFMT_BGR15;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
485 } else
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
486 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
487 draw_alpha_fnc = draw_alpha_16;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
488 out_format = IMGFMT_BGR16;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
489 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
490 break;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
491 case 8:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
492 draw_alpha_fnc = draw_alpha_null;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
493 out_format = IMGFMT_BGR8;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
494 break;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
495 default:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
496 draw_alpha_fnc = draw_alpha_null;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
497 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
498
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
499 /* always allocate swsContext as size could change between frames */
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
500 swsContext =
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
501 sws_getContextFromCmdLine(width, height, in_format, width, height,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
502 out_format);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
503 if (!swsContext)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
504 return -1;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
505
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
506 //printf( "X11 bpp: %d color mask: R:%lX G:%lX B:%lX\n",bpp,myximage->red_mask,myximage->green_mask,myximage->blue_mask );
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
507
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
508 // If we have blue in the lowest bit then obviously RGB
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
509 mode = ((myximage->blue_mask & 0x01) != 0) ? MODE_RGB : MODE_BGR;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
510 #ifdef WORDS_BIGENDIAN
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
511 if (myximage->byte_order != MSBFirst)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
512 #else
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
513 if (myximage->byte_order != LSBFirst)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
514 #endif
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
515 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
516 mode = ((myximage->blue_mask & 0x01) != 0) ? MODE_BGR : MODE_RGB;
4382
2f540642e44d small typos in text
pl
parents: 4352
diff changeset
517 // printf( "No support for non-native XImage byte order!\n" );
1137
4c7b219e126c patch: some X11 compliance fixed: set ClassHint and better fullscreen mode
arpi_esp
parents: 1110
diff changeset
518 // return -1;
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
519 }
5248
f23cea00d19c print meaningfull error message instead of "hmm, arpi said that isnt used...
michael
parents: 5163
diff changeset
520 #ifdef WORDS_BIGENDIAN
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
521 if (mode == MODE_BGR && bpp != 32)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
522 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
523 mp_msg(MSGT_VO, MSGL_ERR,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
524 "BGR%d not supported, please contact the developers\n",
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
525 bpp);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
526 return -1;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
527 }
5248
f23cea00d19c print meaningfull error message instead of "hmm, arpi said that isnt used...
michael
parents: 5163
diff changeset
528 #else
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
529 if (mode == MODE_BGR)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
530 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
531 mp_msg(MSGT_VO, MSGL_ERR,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
532 "BGR not supported, please contact the developers\n");
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
533 return -1;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
534 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
535 #endif
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
536
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
537 if (vo_ontop)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
538 vo_x11_setlayer(mDisplay, vo_window, vo_ontop);
11542
85e503ddf65f runtime 'stay-on-top' functionality
joey
parents: 11000
diff changeset
539
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
540 return 0;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
541 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
542
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
543 static void Display_Image(XImage * myximage, uint8_t * ImageData)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
544 {
3003
16a593a1e6ed changed SH_MEM to HAVE_SHM according to configure
alex
parents: 2969
diff changeset
545 #ifdef HAVE_SHM
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
546 if (Shmem_Flag)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
547 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
548 XShmPutImage(mDisplay, vo_window, vo_gc, myximage,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
549 0, 0,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
550 (vo_dwidth - swsContext->dstW) / 2,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
551 (vo_dheight - myximage->height) / 2, swsContext->dstW,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
552 myximage->height, True);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
553 } else
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
554 #endif
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
555 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
556 XPutImage(mDisplay, vo_window, vo_gc, myximage,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
557 0, 0,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
558 (vo_dwidth - swsContext->dstW) / 2,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
559 (vo_dheight - myximage->height) / 2, swsContext->dstW,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
560 myximage->height);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
561 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
562 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
563
1501
d40f2b686846 changes according to -utf8 option, draw_osd() function added
atlka
parents: 1137
diff changeset
564 static void draw_osd(void)
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
565 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
566 vo_draw_text(image_width, image_height, draw_alpha_fnc);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
567 }
1501
d40f2b686846 changes according to -utf8 option, draw_osd() function added
atlka
parents: 1137
diff changeset
568
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
569 static void flip_page(void)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
570 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
571 Display_Image(myximage, ImageData);
1501
d40f2b686846 changes according to -utf8 option, draw_osd() function added
atlka
parents: 1137
diff changeset
572 XSync(mDisplay, False);
31
1fc618eba830 added check_events() interface
arpi_esp
parents: 1
diff changeset
573 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
574
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
575 static uint32_t draw_slice(uint8_t * src[], int stride[], int w, int h,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
576 int x, int y)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
577 {
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
578 uint8_t *dst[3];
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
579 int dstStride[3];
6059
c0ae8c0eda72 fix Arpi's bugs
pontscho
parents: 6045
diff changeset
580
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
581 if ((old_vo_dwidth != vo_dwidth
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
582 || old_vo_dheight != vo_dheight) /*&& y==0 */ && zoomFlag)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
583 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
584 int newW = vo_dwidth;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
585 int newH = vo_dheight;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
586 int newAspect = (newW * (1 << 16) + (newH >> 1)) / newH;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
587 SwsContext *oldContext = swsContext;
4641
b7f340349470 allways use swScaler
michael
parents: 4627
diff changeset
588
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
589 if (newAspect > aspect)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
590 newW = (newH * aspect + (1 << 15)) >> 16;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
591 else
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
592 newH = ((newW << 16) + (aspect >> 1)) / aspect;
4641
b7f340349470 allways use swScaler
michael
parents: 4627
diff changeset
593
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
594 old_vo_dwidth = vo_dwidth;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
595 old_vo_dheight = vo_dheight;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
596
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
597 if (sws_flags == 0)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
598 newW &= (~31); // not needed but, if the user wants the FAST_BILINEAR SCALER, then its needed
4627
3db7ee2ac7b0 bgr15 / bgr16 input support (with -zoom)
michael
parents: 4596
diff changeset
599
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
600 swsContext = sws_getContextFromCmdLine(srcW, srcH, in_format,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
601 newW, newH, out_format);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
602 if (swsContext)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
603 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
604 image_width = (newW + 7) & (~7);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
605 image_height = newH;
4420
a7bac05524a1 real window resizeing support (i know nearly nothing about x11 so feel free to fix / reverse it, if its broken)
michael
parents: 4382
diff changeset
606
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
607 freeMyXImage();
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
608 getMyXImage();
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
609 sws_freeContext(oldContext);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
610 } else
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
611 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
612 swsContext = oldContext;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
613 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
614 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
615 dstStride[1] = dstStride[2] = 0;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
616 dst[1] = dst[2] = NULL;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
617
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
618 if (Flip_Flag)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
619 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
620 dstStride[0] = -image_width * ((bpp + 7) / 8);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
621 dst[0] = ImageData - dstStride[0] * (image_height - 1);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
622 sws_scale_ordered(swsContext, src, stride, y, h, dst, dstStride);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
623 } else
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
624 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
625 dstStride[0] = image_width * ((bpp + 7) / 8);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
626 dst[0] = ImageData;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
627 sws_scale_ordered(swsContext, src, stride, y, h, dst, dstStride);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
628 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
629 return 0;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
630 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
631
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
632 static uint32_t draw_frame(uint8_t * src[])
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
633 {
7683
2f802d9323de - implemented draw_image()
arpi
parents: 7539
diff changeset
634 #if 0
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
635 int stride[3] = { 0, 0, 0 };
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
636
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
637 if (in_format == IMGFMT_YUY2)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
638 stride[0] = srcW * 2;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
639 else if (in_format == IMGFMT_BGR8)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
640 stride[0] = srcW;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
641 else if (in_format == IMGFMT_BGR15)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
642 stride[0] = srcW * 2;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
643 else if (in_format == IMGFMT_BGR16)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
644 stride[0] = srcW * 2;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
645 else if (in_format == IMGFMT_BGR24)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
646 stride[0] = srcW * 3;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
647 else if (in_format == IMGFMT_BGR32)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
648 stride[0] = srcW * 4;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
649
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
650 return draw_slice(src, stride, srcW, srcH, 0, 0);
7683
2f802d9323de - implemented draw_image()
arpi
parents: 7539
diff changeset
651 #else
2f802d9323de - implemented draw_image()
arpi
parents: 7539
diff changeset
652 printf("draw_frame() called!!!!!!\n");
2f802d9323de - implemented draw_image()
arpi
parents: 7539
diff changeset
653 return -1;
2f802d9323de - implemented draw_image()
arpi
parents: 7539
diff changeset
654 #endif
2f802d9323de - implemented draw_image()
arpi
parents: 7539
diff changeset
655 }
2f802d9323de - implemented draw_image()
arpi
parents: 7539
diff changeset
656
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
657 static uint32_t get_image(mp_image_t * mpi)
5130
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
658 {
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
659 if (zoomFlag ||
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
660 !IMGFMT_IS_BGR(mpi->imgfmt) ||
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
661 (IMGFMT_BGR_DEPTH(mpi->imgfmt) != vo_depthonscreen) ||
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
662 ((mpi->type != MP_IMGTYPE_STATIC)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
663 && (mpi->type != MP_IMGTYPE_TEMP))
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
664 || (mpi->flags & MP_IMGFLAG_PLANAR)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
665 || (mpi->flags & MP_IMGFLAG_YUV) || (mpi->width != image_width)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
666 || (mpi->height != image_height))
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
667 return (VO_FALSE);
5130
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
668
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
669 if (Flip_Flag)
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
670 {
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
671 mpi->stride[0] = -image_width * ((bpp + 7) / 8);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
672 mpi->planes[0] = ImageData - mpi->stride[0] * (image_height - 1);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
673 } else
5130
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
674 {
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
675 mpi->stride[0] = image_width * ((bpp + 7) / 8);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
676 mpi->planes[0] = ImageData;
5130
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
677 }
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
678 mpi->flags |= MP_IMGFLAG_DIRECT;
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
679
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
680 return (VO_TRUE);
5130
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
681 }
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
682
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
683 static uint32_t query_format(uint32_t format)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
684 {
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
685 mp_msg(MSGT_VO, MSGL_DBG2,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
686 "vo_x11: query_format was called: %x (%s)\n", format,
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
687 vo_format_name(format));
5130
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
688 if (IMGFMT_IS_BGR(format))
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
689 {
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
690 if (IMGFMT_BGR_DEPTH(format) <= 8)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
691 return 0; // TODO 8bpp not yet fully implemented
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
692 if (IMGFMT_BGR_DEPTH(format) == vo_depthonscreen)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
693 return 3 | VFCAP_OSD | VFCAP_SWSCALE | VFCAP_FLIP |
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
694 VFCAP_ACCEPT_STRIDE;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
695 else
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
696 return 1 | VFCAP_OSD | VFCAP_SWSCALE | VFCAP_FLIP |
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
697 VFCAP_ACCEPT_STRIDE;
5130
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
698 }
325
b2fd5c172f80 vo_x11 query_format fix
laaz
parents: 324
diff changeset
699
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
700 switch (format)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
701 {
6692
ad521fb49a5e -vm -fs -zoom fix, set correct vm screenres in aspect code (similar to xv fix).
atmos4
parents: 6180
diff changeset
702 // case IMGFMT_BGR8:
5130
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
703 // case IMGFMT_BGR15:
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
704 // case IMGFMT_BGR16:
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
705 // case IMGFMT_BGR24:
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
706 // case IMGFMT_BGR32:
6694
9291268a3603 1000l, back out hack-n-slay 8bpp code from my local tree.
atmos4
parents: 6693
diff changeset
707 // return 0x2;
4905
eb1a28f1236a yuy2 support disabled to workaround stupid colorspace selection
michael
parents: 4889
diff changeset
708 // case IMGFMT_YUY2:
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
709 case IMGFMT_I420:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
710 case IMGFMT_IYUV:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
711 case IMGFMT_YV12:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
712 return 1 | VFCAP_OSD | VFCAP_SWSCALE | VFCAP_ACCEPT_STRIDE;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
713 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
714 return 0;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
715 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
716
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
717
7683
2f802d9323de - implemented draw_image()
arpi
parents: 7539
diff changeset
718 static void uninit(void)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
719 {
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
720 if (!myximage)
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
721 return;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
722
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
723 freeMyXImage();
4426
1ceadec3ea67 using the common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4420
diff changeset
724
206
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
725 #ifdef HAVE_XF86VM
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
726 vo_vm_close(mDisplay);
206
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
727 #endif
4426
1ceadec3ea67 using the common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4420
diff changeset
728
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
729 zoomFlag = 0;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
730 vo_x11_uninit();
4677
305a0c20bde4 default is allways nozoom again (specify -zoom if u want the sane behavior)
michael
parents: 4662
diff changeset
731
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
732 sws_freeContext(swsContext);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
733 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
734
4352
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4340
diff changeset
735 static uint32_t preinit(const char *arg)
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4340
diff changeset
736 {
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
737 if (arg)
4737
32e1f5042f65 I don't like such reports: '-vo dga:vidix or -vo x11:vidix works fine for me'
nick
parents: 4734
diff changeset
738 {
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
739 mp_msg(MSGT_VO, MSGL_ERR, "vo_x11: Unknown subdevice: %s\n", arg);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
740 return ENOSYS;
4737
32e1f5042f65 I don't like such reports: '-vo dga:vidix or -vo x11:vidix works fine for me'
nick
parents: 4734
diff changeset
741 }
5130
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
742
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
743 if (!vo_init())
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
744 return -1; // Can't open X11
4737
32e1f5042f65 I don't like such reports: '-vo dga:vidix or -vo x11:vidix works fine for me'
nick
parents: 4734
diff changeset
745 return 0;
4352
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4340
diff changeset
746 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
747
4596
c35d7ce151b3 10000hl to Holm... control MUST BE static...
arpi
parents: 4592
diff changeset
748 static uint32_t control(uint32_t request, void *data, ...)
4352
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4340
diff changeset
749 {
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
750 switch (request)
7964
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7765
diff changeset
751 {
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
752 case VOCTRL_PAUSE:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
753 return (int_pause = 1);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
754 case VOCTRL_RESUME:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
755 return (int_pause = 0);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
756 case VOCTRL_QUERY_FORMAT:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
757 return query_format(*((uint32_t *) data));
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
758 case VOCTRL_GUISUPPORT:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
759 return VO_TRUE;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
760 case VOCTRL_GET_IMAGE:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
761 return get_image(data);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
762 case VOCTRL_SET_EQUALIZER:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
763 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
764 va_list ap;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
765 int value;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
766
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
767 va_start(ap, data);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
768 value = va_arg(ap, int);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
769
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
770 va_end(ap);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
771 return vo_x11_set_equalizer(data, value);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
772 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
773 case VOCTRL_GET_EQUALIZER:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
774 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
775 va_list ap;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
776 int *value;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
777
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
778 va_start(ap, data);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
779 value = va_arg(ap, int *);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
780
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
781 va_end(ap);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
782 return vo_x11_get_equalizer(data, value);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
783 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
784 case VOCTRL_ONTOP:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
785 vo_x11_ontop();
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
786 return VO_TRUE;
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
787 case VOCTRL_FULLSCREEN:
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
788 {
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
789 vo_x11_fullscreen();
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
790 vo_x11_clearwindow(mDisplay, vo_window);
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
791 }
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
792 return VO_TRUE;
7964
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7765
diff changeset
793 }
12582
162c80b2d432 major reindentation of x11 code try #2
attila
parents: 11690
diff changeset
794 return VO_NOTIMPL;
4352
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4340
diff changeset
795 }