annotate libvo/vo_x11.c @ 11619:179138947307

This patch contains bugfixes for the esd audio output driver that I uncovered while trying to send sound to a remote esd server over a wireless (11 mbs, just enough to handle to sound) link. First, the sound was full "ticking" sounds. I found a bug that prevented the "send the remainder of this block" code from ever being called - so large chunks of audio were simply being ignored. Fixing this bug removed the "ticking" from audio streams. Fixing this bug, however, uncovered another problem - when the socket buffer was full, doing a blocking write to finish the buffer would take far too long and would turn video into a chunky mess. I'd imagine this blocking write would be fine for an audio-only stream, but it turns out to hold up the video far too much. The solution in this patch is to write as much data as possible to the socket, and then return as soon as possible, reporting the number of bytes actually written accurately back to mplayer. I've tested it on both local and remote esd servers, and it works well. Patch by Benjamin Osheroff <ben@gimbo.net>
author attila
date Wed, 10 Dec 2003 12:19:13 +0000
parents 85e503ddf65f
children 860bc06f32ca
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
354
7de9e48c83a5 memcpy() moved mmx.h -> fastmemcpy.h
arpi_esp
parents: 350
diff changeset
22 #include "fastmemcpy.h"
616
41d6eec69b60 clean up
pontscho
parents: 614
diff changeset
23 #include "sub.h"
350
601822cc8c52 applied MMX2 memcpy() patch by Nick Kurshev
arpi_esp
parents: 326
diff changeset
24
2218
d9ea650b2c24 yv12 scaling at 24/32bpp with -zoom
arpi
parents: 2094
diff changeset
25 #include "../postproc/swscale.h"
9494
543ab3909b78 sws_ prefix, more seperation between internal & external swscaler API
michael
parents: 9278
diff changeset
26 #include "../postproc/swscale_internal.h" //FIXME
2556
71934dc06490 Using new stuff of rgb15to16
nick
parents: 2519
diff changeset
27 #include "../postproc/rgb2rgb.h"
10233
35f52ad860a0 vf_scale.h & related cleanup & some small warning fix by dominik
michael
parents: 10212
diff changeset
28 #include "../libmpcodecs/vf_scale.h"
2218
d9ea650b2c24 yv12 scaling at 24/32bpp with -zoom
arpi
parents: 2094
diff changeset
29
4734
cc375edb5eda added support for runtime fullscreen switching
alex
parents: 4726
diff changeset
30 #include "../mp_msg.h"
cc375edb5eda added support for runtime fullscreen switching
alex
parents: 4726
diff changeset
31
6013
7f6e02a16ac4 some bugfix, x[11|mga|v] ( fullscreen with more files )
pontscho
parents: 5999
diff changeset
32 #ifdef HAVE_NEW_GUI
7f6e02a16ac4 some bugfix, x[11|mga|v] ( fullscreen with more files )
pontscho
parents: 5999
diff changeset
33 #include "../Gui/interface.h"
7f6e02a16ac4 some bugfix, x[11|mga|v] ( fullscreen with more files )
pontscho
parents: 5999
diff changeset
34 #include "../mplayer.h"
7f6e02a16ac4 some bugfix, x[11|mga|v] ( fullscreen with more files )
pontscho
parents: 5999
diff changeset
35 #endif
7f6e02a16ac4 some bugfix, x[11|mga|v] ( fullscreen with more files )
pontscho
parents: 5999
diff changeset
36
8148
5b39e79af5fe removed get_info, using the same sheme as in libmpcodecs instead
alex
parents: 7964
diff changeset
37 static vo_info_t info =
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
38 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
39 "X11 ( XImage/Shm )",
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
40 "x11",
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
41 "Aaron Holtzman <aholtzma@ess.engr.uvic.ca>",
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
42 ""
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
43 };
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
44
8148
5b39e79af5fe removed get_info, using the same sheme as in libmpcodecs instead
alex
parents: 7964
diff changeset
45 LIBVO_EXTERN( x11 )
5b39e79af5fe removed get_info, using the same sheme as in libmpcodecs instead
alex
parents: 7964
diff changeset
46
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
47 /* private prototypes */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
48 static void Display_Image ( XImage * myximage,unsigned char *ImageData );
1647
22480104ddfd added draw_alpha_XXXX functions, draw_alpha_func<=correct one in init
atlka
parents: 1501
diff changeset
49 static void (*draw_alpha_fnc)(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
50
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
51 /* local data */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
52 static unsigned char *ImageData;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
53
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
54 /* X11 related variables */
7764
13c36b2d1d45 -fixed-vo support
pontscho
parents: 7689
diff changeset
55 static XImage *myximage = NULL;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
56 static int depth,bpp,mode;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
57 static XWindowAttributes attribs;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
58
10757
3aea64e0d6d9 Avoid flickering during resizes. Keep video contents even when paused. Fix by Tomas Simonaitis <haden@homelan.lt>
mosu
parents: 10728
diff changeset
59 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
60
2969
291f45785de9 fix to compile when SHM is disabled
alex
parents: 2732
diff changeset
61 static int Flip_Flag;
4661
4df2400b0527 -fs and or -vm default is nozoom, -zoom does the expected thing
michael
parents: 4658
diff changeset
62 static int zoomFlag;
2969
291f45785de9 fix to compile when SHM is disabled
alex
parents: 2732
diff changeset
63
3003
16a593a1e6ed changed SH_MEM to HAVE_SHM according to configure
alex
parents: 2969
diff changeset
64 #ifdef HAVE_SHM
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
65 #include <sys/ipc.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
66 #include <sys/shm.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
67 #include <X11/extensions/XShm.h>
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
68
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
69 static int Shmem_Flag;
5935
5074aa8fae5a printf to mp_msg
albeu
parents: 5835
diff changeset
70 //static int Quiet_Flag; Here also what is this for. It's used but isn't inited ?
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
71 static XShmSegmentInfo Shminfo[1];
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
72 static int gXErrorFlag;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
73 static int CompletionType=-1;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
74
4813
15e95b9cf191 using vo_dx, vo_dy
alex
parents: 4808
diff changeset
75 /* since it doesn't seem to be defined on some platforms */
15e95b9cf191 using vo_dx, vo_dy
alex
parents: 4808
diff changeset
76 int XShmGetEventBase( Display* );
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
77 #endif
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
78
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
79 static uint32_t image_width;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
80 static uint32_t image_height;
4641
b7f340349470 allways use swScaler
michael
parents: 4627
diff changeset
81 static uint32_t in_format;
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
82 static uint32_t out_format=0;
4718
c70b0c4b85f5 avoid allocating a dummy scaler as debug/info messages will only be printed for the first allocated scaler unless -v -v is used
michael
parents: 4697
diff changeset
83 static int srcW=-1;
c70b0c4b85f5 avoid allocating a dummy scaler as debug/info messages will only be printed for the first allocated scaler unless -v -v is used
michael
parents: 4697
diff changeset
84 static int srcH=-1;
4641
b7f340349470 allways use swScaler
michael
parents: 4627
diff changeset
85 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
86
6013
7f6e02a16ac4 some bugfix, x[11|mga|v] ( fullscreen with more files )
pontscho
parents: 5999
diff changeset
87 static int old_vo_dwidth=-1;
7f6e02a16ac4 some bugfix, x[11|mga|v] ( fullscreen with more files )
pontscho
parents: 5999
diff changeset
88 static int old_vo_dheight=-1;
7f6e02a16ac4 some bugfix, x[11|mga|v] ( fullscreen with more files )
pontscho
parents: 5999
diff changeset
89
31
1fc618eba830 added check_events() interface
arpi_esp
parents: 1
diff changeset
90 static void check_events(){
4808
4eaa205201b0 clear the window if resized but no scaling used. Enable runtime fullscreen selectin when no zooming available
alex
parents: 4805
diff changeset
91 int ret = vo_x11_check_events(mDisplay);
4eaa205201b0 clear the window if resized but no scaling used. Enable runtime fullscreen selectin when no zooming available
alex
parents: 4805
diff changeset
92
10757
3aea64e0d6d9 Avoid flickering during resizes. Keep video contents even when paused. Fix by Tomas Simonaitis <haden@homelan.lt>
mosu
parents: 10728
diff changeset
93 /* clear left over borders and redraw frame if we are paused */
3aea64e0d6d9 Avoid flickering during resizes. Keep video contents even when paused. Fix by Tomas Simonaitis <haden@homelan.lt>
mosu
parents: 10728
diff changeset
94 if ( ret & VO_EVENT_EXPOSE && int_pause)
4808
4eaa205201b0 clear the window if resized but no scaling used. Enable runtime fullscreen selectin when no zooming available
alex
parents: 4805
diff changeset
95 {
10757
3aea64e0d6d9 Avoid flickering during resizes. Keep video contents even when paused. Fix by Tomas Simonaitis <haden@homelan.lt>
mosu
parents: 10728
diff changeset
96 vo_x11_clearwindow_part(mDisplay, vo_window, myximage->width, myximage->height, 0);
3aea64e0d6d9 Avoid flickering during resizes. Keep video contents even when paused. Fix by Tomas Simonaitis <haden@homelan.lt>
mosu
parents: 10728
diff changeset
97 flip_page();
3aea64e0d6d9 Avoid flickering during resizes. Keep video contents even when paused. Fix by Tomas Simonaitis <haden@homelan.lt>
mosu
parents: 10728
diff changeset
98 } else
3aea64e0d6d9 Avoid flickering during resizes. Keep video contents even when paused. Fix by Tomas Simonaitis <haden@homelan.lt>
mosu
parents: 10728
diff changeset
99 if ( (ret & VO_EVENT_RESIZE)||(ret & VO_EVENT_EXPOSE) )
3aea64e0d6d9 Avoid flickering during resizes. Keep video contents even when paused. Fix by Tomas Simonaitis <haden@homelan.lt>
mosu
parents: 10728
diff changeset
100 vo_x11_clearwindow_part(mDisplay, vo_window, myximage->width, myximage->height, 0);
3aea64e0d6d9 Avoid flickering during resizes. Keep video contents even when paused. Fix by Tomas Simonaitis <haden@homelan.lt>
mosu
parents: 10728
diff changeset
101
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
102 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
103
1647
22480104ddfd added draw_alpha_XXXX functions, draw_alpha_func<=correct one in init
atlka
parents: 1501
diff changeset
104 static void draw_alpha_32(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride){
22480104ddfd added draw_alpha_XXXX functions, draw_alpha_func<=correct one in init
atlka
parents: 1501
diff changeset
105 vo_draw_alpha_rgb32(w,h,src,srca,stride,ImageData+4*(y0*image_width+x0),4*image_width);
22480104ddfd added draw_alpha_XXXX functions, draw_alpha_func<=correct one in init
atlka
parents: 1501
diff changeset
106 }
22480104ddfd added draw_alpha_XXXX functions, draw_alpha_func<=correct one in init
atlka
parents: 1501
diff changeset
107
22480104ddfd added draw_alpha_XXXX functions, draw_alpha_func<=correct one in init
atlka
parents: 1501
diff changeset
108 static void draw_alpha_24(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride){
22480104ddfd added draw_alpha_XXXX functions, draw_alpha_func<=correct one in init
atlka
parents: 1501
diff changeset
109 vo_draw_alpha_rgb24(w,h,src,srca,stride,ImageData+3*(y0*image_width+x0),3*image_width);
22480104ddfd added draw_alpha_XXXX functions, draw_alpha_func<=correct one in init
atlka
parents: 1501
diff changeset
110 }
22480104ddfd added draw_alpha_XXXX functions, draw_alpha_func<=correct one in init
atlka
parents: 1501
diff changeset
111
22480104ddfd added draw_alpha_XXXX functions, draw_alpha_func<=correct one in init
atlka
parents: 1501
diff changeset
112 static void draw_alpha_16(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride){
22480104ddfd added draw_alpha_XXXX functions, draw_alpha_func<=correct one in init
atlka
parents: 1501
diff changeset
113 vo_draw_alpha_rgb16(w,h,src,srca,stride,ImageData+2*(y0*image_width+x0),2*image_width);
22480104ddfd added draw_alpha_XXXX functions, draw_alpha_func<=correct one in init
atlka
parents: 1501
diff changeset
114 }
22480104ddfd added draw_alpha_XXXX functions, draw_alpha_func<=correct one in init
atlka
parents: 1501
diff changeset
115
22480104ddfd added draw_alpha_XXXX functions, draw_alpha_func<=correct one in init
atlka
parents: 1501
diff changeset
116 static void draw_alpha_15(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride){
22480104ddfd added draw_alpha_XXXX functions, draw_alpha_func<=correct one in init
atlka
parents: 1501
diff changeset
117 vo_draw_alpha_rgb15(w,h,src,srca,stride,ImageData+2*(y0*image_width+x0),2*image_width);
22480104ddfd added draw_alpha_XXXX functions, draw_alpha_func<=correct one in init
atlka
parents: 1501
diff changeset
118 }
22480104ddfd added draw_alpha_XXXX functions, draw_alpha_func<=correct one in init
atlka
parents: 1501
diff changeset
119
22480104ddfd added draw_alpha_XXXX functions, draw_alpha_func<=correct one in init
atlka
parents: 1501
diff changeset
120 static void draw_alpha_null(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride){
22480104ddfd added draw_alpha_XXXX functions, draw_alpha_func<=correct one in init
atlka
parents: 1501
diff changeset
121 }
22480104ddfd added draw_alpha_XXXX functions, draw_alpha_func<=correct one in init
atlka
parents: 1501
diff changeset
122
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
123 static SwsContext *swsContext=NULL;
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
124 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
125
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
126 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
127
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
128 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
129 {
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
130 #ifdef HAVE_SHM
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
131 if ( mLocalDisplay && XShmQueryExtension( mDisplay ) ) Shmem_Flag=1;
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
132 else
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
133 {
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
134 Shmem_Flag=0;
5935
5074aa8fae5a printf to mp_msg
albeu
parents: 5835
diff changeset
135 mp_msg(MSGT_VO,MSGL_WARN, "Shared memory not supported\nReverting to normal Xlib\n" );
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
136 }
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
137 if ( Shmem_Flag ) CompletionType=XShmGetEventBase( mDisplay ) + ShmCompletion;
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
138
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
139 if ( Shmem_Flag )
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
140 {
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
141 myximage=XShmCreateImage( mDisplay,vinfo.visual,depth,ZPixmap,NULL,&Shminfo[0],image_width,image_height );
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
142 if ( myximage == NULL )
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
143 {
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
144 if ( myximage != NULL ) XDestroyImage( myximage );
5935
5074aa8fae5a printf to mp_msg
albeu
parents: 5835
diff changeset
145 mp_msg(MSGT_VO,MSGL_WARN,"Shared memory error,disabling ( Ximage error )\n" );
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
146 goto shmemerror;
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 }
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 Shminfo[0].shmid=shmget( IPC_PRIVATE,
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 myximage->bytes_per_line * myximage->height ,
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 IPC_CREAT | 0777 );
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 if ( Shminfo[0].shmid < 0 )
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 XDestroyImage( myximage );
5935
5074aa8fae5a printf to mp_msg
albeu
parents: 5835
diff changeset
154 mp_msg(MSGT_VO,MSGL_V, "%s\n",strerror( errno ) );
5074aa8fae5a printf to mp_msg
albeu
parents: 5835
diff changeset
155 //perror( strerror( errno ) );
5074aa8fae5a printf to mp_msg
albeu
parents: 5835
diff changeset
156 mp_msg(MSGT_VO,MSGL_WARN,"Shared memory error,disabling ( seg id error )\n" );
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
157 goto shmemerror;
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
158 }
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
159 Shminfo[0].shmaddr=( char * ) shmat( Shminfo[0].shmid,0,0 );
3209
0b172eb639f1 swscaler cleanup
michael
parents: 3003
diff changeset
160
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
161 if ( Shminfo[0].shmaddr == ( ( char * ) -1 ) )
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
162 {
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
163 XDestroyImage( myximage );
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 if ( Shminfo[0].shmaddr != ( ( char * ) -1 ) ) shmdt( Shminfo[0].shmaddr );
5935
5074aa8fae5a printf to mp_msg
albeu
parents: 5835
diff changeset
165 mp_msg(MSGT_VO,MSGL_WARN, "Shared memory error,disabling ( address error )\n" );
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 goto shmemerror;
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
167 }
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
168 myximage->data=Shminfo[0].shmaddr;
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
169 ImageData=( unsigned char * ) myximage->data;
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
170 Shminfo[0].readOnly=False;
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
171 XShmAttach( mDisplay,&Shminfo[0] );
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
172
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
173 XSync( mDisplay,False );
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
174
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
175 if ( gXErrorFlag )
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
176 {
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
177 XDestroyImage( myximage );
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
178 shmdt( Shminfo[0].shmaddr );
5935
5074aa8fae5a printf to mp_msg
albeu
parents: 5835
diff changeset
179 mp_msg(MSGT_VO,MSGL_WARN, "Shared memory error,disabling.\n" );
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
180 gXErrorFlag=0;
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
181 goto shmemerror;
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
182 }
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
183 else
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
184 shmctl( Shminfo[0].shmid,IPC_RMID,0 );
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
185
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
186 {
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
187 static int firstTime=1;
5935
5074aa8fae5a printf to mp_msg
albeu
parents: 5835
diff changeset
188 if ( firstTime){
5074aa8fae5a printf to mp_msg
albeu
parents: 5835
diff changeset
189 mp_msg(MSGT_VO,MSGL_V, "Sharing memory.\n" );
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
190 firstTime=0;
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
191 }
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
192 }
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
193 }
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
194 else
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
195 {
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
196 shmemerror:
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
197 Shmem_Flag=0;
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
198 #endif
4804
62a281be07ce fix nexus's key bug :) 10l, sorry :)
pontscho
parents: 4791
diff changeset
199 myximage=XGetImage( mDisplay,vo_window,0,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
200 image_width,image_height,AllPlanes,ZPixmap );
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
201 ImageData=myximage->data;
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
202 #ifdef HAVE_SHM
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
203 }
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
204 #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
205 }
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
206
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 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
208 {
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
209 #ifdef HAVE_SHM
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
210 if ( Shmem_Flag )
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
211 {
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
212 XShmDetach( mDisplay,&Shminfo[0] );
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
213 XDestroyImage( myximage );
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
214 shmdt( Shminfo[0].shmaddr );
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
215 }
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
216 else
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
217 #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
218 {
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
219 XDestroyImage( myximage );
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 }
5414
871f8ebecdef fix uninit() crash if no config() call
arpi
parents: 5368
diff changeset
221 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
222 }
2218
d9ea650b2c24 yv12 scaling at 24/32bpp with -zoom
arpi
parents: 2094
diff changeset
223
7124
eca7dbad0166 finally removed query_vaa, bes_da and vo_tune_info - the obsoleted libvo api
alex
parents: 6953
diff changeset
224 static uint32_t config( uint32_t width,uint32_t height,uint32_t d_width,uint32_t d_height,uint32_t flags,char *title,uint32_t format)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
225 {
1110
71b8911ec3da -Wall like cleanup
al3x
parents: 922
diff changeset
226 // int screen;
767
372042df5c77 Added support for flipped BGR/RGB via -flip cmdline switch.
atmosfear
parents: 616
diff changeset
227 int fullscreen=0;
1137
4c7b219e126c patch: some X11 compliance fixed: set ClassHint and better fullscreen mode
arpi_esp
parents: 1110
diff changeset
228 int vm=0;
1110
71b8911ec3da -Wall like cleanup
al3x
parents: 922
diff changeset
229 // int interval, prefer_blank, allow_exp, nothing;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
230 unsigned int fg,bg;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
231 XEvent xev;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
232 XGCValues xgcv;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
233 Colormap theCmap;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
234 XSetWindowAttributes xswa;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
235 unsigned long xswamask;
4426
1ceadec3ea67 using the common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4420
diff changeset
236 #ifdef HAVE_XF86VM
2094
dc11de07b5e7 grabs mouse with -vm - patch by Uwe Reder <Uwe.Reder@3SOFT.de>
arpi
parents: 1924
diff changeset
237 unsigned int modeline_width, modeline_height;
4426
1ceadec3ea67 using the common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4420
diff changeset
238 static uint32_t vm_width;
1ceadec3ea67 using the common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4420
diff changeset
239 static uint32_t vm_height;
1ceadec3ea67 using the common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4420
diff changeset
240 #endif
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
241
5955
caac20b1ca79 fix xmga fs, resize to movie size and mouse auto hide + dga
pontscho
parents: 5945
diff changeset
242 vo_mouse_autohide=1;
6013
7f6e02a16ac4 some bugfix, x[11|mga|v] ( fullscreen with more files )
pontscho
parents: 5999
diff changeset
243 old_vo_dwidth=-1;
7f6e02a16ac4 some bugfix, x[11|mga|v] ( fullscreen with more files )
pontscho
parents: 5999
diff changeset
244 old_vo_dheight=-1;
7f6e02a16ac4 some bugfix, x[11|mga|v] ( fullscreen with more files )
pontscho
parents: 5999
diff changeset
245
4813
15e95b9cf191 using vo_dx, vo_dy
alex
parents: 4808
diff changeset
246 if (!title)
15e95b9cf191 using vo_dx, vo_dy
alex
parents: 4808
diff changeset
247 title = strdup("MPlayer X11 (XImage/Shm) render");
15e95b9cf191 using vo_dx, vo_dy
alex
parents: 4808
diff changeset
248
4641
b7f340349470 allways use swScaler
michael
parents: 4627
diff changeset
249 in_format=format;
4718
c70b0c4b85f5 avoid allocating a dummy scaler as debug/info messages will only be printed for the first allocated scaler unless -v -v is used
michael
parents: 4697
diff changeset
250 srcW= width;
c70b0c4b85f5 avoid allocating a dummy scaler as debug/info messages will only be printed for the first allocated scaler unless -v -v is used
michael
parents: 4697
diff changeset
251 srcH= height;
6043
421781c5b128 fix some small bug and -rootwin
pontscho
parents: 6025
diff changeset
252 vo_dx=( vo_screenwidth - d_width ) / 2; vo_dy=( vo_screenheight - d_height ) / 2;
10728
713a1ff7046e geometry support for x11
attila
parents: 10233
diff changeset
253 geometry(&vo_dx, &vo_dy, &d_width, &d_height, vo_screenwidth, vo_screenheight);
6858
21186a5514b4 initial window size (-xy) fixed - patch by Kazunori Ueno <jagarl@creator.club.ne.jp>
arpi
parents: 6704
diff changeset
254 vo_dwidth=d_width; vo_dheight=d_height;
4641
b7f340349470 allways use swScaler
michael
parents: 4627
diff changeset
255
1137
4c7b219e126c patch: some X11 compliance fixed: set ClassHint and better fullscreen mode
arpi_esp
parents: 1110
diff changeset
256 if( flags&0x03 ) fullscreen = 1;
4c7b219e126c patch: some X11 compliance fixed: set ClassHint and better fullscreen mode
arpi_esp
parents: 1110
diff changeset
257 if( flags&0x02 ) vm = 1;
767
372042df5c77 Added support for flipped BGR/RGB via -flip cmdline switch.
atmosfear
parents: 616
diff changeset
258 if( flags&0x08 ) Flip_Flag = 1;
4661
4df2400b0527 -fs and or -vm default is nozoom, -zoom does the expected thing
michael
parents: 4658
diff changeset
259 zoomFlag = flags&0x04;
10757
3aea64e0d6d9 Avoid flickering during resizes. Keep video contents even when paused. Fix by Tomas Simonaitis <haden@homelan.lt>
mosu
parents: 10728
diff changeset
260
3aea64e0d6d9 Avoid flickering during resizes. Keep video contents even when paused. Fix by Tomas Simonaitis <haden@homelan.lt>
mosu
parents: 10728
diff changeset
261 int_pause = 0;
4677
305a0c20bde4 default is allways nozoom again (specify -zoom if u want the sane behavior)
michael
parents: 4662
diff changeset
262 // if(!fullscreen) zoomFlag=1; //it makes no sense to avoid zooming on windowd mode
2218
d9ea650b2c24 yv12 scaling at 24/32bpp with -zoom
arpi
parents: 2094
diff changeset
263
d9ea650b2c24 yv12 scaling at 24/32bpp with -zoom
arpi
parents: 2094
diff changeset
264 //printf( "w: %d h: %d\n\n",vo_dwidth,vo_dheight );
1746
6e7da6f362ab add half gui support
pontscho
parents: 1647
diff changeset
265
6013
7f6e02a16ac4 some bugfix, x[11|mga|v] ( fullscreen with more files )
pontscho
parents: 5999
diff changeset
266 XGetWindowAttributes( mDisplay,mRootWin,&attribs );
1746
6e7da6f362ab add half gui support
pontscho
parents: 1647
diff changeset
267 depth=attribs.depth;
6e7da6f362ab add half gui support
pontscho
parents: 1647
diff changeset
268
7256
ec6dd0a29d93 Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents: 7124
diff changeset
269 if ( depth != 15 && depth != 16 && depth != 24 && depth != 32 ) {
ec6dd0a29d93 Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents: 7124
diff changeset
270 Visual *visual;
ec6dd0a29d93 Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents: 7124
diff changeset
271 depth = vo_find_depth_from_visuals(mDisplay, mScreen, &visual);
ec6dd0a29d93 Add the code that chooses a good X11 truecolor visual to the vo_x11 config()
jkeil
parents: 7124
diff changeset
272 }
9278
caea8ed36b48 The reason why mplayer crashes (in some cases) when using x11
arpi
parents: 9115
diff changeset
273 if ( !XMatchVisualInfo( mDisplay,mScreen,depth,DirectColor,&vinfo ) ||
10212
d358fa9a1068 warning fixes by Dominik Mierzejewski <dominik@rangers.eu.org>
alex
parents: 10177
diff changeset
274 (WinID > 0 && vinfo.visualid != XVisualIDFromVisual(attribs.visual)))
7964
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7765
diff changeset
275 XMatchVisualInfo( mDisplay,mScreen,depth,TrueColor,&vinfo );
1746
6e7da6f362ab add half gui support
pontscho
parents: 1647
diff changeset
276
4697
b4f72d6b2365 bugfix for width % 2 != 0
michael
parents: 4677
diff changeset
277 /* set image size (which is indeed neither the input nor output size),
11000
6e35326c742f many small typo and grammar fixes
gabucino
parents: 10757
diff changeset
278 if zoom is on it will be changed during draw_slice anyway so we don't duplicate the aspect code here
4697
b4f72d6b2365 bugfix for width % 2 != 0
michael
parents: 4677
diff changeset
279 */
b4f72d6b2365 bugfix for width % 2 != 0
michael
parents: 4677
diff changeset
280 image_width=(width + 7) & (~7);
4677
305a0c20bde4 default is allways nozoom again (specify -zoom if u want the sane behavior)
michael
parents: 4662
diff changeset
281 image_height=height;
4661
4df2400b0527 -fs and or -vm default is nozoom, -zoom does the expected thing
michael
parents: 4658
diff changeset
282
4641
b7f340349470 allways use swScaler
michael
parents: 4627
diff changeset
283 aspect= ((1<<16)*d_width + d_height/2)/d_height;
2218
d9ea650b2c24 yv12 scaling at 24/32bpp with -zoom
arpi
parents: 2094
diff changeset
284
1752
39fc6cc71b3b vo_window bug fixed
pontscho
parents: 1746
diff changeset
285 #ifdef HAVE_NEW_GUI
6013
7f6e02a16ac4 some bugfix, x[11|mga|v] ( fullscreen with more files )
pontscho
parents: 5999
diff changeset
286 if(use_gui) guiGetEvent( guiSetShVideo,0 ); // the GUI will set up / resize the window
7f6e02a16ac4 some bugfix, x[11|mga|v] ( fullscreen with more files )
pontscho
parents: 5999
diff changeset
287 else
1752
39fc6cc71b3b vo_window bug fixed
pontscho
parents: 1746
diff changeset
288 #endif
1746
6e7da6f362ab add half gui support
pontscho
parents: 1647
diff changeset
289 {
2094
dc11de07b5e7 grabs mouse with -vm - patch by Uwe Reder <Uwe.Reder@3SOFT.de>
arpi
parents: 1924
diff changeset
290 #ifdef HAVE_XF86VM
dc11de07b5e7 grabs mouse with -vm - patch by Uwe Reder <Uwe.Reder@3SOFT.de>
arpi
parents: 1924
diff changeset
291 if ( vm )
4426
1ceadec3ea67 using the common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4420
diff changeset
292 {
1ceadec3ea67 using the common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4420
diff changeset
293 if ((d_width==0) && (d_height==0))
1ceadec3ea67 using the common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4420
diff changeset
294 { vm_width=image_width; vm_height=image_height; }
1ceadec3ea67 using the common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4420
diff changeset
295 else
1ceadec3ea67 using the common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4420
diff changeset
296 { vm_width=d_width; vm_height=d_height; }
1ceadec3ea67 using the common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4420
diff changeset
297 vo_vm_switch(vm_width, vm_height,&modeline_width, &modeline_height);
6045
a4705acc43e5 fix Nil's vo_x11 bug (Nilmoni Deb <ndeb@ece.cmu.edu>)
pontscho
parents: 6043
diff changeset
298 vo_dx=(vo_screenwidth-modeline_width)/2;
a4705acc43e5 fix Nil's vo_x11 bug (Nilmoni Deb <ndeb@ece.cmu.edu>)
pontscho
parents: 6043
diff changeset
299 vo_dy=(vo_screenheight-modeline_height)/2;
a4705acc43e5 fix Nil's vo_x11 bug (Nilmoni Deb <ndeb@ece.cmu.edu>)
pontscho
parents: 6043
diff changeset
300 vo_dwidth=modeline_width;
a4705acc43e5 fix Nil's vo_x11 bug (Nilmoni Deb <ndeb@ece.cmu.edu>)
pontscho
parents: 6043
diff changeset
301 vo_dheight=modeline_height;
4426
1ceadec3ea67 using the common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4420
diff changeset
302 }
2094
dc11de07b5e7 grabs mouse with -vm - patch by Uwe Reder <Uwe.Reder@3SOFT.de>
arpi
parents: 1924
diff changeset
303 #endif
1746
6e7da6f362ab add half gui support
pontscho
parents: 1647
diff changeset
304 bg=WhitePixel( mDisplay,mScreen );
6e7da6f362ab add half gui support
pontscho
parents: 1647
diff changeset
305 fg=BlackPixel( mDisplay,mScreen );
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
306
7964
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7765
diff changeset
307 theCmap=vo_x11_create_colormap(&vinfo);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
308
1746
6e7da6f362ab add half gui support
pontscho
parents: 1647
diff changeset
309 xswa.background_pixel=0;
2094
dc11de07b5e7 grabs mouse with -vm - patch by Uwe Reder <Uwe.Reder@3SOFT.de>
arpi
parents: 1924
diff changeset
310 xswa.border_pixel=0;
9278
caea8ed36b48 The reason why mplayer crashes (in some cases) when using x11
arpi
parents: 9115
diff changeset
311 xswa.colormap=theCmap;
caea8ed36b48 The reason why mplayer crashes (in some cases) when using x11
arpi
parents: 9115
diff changeset
312 xswamask=CWBackPixel | CWBorderPixel | CWColormap;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
313
2094
dc11de07b5e7 grabs mouse with -vm - patch by Uwe Reder <Uwe.Reder@3SOFT.de>
arpi
parents: 1924
diff changeset
314 #ifdef HAVE_XF86VM
dc11de07b5e7 grabs mouse with -vm - patch by Uwe Reder <Uwe.Reder@3SOFT.de>
arpi
parents: 1924
diff changeset
315 if ( vm )
dc11de07b5e7 grabs mouse with -vm - patch by Uwe Reder <Uwe.Reder@3SOFT.de>
arpi
parents: 1924
diff changeset
316 {
dc11de07b5e7 grabs mouse with -vm - patch by Uwe Reder <Uwe.Reder@3SOFT.de>
arpi
parents: 1924
diff changeset
317 xswa.override_redirect=True;
dc11de07b5e7 grabs mouse with -vm - patch by Uwe Reder <Uwe.Reder@3SOFT.de>
arpi
parents: 1924
diff changeset
318 xswamask|=CWOverrideRedirect;
dc11de07b5e7 grabs mouse with -vm - patch by Uwe Reder <Uwe.Reder@3SOFT.de>
arpi
parents: 1924
diff changeset
319 }
dc11de07b5e7 grabs mouse with -vm - patch by Uwe Reder <Uwe.Reder@3SOFT.de>
arpi
parents: 1924
diff changeset
320 #endif
dc11de07b5e7 grabs mouse with -vm - patch by Uwe Reder <Uwe.Reder@3SOFT.de>
arpi
parents: 1924
diff changeset
321
3830
fc1db33734e7 WinID cleanup, support for Xv
arpi
parents: 3655
diff changeset
322 if ( WinID>=0 ){
6043
421781c5b128 fix some small bug and -rootwin
pontscho
parents: 6025
diff changeset
323 vo_window = WinID ? ((Window)WinID) : mRootWin;
421781c5b128 fix some small bug and -rootwin
pontscho
parents: 6025
diff changeset
324 if ( WinID )
421781c5b128 fix some small bug and -rootwin
pontscho
parents: 6025
diff changeset
325 {
421781c5b128 fix some small bug and -rootwin
pontscho
parents: 6025
diff changeset
326 XUnmapWindow( mDisplay,vo_window );
421781c5b128 fix some small bug and -rootwin
pontscho
parents: 6025
diff changeset
327 XChangeWindowAttributes( mDisplay,vo_window,xswamask,&xswa );
6953
ce67cc1f0beb ignore BadAccess error at XSelectInput() (grabbing mouse etc) with warning
arpi
parents: 6858
diff changeset
328 vo_x11_selectinput_witherr( mDisplay,vo_window,StructureNotifyMask | KeyPressMask | PropertyChangeMask | PointerMotionMask | ButtonPressMask | ButtonReleaseMask | ExposureMask );
6693
48acc88bf4cc Markus Rechberger <revenger at shell.dnload.com>:
atmos4
parents: 6692
diff changeset
329 XMapWindow( mDisplay,vo_window );
6043
421781c5b128 fix some small bug and -rootwin
pontscho
parents: 6025
diff changeset
330 } else XSelectInput( mDisplay,vo_window,ExposureMask );
3655
18cca6a6816c Plugger patch by Sam Lin
atmos4
parents: 3458
diff changeset
331 }
18cca6a6816c Plugger patch by Sam Lin
atmos4
parents: 3458
diff changeset
332 else
6043
421781c5b128 fix some small bug and -rootwin
pontscho
parents: 6025
diff changeset
333 {
7764
13c36b2d1d45 -fixed-vo support
pontscho
parents: 7689
diff changeset
334 if ( vo_window == None )
13c36b2d1d45 -fixed-vo support
pontscho
parents: 7689
diff changeset
335 {
10757
3aea64e0d6d9 Avoid flickering during resizes. Keep video contents even when paused. Fix by Tomas Simonaitis <haden@homelan.lt>
mosu
parents: 10728
diff changeset
336 vo_window=vo_x11_create_smooth_window( mDisplay,mRootWin,vinfo.visual, vo_dx, vo_dy, vo_dwidth, vo_dheight, depth, theCmap );
2094
dc11de07b5e7 grabs mouse with -vm - patch by Uwe Reder <Uwe.Reder@3SOFT.de>
arpi
parents: 1924
diff changeset
337
7764
13c36b2d1d45 -fixed-vo support
pontscho
parents: 7689
diff changeset
338 vo_x11_classhint( mDisplay,vo_window,"x11" );
13c36b2d1d45 -fixed-vo support
pontscho
parents: 7689
diff changeset
339 vo_hidecursor(mDisplay,vo_window);
13c36b2d1d45 -fixed-vo support
pontscho
parents: 7689
diff changeset
340 vo_x11_sizehint( vo_dx,vo_dy,vo_dwidth,vo_dheight,0 );
13c36b2d1d45 -fixed-vo support
pontscho
parents: 7689
diff changeset
341 XSelectInput( mDisplay,vo_window,StructureNotifyMask );
13c36b2d1d45 -fixed-vo support
pontscho
parents: 7689
diff changeset
342 XStoreName( mDisplay,vo_window,title );
13c36b2d1d45 -fixed-vo support
pontscho
parents: 7689
diff changeset
343 XMapWindow( mDisplay,vo_window );
13c36b2d1d45 -fixed-vo support
pontscho
parents: 7689
diff changeset
344 // if(WinID!=0)
13c36b2d1d45 -fixed-vo support
pontscho
parents: 7689
diff changeset
345 do { XNextEvent( mDisplay,&xev ); } while ( xev.type != MapNotify || xev.xmap.event != vo_window );
13c36b2d1d45 -fixed-vo support
pontscho
parents: 7689
diff changeset
346
13c36b2d1d45 -fixed-vo support
pontscho
parents: 7689
diff changeset
347 if ( fullscreen ) vo_x11_fullscreen();
6043
421781c5b128 fix some small bug and -rootwin
pontscho
parents: 6025
diff changeset
348 #ifdef HAVE_XINERAMA
7764
13c36b2d1d45 -fixed-vo support
pontscho
parents: 7689
diff changeset
349 vo_x11_xinerama_move(mDisplay,vo_window);
6043
421781c5b128 fix some small bug and -rootwin
pontscho
parents: 6025
diff changeset
350 #endif
7764
13c36b2d1d45 -fixed-vo support
pontscho
parents: 7689
diff changeset
351 } else if ( !fullscreen ) XMoveResizeWindow( mDisplay,vo_window,vo_dx,vo_dy,vo_dwidth,vo_dheight );
6043
421781c5b128 fix some small bug and -rootwin
pontscho
parents: 6025
diff changeset
352 }
421781c5b128 fix some small bug and -rootwin
pontscho
parents: 6025
diff changeset
353
1746
6e7da6f362ab add half gui support
pontscho
parents: 1647
diff changeset
354 XFlush( mDisplay );
6e7da6f362ab add half gui support
pontscho
parents: 1647
diff changeset
355 XSync( mDisplay,False );
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
356
5822
8e3251d0d9a6 -rootwin fixed, keys work, mouse doesn't
arpi
parents: 5709
diff changeset
357 // we cannot grab mouse events on root window :(
6953
ce67cc1f0beb ignore BadAccess error at XSelectInput() (grabbing mouse etc) with warning
arpi
parents: 6858
diff changeset
358 vo_x11_selectinput_witherr( mDisplay,vo_window,StructureNotifyMask | KeyPressMask | PropertyChangeMask | ExposureMask |
5822
8e3251d0d9a6 -rootwin fixed, keys work, mouse doesn't
arpi
parents: 5709
diff changeset
359 ((WinID==0)?0:(ButtonPressMask | ButtonReleaseMask | PointerMotionMask)) );
4805
79b753e2e84a mondom fix bazmeg.
pontscho
parents: 4804
diff changeset
360
2094
dc11de07b5e7 grabs mouse with -vm - patch by Uwe Reder <Uwe.Reder@3SOFT.de>
arpi
parents: 1924
diff changeset
361 #ifdef HAVE_XF86VM
dc11de07b5e7 grabs mouse with -vm - patch by Uwe Reder <Uwe.Reder@3SOFT.de>
arpi
parents: 1924
diff changeset
362 if ( vm )
dc11de07b5e7 grabs mouse with -vm - patch by Uwe Reder <Uwe.Reder@3SOFT.de>
arpi
parents: 1924
diff changeset
363 {
dc11de07b5e7 grabs mouse with -vm - patch by Uwe Reder <Uwe.Reder@3SOFT.de>
arpi
parents: 1924
diff changeset
364 /* Grab the mouse pointer in our window */
7539
56ea9db91251 -nograbpointer, based on old patch by Christian Ohm <chr.ohm@gmx.net>
arpi
parents: 7256
diff changeset
365 if(vo_grabpointer)
4804
62a281be07ce fix nexus's key bug :) 10l, sorry :)
pontscho
parents: 4791
diff changeset
366 XGrabPointer(mDisplay, vo_window, True, 0,
2094
dc11de07b5e7 grabs mouse with -vm - patch by Uwe Reder <Uwe.Reder@3SOFT.de>
arpi
parents: 1924
diff changeset
367 GrabModeAsync, GrabModeAsync,
4804
62a281be07ce fix nexus's key bug :) 10l, sorry :)
pontscho
parents: 4791
diff changeset
368 vo_window, None, CurrentTime);
62a281be07ce fix nexus's key bug :) 10l, sorry :)
pontscho
parents: 4791
diff changeset
369 XSetInputFocus(mDisplay, vo_window, RevertToNone, CurrentTime);
2094
dc11de07b5e7 grabs mouse with -vm - patch by Uwe Reder <Uwe.Reder@3SOFT.de>
arpi
parents: 1924
diff changeset
370 }
dc11de07b5e7 grabs mouse with -vm - patch by Uwe Reder <Uwe.Reder@3SOFT.de>
arpi
parents: 1924
diff changeset
371 #endif
1746
6e7da6f362ab add half gui support
pontscho
parents: 1647
diff changeset
372 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
373
7765
dbf1e5cfadbd fix memleak
pontscho
parents: 7764
diff changeset
374 if ( vo_gc != None ) XFreeGC( mDisplay,vo_gc );
6043
421781c5b128 fix some small bug and -rootwin
pontscho
parents: 6025
diff changeset
375 vo_gc=XCreateGC( mDisplay,vo_window,0L,&xgcv );
7764
13c36b2d1d45 -fixed-vo support
pontscho
parents: 7689
diff changeset
376
7765
dbf1e5cfadbd fix memleak
pontscho
parents: 7764
diff changeset
377 if ( myximage )
dbf1e5cfadbd fix memleak
pontscho
parents: 7764
diff changeset
378 {
dbf1e5cfadbd fix memleak
pontscho
parents: 7764
diff changeset
379 freeMyXImage();
9494
543ab3909b78 sws_ prefix, more seperation between internal & external swscaler API
michael
parents: 9278
diff changeset
380 sws_freeContext(swsContext);
7765
dbf1e5cfadbd fix memleak
pontscho
parents: 7764
diff changeset
381 }
6043
421781c5b128 fix some small bug and -rootwin
pontscho
parents: 6025
diff changeset
382 getMyXImage();
421781c5b128 fix some small bug and -rootwin
pontscho
parents: 6025
diff changeset
383
421781c5b128 fix some small bug and -rootwin
pontscho
parents: 6025
diff changeset
384 if ( !WinID )
421781c5b128 fix some small bug and -rootwin
pontscho
parents: 6025
diff changeset
385 { vo_dwidth=vo_screenwidth; vo_dheight=vo_screenheight; }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
386
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
387 switch ((bpp=myximage->bits_per_pixel)){
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
388 case 24: draw_alpha_fnc=draw_alpha_24;
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
389 out_format= IMGFMT_BGR24; break;
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
390 case 32: draw_alpha_fnc=draw_alpha_32;
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
391 out_format= IMGFMT_BGR32; break;
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
392 case 15:
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
393 case 16: if (depth==15){
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
394 draw_alpha_fnc=draw_alpha_15;
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
395 out_format= IMGFMT_BGR15;
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
396 }else{
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
397 draw_alpha_fnc=draw_alpha_16;
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
398 out_format= IMGFMT_BGR16;
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
399 }break;
6692
ad521fb49a5e -vm -fs -zoom fix, set correct vm screenres in aspect code (similar to xv fix).
atmos4
parents: 6180
diff changeset
400 case 8: draw_alpha_fnc=draw_alpha_null;
ad521fb49a5e -vm -fs -zoom fix, set correct vm screenres in aspect code (similar to xv fix).
atmos4
parents: 6180
diff changeset
401 out_format= IMGFMT_BGR8; break;
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
402 default: draw_alpha_fnc=draw_alpha_null;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
403 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
404
5368
fdb92215a1fc Fix resizing when zoom is used and image size changes between frames.
atmos4
parents: 5248
diff changeset
405 /* always allocate swsContext as size could change between frames */
9494
543ab3909b78 sws_ prefix, more seperation between internal & external swscaler API
michael
parents: 9278
diff changeset
406 swsContext= sws_getContextFromCmdLine(width, height, in_format, width, height, out_format );
10177
9cee07f898f7 swscaler doesn't recognizes support for BGR1/BGR4 too, and so if forced it crashes, without checking the swsContext
alex
parents: 10176
diff changeset
407 if (!swsContext)
9cee07f898f7 swscaler doesn't recognizes support for BGR1/BGR4 too, and so if forced it crashes, without checking the swsContext
alex
parents: 10176
diff changeset
408 return -1;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
409
6694
9291268a3603 1000l, back out hack-n-slay 8bpp code from my local tree.
atmos4
parents: 6693
diff changeset
410 //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
411
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
412 // If we have blue in the lowest bit then obviously RGB
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
413 mode=( ( myximage->blue_mask & 0x01 ) != 0 ) ? MODE_RGB : MODE_BGR;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
414 #ifdef WORDS_BIGENDIAN
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
415 if ( myximage->byte_order != MSBFirst )
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
416 #else
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
417 if ( myximage->byte_order != LSBFirst )
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
418 #endif
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
419 {
1137
4c7b219e126c patch: some X11 compliance fixed: set ClassHint and better fullscreen mode
arpi_esp
parents: 1110
diff changeset
420 mode=( ( myximage->blue_mask & 0x01 ) != 0 ) ? MODE_BGR : MODE_RGB;
4382
2f540642e44d small typos in text
pl
parents: 4352
diff changeset
421 // 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
422 // return -1;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
423 }
6694
9291268a3603 1000l, back out hack-n-slay 8bpp code from my local tree.
atmos4
parents: 6693
diff changeset
424
5248
f23cea00d19c print meaningfull error message instead of "hmm, arpi said that isnt used...
michael
parents: 5163
diff changeset
425 #ifdef WORDS_BIGENDIAN
f23cea00d19c print meaningfull error message instead of "hmm, arpi said that isnt used...
michael
parents: 5163
diff changeset
426 if(mode==MODE_BGR && bpp!=32){
5935
5074aa8fae5a printf to mp_msg
albeu
parents: 5835
diff changeset
427 mp_msg(MSGT_VO,MSGL_ERR,"BGR%d not supported, please contact the developers\n", bpp);
4641
b7f340349470 allways use swScaler
michael
parents: 4627
diff changeset
428 return -1;
b7f340349470 allways use swScaler
michael
parents: 4627
diff changeset
429 }
5248
f23cea00d19c print meaningfull error message instead of "hmm, arpi said that isnt used...
michael
parents: 5163
diff changeset
430 #else
f23cea00d19c print meaningfull error message instead of "hmm, arpi said that isnt used...
michael
parents: 5163
diff changeset
431 if(mode==MODE_BGR){
5935
5074aa8fae5a printf to mp_msg
albeu
parents: 5835
diff changeset
432 mp_msg(MSGT_VO,MSGL_ERR,"BGR not supported, please contact the developers\n");
5248
f23cea00d19c print meaningfull error message instead of "hmm, arpi said that isnt used...
michael
parents: 5163
diff changeset
433 return -1;
f23cea00d19c print meaningfull error message instead of "hmm, arpi said that isnt used...
michael
parents: 5163
diff changeset
434 }
f23cea00d19c print meaningfull error message instead of "hmm, arpi said that isnt used...
michael
parents: 5163
diff changeset
435 #endif
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
436
4316
9f8a618e87c3 fix screen saver bug under gui
pontscho
parents: 4036
diff changeset
437 saver_off(mDisplay);
11542
85e503ddf65f runtime 'stay-on-top' functionality
joey
parents: 11000
diff changeset
438
85e503ddf65f runtime 'stay-on-top' functionality
joey
parents: 11000
diff changeset
439 if (vo_ontop) vo_x11_setlayer(mDisplay, vo_window, vo_ontop);
85e503ddf65f runtime 'stay-on-top' functionality
joey
parents: 11000
diff changeset
440
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
441 return 0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
442 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
443
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
444 static void Display_Image( XImage *myximage,uint8_t *ImageData )
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
445 {
3003
16a593a1e6ed changed SH_MEM to HAVE_SHM according to configure
alex
parents: 2969
diff changeset
446 #ifdef HAVE_SHM
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
447 if ( Shmem_Flag )
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
448 {
4804
62a281be07ce fix nexus's key bug :) 10l, sorry :)
pontscho
parents: 4791
diff changeset
449 XShmPutImage( mDisplay,vo_window,vo_gc,myximage,
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
450 0,0,
4641
b7f340349470 allways use swScaler
michael
parents: 4627
diff changeset
451 ( vo_dwidth - swsContext->dstW ) / 2,( vo_dheight - myximage->height ) / 2,
b7f340349470 allways use swScaler
michael
parents: 4627
diff changeset
452 swsContext->dstW,myximage->height,True );
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
453 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
454 else
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
455 #endif
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
456 {
4804
62a281be07ce fix nexus's key bug :) 10l, sorry :)
pontscho
parents: 4791
diff changeset
457 XPutImage( mDisplay,vo_window,vo_gc,myximage,
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
458 0,0,
4641
b7f340349470 allways use swScaler
michael
parents: 4627
diff changeset
459 ( vo_dwidth - swsContext->dstW ) / 2,( vo_dheight - myximage->height ) / 2,
b7f340349470 allways use swScaler
michael
parents: 4627
diff changeset
460 swsContext->dstW,myximage->height);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
461 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
462 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
463
1501
d40f2b686846 changes according to -utf8 option, draw_osd() function added
atlka
parents: 1137
diff changeset
464 static void draw_osd(void)
1647
22480104ddfd added draw_alpha_XXXX functions, draw_alpha_func<=correct one in init
atlka
parents: 1501
diff changeset
465 { vo_draw_text(image_width,image_height,draw_alpha_fnc); }
1501
d40f2b686846 changes according to -utf8 option, draw_osd() function added
atlka
parents: 1137
diff changeset
466
31
1fc618eba830 added check_events() interface
arpi_esp
parents: 1
diff changeset
467 static void flip_page( void ){
1fc618eba830 added check_events() interface
arpi_esp
parents: 1
diff changeset
468 Display_Image( myximage,ImageData );
1501
d40f2b686846 changes according to -utf8 option, draw_osd() function added
atlka
parents: 1137
diff changeset
469 XSync(mDisplay, False);
31
1fc618eba830 added check_events() interface
arpi_esp
parents: 1
diff changeset
470 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
471
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
472 static uint32_t draw_slice( uint8_t *src[],int stride[],int w,int h,int x,int y )
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
473 {
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
474 uint8_t *dst[3];
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
475 int dstStride[3];
6059
c0ae8c0eda72 fix Arpi's bugs
pontscho
parents: 6045
diff changeset
476
4734
cc375edb5eda added support for runtime fullscreen switching
alex
parents: 4726
diff changeset
477 if((old_vo_dwidth != vo_dwidth || old_vo_dheight != vo_dheight) /*&& y==0*/ && zoomFlag)
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
478 {
4641
b7f340349470 allways use swScaler
michael
parents: 4627
diff changeset
479 int newW= vo_dwidth;
b7f340349470 allways use swScaler
michael
parents: 4627
diff changeset
480 int newH= vo_dheight;
b7f340349470 allways use swScaler
michael
parents: 4627
diff changeset
481 int newAspect= (newW*(1<<16) + (newH>>1))/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
482 SwsContext *oldContext= swsContext;
4340
8a6f0b482acb added support for i420 and iyuv
alex
parents: 4316
diff changeset
483
4641
b7f340349470 allways use swScaler
michael
parents: 4627
diff changeset
484 if(newAspect>aspect) newW= (newH*aspect + (1<<15))>>16;
4662
90cf53f47ab7 minor rounding bugfix in the aspect stuff
michael
parents: 4661
diff changeset
485 else newH= ((newW<<16) + (aspect>>1)) /aspect;
4641
b7f340349470 allways use swScaler
michael
parents: 4627
diff changeset
486
b7f340349470 allways use swScaler
michael
parents: 4627
diff changeset
487 old_vo_dwidth= vo_dwidth;
b7f340349470 allways use swScaler
michael
parents: 4627
diff changeset
488 old_vo_dheight= vo_dheight;
b7f340349470 allways use swScaler
michael
parents: 4627
diff changeset
489
b7f340349470 allways use swScaler
michael
parents: 4627
diff changeset
490 if(sws_flags==0) newW&= (~31); // not needed but, if the user wants the FAST_BILINEAR SCALER, then its needed
b7f340349470 allways use swScaler
michael
parents: 4627
diff changeset
491
9494
543ab3909b78 sws_ prefix, more seperation between internal & external swscaler API
michael
parents: 9278
diff changeset
492 swsContext= sws_getContextFromCmdLine(srcW, srcH, in_format,
4541
fc978c8eff3b checking output of getSwsContext*()
michael
parents: 4512
diff changeset
493 newW, newH, out_format);
fc978c8eff3b checking output of getSwsContext*()
michael
parents: 4512
diff changeset
494 if(swsContext)
fc978c8eff3b checking output of getSwsContext*()
michael
parents: 4512
diff changeset
495 {
4627
3db7ee2ac7b0 bgr15 / bgr16 input support (with -zoom)
michael
parents: 4596
diff changeset
496 image_width= (newW+7)&(~7);
4541
fc978c8eff3b checking output of getSwsContext*()
michael
parents: 4512
diff changeset
497 image_height= newH;
4627
3db7ee2ac7b0 bgr15 / bgr16 input support (with -zoom)
michael
parents: 4596
diff changeset
498
4541
fc978c8eff3b checking output of getSwsContext*()
michael
parents: 4512
diff changeset
499 freeMyXImage();
fc978c8eff3b checking output of getSwsContext*()
michael
parents: 4512
diff changeset
500 getMyXImage();
9494
543ab3909b78 sws_ prefix, more seperation between internal & external swscaler API
michael
parents: 9278
diff changeset
501 sws_freeContext(oldContext);
4541
fc978c8eff3b checking output of getSwsContext*()
michael
parents: 4512
diff changeset
502 }
fc978c8eff3b checking output of getSwsContext*()
michael
parents: 4512
diff changeset
503 else
fc978c8eff3b checking output of getSwsContext*()
michael
parents: 4512
diff changeset
504 {
fc978c8eff3b checking output of getSwsContext*()
michael
parents: 4512
diff changeset
505 swsContext= oldContext;
fc978c8eff3b checking output of getSwsContext*()
michael
parents: 4512
diff changeset
506 }
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
507 }
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
508 dstStride[1]=
4641
b7f340349470 allways use swScaler
michael
parents: 4627
diff changeset
509 dstStride[2]=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
510 dst[1]=
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
511 dst[2]=NULL;
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
512
4641
b7f340349470 allways use swScaler
michael
parents: 4627
diff changeset
513 if(Flip_Flag)
b7f340349470 allways use swScaler
michael
parents: 4627
diff changeset
514 {
b7f340349470 allways use swScaler
michael
parents: 4627
diff changeset
515 dstStride[0]= -image_width*((bpp+7)/8);
b7f340349470 allways use swScaler
michael
parents: 4627
diff changeset
516 dst[0]=ImageData - dstStride[0]*(image_height-1);
9697
5025150738eb 10000l (YUV vs. YVU swscale fix/cleanup)
michael
parents: 9494
diff changeset
517 sws_scale_ordered(swsContext,src,stride,y,h,dst, dstStride);
4641
b7f340349470 allways use swScaler
michael
parents: 4627
diff changeset
518 }
b7f340349470 allways use swScaler
michael
parents: 4627
diff changeset
519 else
b7f340349470 allways use swScaler
michael
parents: 4627
diff changeset
520 {
b7f340349470 allways use swScaler
michael
parents: 4627
diff changeset
521 dstStride[0]=image_width*((bpp+7)/8);
b7f340349470 allways use swScaler
michael
parents: 4627
diff changeset
522 dst[0]=ImageData;
9697
5025150738eb 10000l (YUV vs. YVU swscale fix/cleanup)
michael
parents: 9494
diff changeset
523 sws_scale_ordered(swsContext,src,stride,y,h,dst, dstStride);
4641
b7f340349470 allways use swScaler
michael
parents: 4627
diff changeset
524 }
b7f340349470 allways use swScaler
michael
parents: 4627
diff changeset
525 return 0;
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
526 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
527
775
1cc160d46319 flip implemented for converted modes, soem cleanup, fixed indent
arpi_esp
parents: 767
diff changeset
528 static uint32_t draw_frame( uint8_t *src[] ){
7683
2f802d9323de - implemented draw_image()
arpi
parents: 7539
diff changeset
529 #if 0
4512
f52e38e03bb7 YUY2 BGR32 BGR24 support for vo_x11 if swScaler is used
michael
parents: 4443
diff changeset
530 int stride[3]= {0,0,0};
4641
b7f340349470 allways use swScaler
michael
parents: 4627
diff changeset
531
4726
9ff121145b20 101 (NULL->srcW, NULL->srcH)
michael
parents: 4718
diff changeset
532 if (in_format==IMGFMT_YUY2) stride[0]=srcW*2;
6692
ad521fb49a5e -vm -fs -zoom fix, set correct vm screenres in aspect code (similar to xv fix).
atmos4
parents: 6180
diff changeset
533 else if(in_format==IMGFMT_BGR8) stride[0]=srcW;
4726
9ff121145b20 101 (NULL->srcW, NULL->srcH)
michael
parents: 4718
diff changeset
534 else if(in_format==IMGFMT_BGR15) stride[0]=srcW*2;
9ff121145b20 101 (NULL->srcW, NULL->srcH)
michael
parents: 4718
diff changeset
535 else if(in_format==IMGFMT_BGR16) stride[0]=srcW*2;
9ff121145b20 101 (NULL->srcW, NULL->srcH)
michael
parents: 4718
diff changeset
536 else if(in_format==IMGFMT_BGR24) stride[0]=srcW*3;
9ff121145b20 101 (NULL->srcW, NULL->srcH)
michael
parents: 4718
diff changeset
537 else if(in_format==IMGFMT_BGR32) stride[0]=srcW*4;
4512
f52e38e03bb7 YUY2 BGR32 BGR24 support for vo_x11 if swScaler is used
michael
parents: 4443
diff changeset
538
4726
9ff121145b20 101 (NULL->srcW, NULL->srcH)
michael
parents: 4718
diff changeset
539 return draw_slice(src, stride, srcW, srcH, 0, 0);
7683
2f802d9323de - implemented draw_image()
arpi
parents: 7539
diff changeset
540 #else
2f802d9323de - implemented draw_image()
arpi
parents: 7539
diff changeset
541 printf("draw_frame() called!!!!!!\n");
2f802d9323de - implemented draw_image()
arpi
parents: 7539
diff changeset
542 return -1;
2f802d9323de - implemented draw_image()
arpi
parents: 7539
diff changeset
543 #endif
2f802d9323de - implemented draw_image()
arpi
parents: 7539
diff changeset
544 }
2f802d9323de - implemented draw_image()
arpi
parents: 7539
diff changeset
545
5130
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
546 static uint32_t get_image(mp_image_t *mpi)
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
547 {
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
548 if (zoomFlag ||
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
549 !IMGFMT_IS_BGR(mpi->imgfmt) ||
5416
310b06d372d0 check depth for direct rendering
arpi
parents: 5414
diff changeset
550 (IMGFMT_BGR_DEPTH(mpi->imgfmt) != vo_depthonscreen) ||
5130
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
551 ((mpi->type != MP_IMGTYPE_STATIC) && (mpi->type != MP_IMGTYPE_TEMP)) ||
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
552 (mpi->flags & MP_IMGFLAG_PLANAR) ||
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
553 (mpi->flags & MP_IMGFLAG_YUV) ||
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
554 (mpi->width != image_width) ||
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
555 (mpi->height != image_height)
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
556 )
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
557 return(VO_FALSE);
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
558
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
559 if (Flip_Flag)
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
560 {
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
561 mpi->stride[0] = -image_width*((bpp+7)/8);
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
562 mpi->planes[0] = ImageData - mpi->stride[0]*(image_height-1);
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
563 }
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
564 else
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
565 {
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
566 mpi->stride[0] = image_width*((bpp+7)/8);
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
567 mpi->planes[0] = ImageData;
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
568 }
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
569 mpi->flags |= MP_IMGFLAG_DIRECT;
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
570
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
571 return(VO_TRUE);
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
572 }
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
573
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
574 static uint32_t query_format( uint32_t format )
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
575 {
5935
5074aa8fae5a printf to mp_msg
albeu
parents: 5835
diff changeset
576 mp_msg(MSGT_VO,MSGL_DBG2,"vo_x11: query_format was called: %x (%s)\n",format,vo_format_name(format));
5130
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
577 if (IMGFMT_IS_BGR(format))
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
578 {
10177
9cee07f898f7 swscaler doesn't recognizes support for BGR1/BGR4 too, and so if forced it crashes, without checking the swsContext
alex
parents: 10176
diff changeset
579 if (IMGFMT_BGR_DEPTH(format) <= 8)
6694
9291268a3603 1000l, back out hack-n-slay 8bpp code from my local tree.
atmos4
parents: 6693
diff changeset
580 return 0; // TODO 8bpp not yet fully implemented
5130
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
581 if (IMGFMT_BGR_DEPTH(format) == vo_depthonscreen)
7689
39e62d6592ca since draw_slice() supports RGB/BGR, we don't need draw_image() for stride
arpi
parents: 7683
diff changeset
582 return 3|VFCAP_OSD|VFCAP_SWSCALE|VFCAP_FLIP|VFCAP_ACCEPT_STRIDE;
5130
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
583 else
7689
39e62d6592ca since draw_slice() supports RGB/BGR, we don't need draw_image() for stride
arpi
parents: 7683
diff changeset
584 return 1|VFCAP_OSD|VFCAP_SWSCALE|VFCAP_FLIP|VFCAP_ACCEPT_STRIDE;
5130
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
585 }
325
b2fd5c172f80 vo_x11 query_format fix
laaz
parents: 324
diff changeset
586
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
587 switch( format )
324
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 322
diff changeset
588 {
6692
ad521fb49a5e -vm -fs -zoom fix, set correct vm screenres in aspect code (similar to xv fix).
atmos4
parents: 6180
diff changeset
589 // case IMGFMT_BGR8:
5130
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
590 // case IMGFMT_BGR15:
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
591 // case IMGFMT_BGR16:
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
592 // case IMGFMT_BGR24:
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
593 // case IMGFMT_BGR32:
6694
9291268a3603 1000l, back out hack-n-slay 8bpp code from my local tree.
atmos4
parents: 6693
diff changeset
594 // return 0x2;
4905
eb1a28f1236a yuy2 support disabled to workaround stupid colorspace selection
michael
parents: 4889
diff changeset
595 // case IMGFMT_YUY2:
4340
8a6f0b482acb added support for i420 and iyuv
alex
parents: 4316
diff changeset
596 case IMGFMT_I420:
8a6f0b482acb added support for i420 and iyuv
alex
parents: 4316
diff changeset
597 case IMGFMT_IYUV:
5130
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
598 case IMGFMT_YV12:
7689
39e62d6592ca since draw_slice() supports RGB/BGR, we don't need draw_image() for stride
arpi
parents: 7683
diff changeset
599 return 1|VFCAP_OSD|VFCAP_SWSCALE|VFCAP_ACCEPT_STRIDE;
324
720c640332c8 Szebb es jobb screensaver-kikapcsolo resz
laaz
parents: 322
diff changeset
600 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
601 return 0;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
602 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
603
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
604
7683
2f802d9323de - implemented draw_image()
arpi
parents: 7539
diff changeset
605 static void uninit(void)
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
606 {
5414
871f8ebecdef fix uninit() crash if no config() call
arpi
parents: 5368
diff changeset
607 if(!myximage) return;
871f8ebecdef fix uninit() crash if no config() call
arpi
parents: 5368
diff changeset
608
4443
cf62fa252821 removed obsoleted Terminate_Display_Process, using freeMyXImage and vo_x11_uninit at exit
alex
parents: 4433
diff changeset
609 freeMyXImage();
4316
9f8a618e87c3 fix screen saver bug under gui
pontscho
parents: 4036
diff changeset
610 saver_on(mDisplay); // screen saver back on
4426
1ceadec3ea67 using the common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4420
diff changeset
611
206
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
612 #ifdef HAVE_XF86VM
4426
1ceadec3ea67 using the common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4420
diff changeset
613 vo_vm_close(mDisplay);
206
82b5ae8ceaf4 adds XF86VidMode support to vo_x11.c to do "pseudo-scaling"
mgraffam
parents: 202
diff changeset
614 #endif
4426
1ceadec3ea67 using the common -vm code, patch by Santi Bjar <tiarda@yahoo.es>
arpi
parents: 4420
diff changeset
615
6013
7f6e02a16ac4 some bugfix, x[11|mga|v] ( fullscreen with more files )
pontscho
parents: 5999
diff changeset
616 zoomFlag=0;
6095
891cff8aba60 some cleanup, gl/gl2 updated to use vo_window
arpi
parents: 6080
diff changeset
617 vo_x11_uninit();
4677
305a0c20bde4 default is allways nozoom again (specify -zoom if u want the sane behavior)
michael
parents: 4662
diff changeset
618
9494
543ab3909b78 sws_ prefix, more seperation between internal & external swscaler API
michael
parents: 9278
diff changeset
619 sws_freeContext(swsContext);
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
620 }
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
621
4352
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4340
diff changeset
622 static uint32_t preinit(const char *arg)
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4340
diff changeset
623 {
4737
32e1f5042f65 I don't like such reports: '-vo dga:vidix or -vo x11:vidix works fine for me'
nick
parents: 4734
diff changeset
624 if(arg)
32e1f5042f65 I don't like such reports: '-vo dga:vidix or -vo x11:vidix works fine for me'
nick
parents: 4734
diff changeset
625 {
5935
5074aa8fae5a printf to mp_msg
albeu
parents: 5835
diff changeset
626 mp_msg(MSGT_VO,MSGL_ERR,"vo_x11: Unknown subdevice: %s\n",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
627 return ENOSYS;
32e1f5042f65 I don't like such reports: '-vo dga:vidix or -vo x11:vidix works fine for me'
nick
parents: 4734
diff changeset
628 }
5130
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
629
7683
2f802d9323de - implemented draw_image()
arpi
parents: 7539
diff changeset
630 if( !vo_init() ) 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
631 return 0;
4352
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4340
diff changeset
632 }
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
633
4596
c35d7ce151b3 10000hl to Holm... control MUST BE static...
arpi
parents: 4592
diff changeset
634 static uint32_t control(uint32_t request, void *data, ...)
4352
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4340
diff changeset
635 {
4592
5fbfd8545c3b query_ stuff replaced by new control() - patch by David Holm
arpi
parents: 4554
diff changeset
636 switch (request) {
10757
3aea64e0d6d9 Avoid flickering during resizes. Keep video contents even when paused. Fix by Tomas Simonaitis <haden@homelan.lt>
mosu
parents: 10728
diff changeset
637 case VOCTRL_PAUSE: return (int_pause=1);
3aea64e0d6d9 Avoid flickering during resizes. Keep video contents even when paused. Fix by Tomas Simonaitis <haden@homelan.lt>
mosu
parents: 10728
diff changeset
638 case VOCTRL_RESUME: return (int_pause=0);
4592
5fbfd8545c3b query_ stuff replaced by new control() - patch by David Holm
arpi
parents: 4554
diff changeset
639 case VOCTRL_QUERY_FORMAT:
5fbfd8545c3b query_ stuff replaced by new control() - patch by David Holm
arpi
parents: 4554
diff changeset
640 return query_format(*((uint32_t*)data));
4734
cc375edb5eda added support for runtime fullscreen switching
alex
parents: 4726
diff changeset
641 case VOCTRL_GUISUPPORT:
cc375edb5eda added support for runtime fullscreen switching
alex
parents: 4726
diff changeset
642 return VO_TRUE;
5130
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
643 case VOCTRL_GET_IMAGE:
305b1fbde890 added directrendering support and better query_format
alex
parents: 4993
diff changeset
644 return get_image(data);
7964
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7765
diff changeset
645 case VOCTRL_SET_EQUALIZER:
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7765
diff changeset
646 {
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7765
diff changeset
647 va_list ap;
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7765
diff changeset
648 int value;
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7765
diff changeset
649 va_start(ap, data);
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7765
diff changeset
650 value = va_arg(ap, int);
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7765
diff changeset
651 va_end(ap);
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7765
diff changeset
652 return vo_x11_set_equalizer(data, value);
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7765
diff changeset
653 }
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7765
diff changeset
654 case VOCTRL_GET_EQUALIZER:
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7765
diff changeset
655 {
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7765
diff changeset
656 va_list ap;
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7765
diff changeset
657 int *value;
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7765
diff changeset
658 va_start(ap, data);
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7765
diff changeset
659 value = va_arg(ap, int *);
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7765
diff changeset
660 va_end(ap);
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7765
diff changeset
661 return vo_x11_get_equalizer(data, value);
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7765
diff changeset
662 }
11542
85e503ddf65f runtime 'stay-on-top' functionality
joey
parents: 11000
diff changeset
663 case VOCTRL_ONTOP:
85e503ddf65f runtime 'stay-on-top' functionality
joey
parents: 11000
diff changeset
664 vo_x11_ontop();
85e503ddf65f runtime 'stay-on-top' functionality
joey
parents: 11000
diff changeset
665 return VO_TRUE;
4734
cc375edb5eda added support for runtime fullscreen switching
alex
parents: 4726
diff changeset
666 case VOCTRL_FULLSCREEN:
10757
3aea64e0d6d9 Avoid flickering during resizes. Keep video contents even when paused. Fix by Tomas Simonaitis <haden@homelan.lt>
mosu
parents: 10728
diff changeset
667 {
3aea64e0d6d9 Avoid flickering during resizes. Keep video contents even when paused. Fix by Tomas Simonaitis <haden@homelan.lt>
mosu
parents: 10728
diff changeset
668 vo_x11_fullscreen();
3aea64e0d6d9 Avoid flickering during resizes. Keep video contents even when paused. Fix by Tomas Simonaitis <haden@homelan.lt>
mosu
parents: 10728
diff changeset
669 vo_x11_clearwindow(mDisplay, vo_window);
3aea64e0d6d9 Avoid flickering during resizes. Keep video contents even when paused. Fix by Tomas Simonaitis <haden@homelan.lt>
mosu
parents: 10728
diff changeset
670 }
4790
50288f9f6b15 Fix return value of VOCTRL_FULLSCREEN
atmos4
parents: 4780
diff changeset
671 return VO_TRUE;
4592
5fbfd8545c3b query_ stuff replaced by new control() - patch by David Holm
arpi
parents: 4554
diff changeset
672 }
5fbfd8545c3b query_ stuff replaced by new control() - patch by David Holm
arpi
parents: 4554
diff changeset
673 return VO_NOTIMPL;
4352
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4340
diff changeset
674 }
6692
ad521fb49a5e -vm -fs -zoom fix, set correct vm screenres in aspect code (similar to xv fix).
atmos4
parents: 6180
diff changeset
675