annotate libvo/vo_gl2.c @ 14021:f0236d5ba7a7

Remove broken support for directbuffer and including frame-handling use. Allows using of directrendering for hw acceleration, with fallbacl to directbuffer. No more black frames. No more flickering. patch by Christoph Egger, approved by al3x
author iive
date Tue, 23 Nov 2004 16:07:14 +0000
parents b7ba9bcd1916
children c4033dcb986f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1 /*
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
2 * video_out_gl.c, X11/OpenGL interface
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
3 * based on video_out_x11 by Aaron Holtzman,
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
4 * and WS opengl window manager by Pontscho/Fresh!
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
5 */
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
6
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
7 #include <stdio.h>
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
8 #include <stdlib.h>
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
9 #include <string.h>
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
10 #include <math.h>
4737
32e1f5042f65 I don't like such reports: '-vo dga:vidix or -vo x11:vidix works fine for me'
nick
parents: 4658
diff changeset
11 #include <errno.h>
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
12
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
13 #include "config.h"
11087
b427c796638b * clear window on fullscreen switch
attila
parents: 11000
diff changeset
14 #include "mp_msg.h"
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
15 #include "video_out.h"
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
16 #include "video_out_internal.h"
8123
9fc45fe0d444 *HUGE* set of compiler warning fixes, unused variables removal
arpi
parents: 7964
diff changeset
17 #include "sub.h"
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
18
12382
a830eebf6693 GUI support
reimar
parents: 12035
diff changeset
19 #ifdef HAVE_NEW_GUI
13787
e047e70a9767 Handle "xxx.h" vs "../xxx.h" include paths in a consistent way.
diego
parents: 13653
diff changeset
20 #include "Gui/interface.h"
12382
a830eebf6693 GUI support
reimar
parents: 12035
diff changeset
21 #endif
a830eebf6693 GUI support
reimar
parents: 12035
diff changeset
22
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
23 #include <GL/gl.h>
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
24 #ifdef GL_WIN32
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
25 #include <windows.h>
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
26 #include <GL/glext.h>
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
27 #else
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
28 #include <X11/Xlib.h>
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
29 #include <X11/Xutil.h>
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
30 #include <GL/glx.h>
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
31 #endif
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
32 #include <errno.h>
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
33
13653
799f81d3cb19 added gl_common for code used by both vo_gl.c and vo_gl2.c.
reimar
parents: 13575
diff changeset
34 #include "gl_common.h"
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
35 #ifdef GL_WIN32
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
36 #include "w32_common.h"
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
37 #else
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
38 #include "x11_common.h"
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
39 #endif
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
40 #include "aspect.h"
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
41
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
42 #define NDEBUG
2276
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
43 //#undef NDEBUG
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
44
12750
38c660174053 removed XFlush() before XSync(), made config_glx return-type signed, force 32bit on Darwin, idea from a patch by Marc Hoffman (mmh <at> pleasantst.com).
reimar
parents: 12709
diff changeset
45 #undef TEXTUREFORMAT_ALWAYS
38c660174053 removed XFlush() before XSync(), made config_glx return-type signed, force 32bit on Darwin, idea from a patch by Marc Hoffman (mmh <at> pleasantst.com).
reimar
parents: 12709
diff changeset
46 #undef TEXTUREFORMAT_ALWAYS_S
38c660174053 removed XFlush() before XSync(), made config_glx return-type signed, force 32bit on Darwin, idea from a patch by Marc Hoffman (mmh <at> pleasantst.com).
reimar
parents: 12709
diff changeset
47 #ifdef SYS_DARWIN
12842
5ab2ea430653 use RGB32 textures on OS X
reimar
parents: 12762
diff changeset
48 #define TEXTUREFORMAT_ALWAYS GL_RGBA8
5ab2ea430653 use RGB32 textures on OS X
reimar
parents: 12762
diff changeset
49 #define TEXTUREFORMAT_ALWAYS_S "GL_RGBA8"
12750
38c660174053 removed XFlush() before XSync(), made config_glx return-type signed, force 32bit on Darwin, idea from a patch by Marc Hoffman (mmh <at> pleasantst.com).
reimar
parents: 12709
diff changeset
50 #endif
10143
fd3cbeb388f0 removed broken swscaler support, added runtime fullscreens switching ability, and some other general cleanup thingies
alex
parents: 8254
diff changeset
51
8148
5b39e79af5fe removed get_info, using the same sheme as in libmpcodecs instead
alex
parents: 8123
diff changeset
52 static vo_info_t info =
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
53 {
2126
724af64311c8 info & author changed
arpi
parents: 2124
diff changeset
54 "X11 (OpenGL) - multiple textures version",
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
55 "gl2",
2126
724af64311c8 info & author changed
arpi
parents: 2124
diff changeset
56 "Arpad Gereoffy & Sven Goethel",
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
57 ""
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
58 };
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
59
8148
5b39e79af5fe removed get_info, using the same sheme as in libmpcodecs instead
alex
parents: 8123
diff changeset
60 LIBVO_EXTERN(gl2)
5b39e79af5fe removed get_info, using the same sheme as in libmpcodecs instead
alex
parents: 8123
diff changeset
61
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
62 /* private prototypes */
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
63
10143
fd3cbeb388f0 removed broken swscaler support, added runtime fullscreens switching ability, and some other general cleanup thingies
alex
parents: 8254
diff changeset
64 #define MODE_BGR 1
fd3cbeb388f0 removed broken swscaler support, added runtime fullscreens switching ability, and some other general cleanup thingies
alex
parents: 8254
diff changeset
65 #define MODE_RGB 0
2455
712a46dff92d printf-gcc3 patch, x11-commons mRootwin
sven
parents: 2453
diff changeset
66
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
67 /* local data */
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
68 static unsigned char *ImageData=NULL;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
69
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
70 /* X11 related variables */
6095
891cff8aba60 some cleanup, gl/gl2 updated to use vo_window
arpi
parents: 5651
diff changeset
71 //static Window vo_window;
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
72
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
73 //static int texture_id=1;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
74
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
75 #ifndef GL_WIN32
13871
8298dc8ca78b more fullscreen fixes and gl2 uses setGlWindow.
reimar
parents: 13787
diff changeset
76 static XVisualInfo *gl_vinfo = NULL;
8298dc8ca78b more fullscreen fixes and gl2 uses setGlWindow.
reimar
parents: 13787
diff changeset
77 static GLXContext gl_context = 0;
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
78 #endif
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
79
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
80 static uint32_t image_width;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
81 static uint32_t image_height;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
82 static uint32_t image_format;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
83 static uint32_t image_bpp;
2276
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
84 static int image_mode;
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
85 static uint32_t image_bytes;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
86
10757
3aea64e0d6d9 Avoid flickering during resizes. Keep video contents even when paused. Fix by Tomas Simonaitis <haden@homelan.lt>
mosu
parents: 10604
diff changeset
87 static int int_pause;
3aea64e0d6d9 Avoid flickering during resizes. Keep video contents even when paused. Fix by Tomas Simonaitis <haden@homelan.lt>
mosu
parents: 10604
diff changeset
88
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
89 static uint32_t texture_width;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
90 static uint32_t texture_height;
12448
180c2fb327d3 removing useless code, improving readability
reimar
parents: 12446
diff changeset
91 static int texnumx, texnumy, raw_line_len;
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
92 static GLfloat texpercx, texpercy;
13540
02c0d4371573 fixed memleak, especially for fixed-vo.
reimar
parents: 12895
diff changeset
93 static struct TexSquare * texgrid = NULL;
2276
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
94 static GLint gl_internal_format;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
95 static char * gl_internal_format_s;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
96 static int rgb_sz, r_sz, g_sz, b_sz, a_sz;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
97 static GLint gl_bitmap_format;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
98 static char * gl_bitmap_format_s;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
99 static GLint gl_bitmap_type;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
100 static char * gl_bitmap_type_s;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
101 static int isGL12 = GL_FALSE;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
102
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
103 static int gl_bilinear=1;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
104 static int gl_antialias=0;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
105
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
106 static void (*draw_alpha_fnc)
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
107 (int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride);
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
108
10757
3aea64e0d6d9 Avoid flickering during resizes. Keep video contents even when paused. Fix by Tomas Simonaitis <haden@homelan.lt>
mosu
parents: 10604
diff changeset
109
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
110 /* The squares that are tiled to make up the game screen polygon */
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
111
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
112 struct TexSquare
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
113 {
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
114 GLubyte *texture;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
115 GLuint texobj;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
116 int isTexture;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
117 GLfloat fx1, fy1, fx2, fy2, fx3, fy3, fx4, fy4;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
118 GLfloat xcov, ycov;
2276
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
119 int isDirty;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
120 int dirtyXoff, dirtyYoff, dirtyWidth, dirtyHeight;
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
121 };
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
122
12448
180c2fb327d3 removing useless code, improving readability
reimar
parents: 12446
diff changeset
123 static void resetTexturePointers(unsigned char *imageSource);
180c2fb327d3 removing useless code, improving readability
reimar
parents: 12446
diff changeset
124
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
125 static void CalcFlatPoint(int x,int y,GLfloat *px,GLfloat *py)
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
126 {
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
127 *px=(float)x*texpercx;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
128 if(*px>1.0) *px=1.0;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
129 *py=(float)y*texpercy;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
130 if(*py>1.0) *py=1.0;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
131 }
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
132
10604
alex
parents: 10143
diff changeset
133 static int initTextures()
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
134 {
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
135 struct TexSquare *tsq=0;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
136 int e_x, e_y, s, i=0;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
137 int x=0, y=0;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
138 GLint format=0;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
139 GLenum err;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
140
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
141 /* achieve the 2**e_x:=texture_width, 2**e_y:=texture_height */
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
142 e_x=0; s=1;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
143 while (s<texture_width)
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
144 { s*=2; e_x++; }
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
145 texture_width=s;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
146
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
147 e_y=0; s=1;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
148 while (s<texture_height)
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
149 { s*=2; e_y++; }
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
150 texture_height=s;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
151
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
152
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
153 /* Test the max texture size */
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
154 do
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
155 {
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
156 glTexImage2D (GL_PROXY_TEXTURE_2D, 0,
2276
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
157 gl_internal_format,
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
158 texture_width, texture_height,
2276
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
159 0, gl_bitmap_format, gl_bitmap_type, NULL);
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
160
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
161 glGetTexLevelParameteriv
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
162 (GL_PROXY_TEXTURE_2D, 0, GL_TEXTURE_INTERNAL_FORMAT, &format);
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
163
2276
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
164 if (format != gl_internal_format)
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
165 {
11988
ccb15c72f331 printf -> mp_msg
attila
parents: 11542
diff changeset
166 mp_msg (MSGT_VO, MSGL_V, "[gl2] Needed texture [%dx%d] too big, trying ",
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
167 texture_height, texture_width);
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
168
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
169 if (texture_width > texture_height)
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
170 {
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
171 e_x--;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
172 texture_width = 1;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
173 for (i = e_x; i > 0; i--)
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
174 texture_width *= 2;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
175 }
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
176 else
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
177 {
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
178 e_y--;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
179 texture_height = 1;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
180 for (i = e_y; i > 0; i--)
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
181 texture_height *= 2;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
182 }
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
183
11988
ccb15c72f331 printf -> mp_msg
attila
parents: 11542
diff changeset
184 mp_msg (MSGT_VO, MSGL_V, "[%dx%d] !\n", texture_height, texture_width);
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
185
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
186 if(texture_width < 64 || texture_height < 64)
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
187 {
11988
ccb15c72f331 printf -> mp_msg
attila
parents: 11542
diff changeset
188 mp_msg (MSGT_VO, MSGL_FATAL, "[gl2] Give up .. usable texture size not avaiable, or texture config error !\n");
10604
alex
parents: 10143
diff changeset
189 return -1;
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
190 }
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
191 }
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
192 }
2276
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
193 while (format != gl_internal_format && texture_width > 1 && texture_height > 1);
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
194
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
195 texnumx = image_width / texture_width;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
196 if ((image_width % texture_width) > 0)
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
197 texnumx++;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
198
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
199 texnumy = image_height / texture_height;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
200 if ((image_height % texture_height) > 0)
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
201 texnumy++;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
202
11988
ccb15c72f331 printf -> mp_msg
attila
parents: 11542
diff changeset
203 mp_msg(MSGT_VO, MSGL_V, "[gl2] Creating %dx%d textures of size %dx%d ...\n",
3564
alex
parents: 2732
diff changeset
204 texnumx, texnumy, texture_width,texture_height);
2276
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
205
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
206 /* Allocate the texture memory */
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
207
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
208 texpercx = (GLfloat) texture_width / (GLfloat) image_width;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
209 if (texpercx > 1.0)
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
210 texpercx = 1.0;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
211
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
212 texpercy = (GLfloat) texture_height / (GLfloat) image_height;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
213 if (texpercy > 1.0)
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
214 texpercy = 1.0;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
215
13540
02c0d4371573 fixed memleak, especially for fixed-vo.
reimar
parents: 12895
diff changeset
216 if (texgrid)
02c0d4371573 fixed memleak, especially for fixed-vo.
reimar
parents: 12895
diff changeset
217 free(texgrid);
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
218 texgrid = (struct TexSquare *)
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
219 calloc (texnumx * texnumy, sizeof (struct TexSquare));
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
220
12448
180c2fb327d3 removing useless code, improving readability
reimar
parents: 12446
diff changeset
221 raw_line_len = image_width * image_bytes;
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
222
11988
ccb15c72f331 printf -> mp_msg
attila
parents: 11542
diff changeset
223 mp_msg (MSGT_VO, MSGL_DBG2, "[gl2] texture-usage %d*width=%d, %d*height=%d\n",
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
224 (int) texnumx, (int) texture_width, (int) texnumy,
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
225 (int) texture_height);
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
226
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
227 for (y = 0; y < texnumy; y++)
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
228 {
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
229 for (x = 0; x < texnumx; x++)
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
230 {
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
231 tsq = texgrid + y * texnumx + x;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
232
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
233 if (x == texnumx - 1 && image_width % texture_width)
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
234 tsq->xcov =
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
235 (GLfloat) (image_width % texture_width) / (GLfloat) texture_width;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
236 else
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
237 tsq->xcov = 1.0;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
238
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
239 if (y == texnumy - 1 && image_height % texture_height)
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
240 tsq->ycov =
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
241 (GLfloat) (image_height % texture_height) / (GLfloat) texture_height;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
242 else
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
243 tsq->ycov = 1.0;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
244
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
245 CalcFlatPoint (x, y, &(tsq->fx1), &(tsq->fy1));
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
246 CalcFlatPoint (x + 1, y, &(tsq->fx2), &(tsq->fy2));
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
247 CalcFlatPoint (x + 1, y + 1, &(tsq->fx3), &(tsq->fy3));
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
248 CalcFlatPoint (x, y + 1, &(tsq->fx4), &(tsq->fy4));
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
249
2276
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
250 tsq->isDirty=GL_TRUE;
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
251 tsq->isTexture=GL_FALSE;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
252 tsq->texobj=0;
2276
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
253 tsq->dirtyXoff=0; tsq->dirtyYoff=0; tsq->dirtyWidth=-1; tsq->dirtyHeight=-1;
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
254
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
255 glGenTextures (1, &(tsq->texobj));
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
256
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
257 glBindTexture (GL_TEXTURE_2D, tsq->texobj);
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
258 err = glGetError ();
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
259 if(err==GL_INVALID_ENUM)
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
260 {
11988
ccb15c72f331 printf -> mp_msg
attila
parents: 11542
diff changeset
261 mp_msg (MSGT_VO, MSGL_ERR, "GLERROR glBindTexture (glGenText) := GL_INVALID_ENUM, texnum x=%d, y=%d, texture=%d\n", x, y, tsq->texobj);
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
262 }
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
263
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
264 if(glIsTexture(tsq->texobj) == GL_FALSE)
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
265 {
11988
ccb15c72f331 printf -> mp_msg
attila
parents: 11542
diff changeset
266 mp_msg (MSGT_VO, MSGL_ERR, "GLERROR ain't a texture (glGenText): texnum x=%d, y=%d, texture=%d\n",
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
267 x, y, tsq->texobj);
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
268 } else {
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
269 tsq->isTexture=GL_TRUE;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
270 }
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
271
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
272 glTexImage2D (GL_TEXTURE_2D, 0,
2276
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
273 gl_internal_format,
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
274 texture_width, texture_height,
2276
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
275 0, gl_bitmap_format, gl_bitmap_type, NULL);
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
276
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
277 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_PRIORITY, 1.0);
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
278
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
279 glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
280 glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
281
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
282 glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
283 glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
284
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
285 glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
286
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
287 } /* for all texnumx */
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
288 } /* for all texnumy */
12448
180c2fb327d3 removing useless code, improving readability
reimar
parents: 12446
diff changeset
289 resetTexturePointers (ImageData);
10604
alex
parents: 10143
diff changeset
290
alex
parents: 10143
diff changeset
291 return 0;
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
292 }
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
293
2276
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
294 static void resetTexturePointers(unsigned char *imageSource)
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
295 {
12448
180c2fb327d3 removing useless code, improving readability
reimar
parents: 12446
diff changeset
296 unsigned char *texdata_start, *line_start;
180c2fb327d3 removing useless code, improving readability
reimar
parents: 12446
diff changeset
297 struct TexSquare *tsq = texgrid;
2276
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
298 int x=0, y=0;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
299
12448
180c2fb327d3 removing useless code, improving readability
reimar
parents: 12446
diff changeset
300 line_start = (unsigned char *) imageSource;
2276
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
301
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
302 for (y = 0; y < texnumy; y++)
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
303 {
12448
180c2fb327d3 removing useless code, improving readability
reimar
parents: 12446
diff changeset
304 texdata_start = line_start;
2276
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
305 for (x = 0; x < texnumx; x++)
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
306 {
12448
180c2fb327d3 removing useless code, improving readability
reimar
parents: 12446
diff changeset
307 tsq->texture = texdata_start;
180c2fb327d3 removing useless code, improving readability
reimar
parents: 12446
diff changeset
308 texdata_start += texture_width * image_bytes;
180c2fb327d3 removing useless code, improving readability
reimar
parents: 12446
diff changeset
309 tsq++;
2276
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
310 } /* for all texnumx */
12448
180c2fb327d3 removing useless code, improving readability
reimar
parents: 12446
diff changeset
311 line_start += texture_height * raw_line_len;
2276
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
312 } /* for all texnumy */
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
313 }
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
314
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
315 static void setupTextureDirtyArea(int x, int y, int w,int h)
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
316 {
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
317 struct TexSquare *square;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
318 int xi, yi, wd, ht, wh, hh;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
319 int wdecr, hdecr, xh, yh;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
320
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
321 wdecr=w; hdecr=h; xh=x; yh=y;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
322
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
323 for (yi = 0; hdecr>0 && yi < texnumy; yi++)
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
324 {
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
325 if (yi < texnumy - 1)
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
326 ht = texture_height;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
327 else
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
328 ht = image_height - texture_height * yi;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
329
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
330 xh =x;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
331 wdecr =w;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
332
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
333 for (xi = 0; wdecr>0 && xi < texnumx; xi++)
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
334 {
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
335 square = texgrid + yi * texnumx + xi;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
336
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
337 if (xi < texnumx - 1)
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
338 wd = texture_width;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
339 else
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
340 wd = image_width - texture_width * xi;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
341
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
342 if( 0 <= xh && xh < wd &&
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
343 0 <= yh && yh < ht
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
344 )
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
345 {
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
346 square->isDirty=GL_TRUE;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
347
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
348 wh=(wdecr<wd)?wdecr:wd-xh;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
349 if(wh<0) wh=0;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
350
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
351 hh=(hdecr<ht)?hdecr:ht-yh;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
352 if(hh<0) hh=0;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
353
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
354 /*
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
355 #ifndef NDEBUG
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
356 printf("\t %dx%d, %d/%d (%dx%d): %d/%d (%dx%d)\n",
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
357 xi, yi, xh, yh, wdecr, hdecr, xh, yh, wh, hh);
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
358 #endif
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
359 */
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
360
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
361 if(xh<square->dirtyXoff)
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
362 square->dirtyXoff=xh;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
363
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
364 if(yh<square->dirtyYoff)
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
365 square->dirtyYoff=yh;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
366
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
367 square->dirtyWidth = wd-square->dirtyXoff;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
368 square->dirtyHeight = ht-square->dirtyYoff;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
369
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
370 wdecr-=wh;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
371
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
372 if ( xi == texnumx - 1 )
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
373 hdecr-=hh;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
374 }
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
375
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
376 xh-=wd;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
377 if(xh<0) xh=0;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
378 }
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
379 yh-=ht;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
380 if(yh<0) yh=0;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
381 }
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
382 }
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
383
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
384 static void gl_set_bilinear (int val)
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
385 {
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
386 int x, y;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
387
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
388 if(val>=0)
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
389 gl_bilinear = val;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
390 else
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
391 gl_bilinear++;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
392
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
393 gl_bilinear=gl_bilinear%2;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
394 /* no mipmap yet .. */
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
395
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
396 for (y = 0; y < texnumy; y++)
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
397 {
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
398 for (x = 0; x < texnumx; x++)
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
399 {
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
400 glBindTexture (GL_TEXTURE_2D, texgrid[y * texnumx + x].texobj);
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
401
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
402 switch (gl_bilinear)
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
403 {
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
404 case 0:
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
405 glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
406 GL_NEAREST);
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
407 glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
408 GL_NEAREST);
11988
ccb15c72f331 printf -> mp_msg
attila
parents: 11542
diff changeset
409 mp_msg(MSGT_VO, MSGL_INFO, "[gl2] bilinear off\n");
2276
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
410 break;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
411 case 1:
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
412 glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
413 GL_LINEAR);
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
414 glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
415 GL_LINEAR);
11988
ccb15c72f331 printf -> mp_msg
attila
parents: 11542
diff changeset
416 mp_msg(MSGT_VO, MSGL_INFO, "[gl2] bilinear linear\n");
2276
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
417 break;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
418 case 2:
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
419 glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
420 GL_LINEAR_MIPMAP_NEAREST);
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
421 glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
422 GL_LINEAR_MIPMAP_NEAREST);
11988
ccb15c72f331 printf -> mp_msg
attila
parents: 11542
diff changeset
423 mp_msg(MSGT_VO, MSGL_INFO, "[gl2] bilinear mipmap nearest\n");
2276
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
424 break;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
425 case 3:
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
426 glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
427 GL_LINEAR_MIPMAP_LINEAR);
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
428 glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
429 GL_LINEAR_MIPMAP_LINEAR);
11988
ccb15c72f331 printf -> mp_msg
attila
parents: 11542
diff changeset
430 mp_msg(MSGT_VO, MSGL_INFO, "[gl2] bilinear mipmap linear\n");
2276
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
431 break;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
432 }
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
433 }
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
434 }
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
435 }
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
436
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
437 static void gl_set_antialias (int val)
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
438 {
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
439 gl_antialias=val;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
440
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
441 if (gl_antialias)
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
442 {
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
443 glShadeModel (GL_SMOOTH);
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
444 glEnable (GL_POLYGON_SMOOTH);
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
445 glEnable (GL_LINE_SMOOTH);
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
446 glEnable (GL_POINT_SMOOTH);
11988
ccb15c72f331 printf -> mp_msg
attila
parents: 11542
diff changeset
447 mp_msg(MSGT_VO, MSGL_INFO, "[gl2] antialiasing on\n");
2276
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
448 }
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
449 else
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
450 {
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
451 glShadeModel (GL_FLAT);
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
452 glDisable (GL_POLYGON_SMOOTH);
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
453 glDisable (GL_LINE_SMOOTH);
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
454 glDisable (GL_POINT_SMOOTH);
11988
ccb15c72f331 printf -> mp_msg
attila
parents: 11542
diff changeset
455 mp_msg(MSGT_VO, MSGL_INFO, "[gl2] antialiasing off\n");
2276
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
456 }
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
457 }
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
458
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
459
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
460 static void drawTextureDisplay ()
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
461 {
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
462 struct TexSquare *square;
8254
772d6d27fd66 warning patch by (Dominik Mierzejewski <dominik at rangers dot eu dot org>)
michael
parents: 8148
diff changeset
463 int x, y/*, xoff=0, yoff=0, wd, ht*/;
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
464 GLenum err;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
465
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
466 glColor3f(1.0,1.0,1.0);
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
467
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
468 for (y = 0; y < texnumy; y++)
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
469 {
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
470 for (x = 0; x < texnumx; x++)
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
471 {
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
472 square = texgrid + y * texnumx + x;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
473
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
474 if(square->isTexture==GL_FALSE)
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
475 {
11988
ccb15c72f331 printf -> mp_msg
attila
parents: 11542
diff changeset
476 mp_msg (MSGT_VO, MSGL_V, "[gl2] ain't a texture(update): texnum x=%d, y=%d, texture=%d\n",
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
477 x, y, square->texobj);
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
478 continue;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
479 }
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
480
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
481 glBindTexture (GL_TEXTURE_2D, square->texobj);
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
482 err = glGetError ();
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
483 if(err==GL_INVALID_ENUM)
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
484 {
11988
ccb15c72f331 printf -> mp_msg
attila
parents: 11542
diff changeset
485 mp_msg (MSGT_VO, MSGL_ERR, "GLERROR glBindTexture := GL_INVALID_ENUM, texnum x=%d, y=%d, texture=%d\n", x, y, square->texobj);
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
486 }
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
487 else if(err==GL_INVALID_OPERATION) {
11988
ccb15c72f331 printf -> mp_msg
attila
parents: 11542
diff changeset
488 mp_msg (MSGT_VO, MSGL_V, "GLERROR glBindTexture := GL_INVALID_OPERATION, texnum x=%d, y=%d, texture=%d\n", x, y, square->texobj);
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
489 }
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
490
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
491 if(glIsTexture(square->texobj) == GL_FALSE)
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
492 {
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
493 square->isTexture=GL_FALSE;
11988
ccb15c72f331 printf -> mp_msg
attila
parents: 11542
diff changeset
494 mp_msg (MSGT_VO, MSGL_ERR, "GLERROR ain't a texture(update): texnum x=%d, y=%d, texture=%d\n",
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
495 x, y, square->texobj);
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
496 }
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
497
2276
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
498 if(square->isDirty)
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
499 {
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
500 glTexSubImage2D (GL_TEXTURE_2D, 0,
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
501 square->dirtyXoff, square->dirtyYoff,
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
502 square->dirtyWidth, square->dirtyHeight,
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
503 gl_bitmap_format, gl_bitmap_type, square->texture);
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
504
2276
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
505 square->isDirty=GL_FALSE;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
506 square->dirtyXoff=0; square->dirtyYoff=0; square->dirtyWidth=-1; square->dirtyHeight=-1;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
507 }
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
508
11988
ccb15c72f331 printf -> mp_msg
attila
parents: 11542
diff changeset
509 mp_msg (MSGT_VO, MSGL_DBG2, "[gl2] glTexSubImage2D texnum x=%d, y=%d, %d/%d - %d/%d\n",
2276
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
510 x, y, square->dirtyXoff, square->dirtyYoff, square->dirtyWidth, square->dirtyHeight);
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
511
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
512 glBegin(GL_QUADS);
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
513
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
514 glTexCoord2f (0, 0);
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
515 glVertex2f (square->fx1, square->fy1);
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
516
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
517 glTexCoord2f (0, square->ycov);
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
518 glVertex2f (square->fx4, square->fy4);
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
519
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
520 glTexCoord2f (square->xcov, square->ycov);
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
521 glVertex2f (square->fx3, square->fy3);
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
522
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
523 glTexCoord2f (square->xcov, 0);
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
524 glVertex2f (square->fx2, square->fy2);
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
525
2276
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
526 glEnd();
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
527 /*
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
528 #ifndef NDEBUG
2276
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
529 fprintf (stdout, "[gl2] GL_QUADS texnum x=%d, y=%d, %f/%f %f/%f %f/%f %f/%f\n\n", x, y, square->fx1, square->fy1, square->fx4, square->fy4,
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
530 square->fx3, square->fy3, square->fx2, square->fy2);
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
531 #endif
2276
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
532 */
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
533 } /* for all texnumx */
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
534 } /* for all texnumy */
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
535
11000
6e35326c742f many small typo and grammar fixes
gabucino
parents: 10919
diff changeset
536 /* YES - let's catch this error ...
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
537 */
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
538 (void) glGetError ();
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
539 }
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
540
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
541
11087
b427c796638b * clear window on fullscreen switch
attila
parents: 11000
diff changeset
542 static void resize(int *x,int *y){
b427c796638b * clear window on fullscreen switch
attila
parents: 11000
diff changeset
543 mp_msg(MSGT_VO,MSGL_V,"[gl2] Resize: %dx%d\n",*x,*y);
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
544 if( vo_fs )
10905
f448dcd93e6d dont fix things at the wrong place
attila
parents: 10902
diff changeset
545 {
11087
b427c796638b * clear window on fullscreen switch
attila
parents: 11000
diff changeset
546 glClear(GL_COLOR_BUFFER_BIT);
b427c796638b * clear window on fullscreen switch
attila
parents: 11000
diff changeset
547 aspect(x, y, A_ZOOM);
b427c796638b * clear window on fullscreen switch
attila
parents: 11000
diff changeset
548 glViewport( (vo_screenwidth-*x)/2, (vo_screenheight-*y)/2, *x, *y);
10905
f448dcd93e6d dont fix things at the wrong place
attila
parents: 10902
diff changeset
549 } else {
11087
b427c796638b * clear window on fullscreen switch
attila
parents: 11000
diff changeset
550 //aspect(x, y, A_NOZOOM);
b427c796638b * clear window on fullscreen switch
attila
parents: 11000
diff changeset
551 glViewport( 0, 0, *x, *y );
10905
f448dcd93e6d dont fix things at the wrong place
attila
parents: 10902
diff changeset
552 }
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
553
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
554 glMatrixMode(GL_PROJECTION);
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
555 glLoadIdentity();
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
556 glOrtho (0, 1, 1, 0, -1.0, 1.0);
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
557
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
558 glMatrixMode(GL_MODELVIEW);
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
559 glLoadIdentity();
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
560 }
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
561
2276
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
562 static void draw_alpha_32(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride){
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
563 vo_draw_alpha_rgb32(w,h,src,srca,stride,ImageData+4*(y0*image_width+x0),4*image_width);
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
564 }
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
565
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
566 static void draw_alpha_24(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride){
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
567 vo_draw_alpha_rgb24(w,h,src,srca,stride,ImageData+3*(y0*image_width+x0),3*image_width);
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
568 }
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
569
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
570 static void draw_alpha_16(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride){
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
571 vo_draw_alpha_rgb16(w,h,src,srca,stride,ImageData+2*(y0*image_width+x0),2*image_width);
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
572 }
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
573
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
574 static void draw_alpha_15(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride){
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
575 vo_draw_alpha_rgb15(w,h,src,srca,stride,ImageData+2*(y0*image_width+x0),2*image_width);
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
576 }
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
577
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
578 static void draw_alpha_null(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride){
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
579 }
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
580
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
581 #ifdef GL_WIN32
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
582
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
583 static int config_w32(uint32_t width, uint32_t height, uint32_t d_width, uint32_t d_height, uint32_t flags, char *title, uint32_t format) {
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
584 PIXELFORMATDESCRIPTOR pfd;
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
585 int pf;
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
586
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
587 o_dwidth = d_width;
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
588 o_dheight = d_height;
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
589 vo_fs = flags & VOFLAG_FULLSCREEN;
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
590 vo_vm = flags & VOFLAG_MODESWITCHING;
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
591
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
592 vo_dwidth = d_width;
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
593 vo_dheight = d_height;
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
594
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
595 destroyRenderingContext();
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
596 if (!createRenderingContext())
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
597 return -1;
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
598
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
599 if (vo_fs)
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
600 aspect(&d_width, &d_height, A_ZOOM);
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
601
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
602 pf = GetPixelFormat(vo_hdc);
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
603 if (!DescribePixelFormat(vo_hdc, pf, sizeof pfd, &pfd)) {
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
604 r_sz = g_sz = b_sz = a_sz = 0;
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
605 } else {
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
606 r_sz = pfd.cRedBits;
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
607 g_sz = pfd.cGreenBits;
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
608 b_sz = pfd.cBlueBits;
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
609 a_sz = pfd.cAlphaBits;
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
610 }
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
611
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
612 return 0;
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
613 }
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
614
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
615 #else
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
616
7964
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
617 static int choose_glx_visual(Display *dpy, int scr, XVisualInfo *res_vi)
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
618 {
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
619 XVisualInfo template, *vi_list;
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
620 int vi_num, i, best_i, best_weight;
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
621
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
622 template.screen = scr;
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
623 vi_list = XGetVisualInfo(dpy, VisualScreenMask, &template, &vi_num);
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
624 if (!vi_list) return -1;
8123
9fc45fe0d444 *HUGE* set of compiler warning fixes, unused variables removal
arpi
parents: 7964
diff changeset
625 best_weight = 1000000; best_i=0;
7964
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
626 for (i = 0; i < vi_num; i++) {
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
627 int val, res, w = 0;
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
628 /* of course, the visual must support OpenGL rendering... */
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
629 res = glXGetConfig(dpy, vi_list + i, GLX_USE_GL, &val);
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
630 if (res || val == False) continue;
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
631 /* also it must be doublebuffered ... */
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
632 res = glXGetConfig(dpy, vi_list + i, GLX_DOUBLEBUFFER, &val);
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
633 if (res || val == False) continue;
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
634 /* furthermore it must be RGBA (not color indexed) ... */
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
635 res = glXGetConfig(dpy, vi_list + i, GLX_RGBA, &val);
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
636 if (res || val == False) continue;
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
637 /* prefer less depth buffer size, */
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
638 res = glXGetConfig(dpy, vi_list + i, GLX_DEPTH_SIZE, &val);
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
639 if (res) continue;
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
640 w += val*2;
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
641 /* stencil buffer size */
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
642 res = glXGetConfig(dpy, vi_list + i, GLX_STENCIL_SIZE, &val);
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
643 if (res) continue;
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
644 w += val*2;
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
645 /* and colorbuffer alpha size */
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
646 res = glXGetConfig(dpy, vi_list + i, GLX_ALPHA_SIZE, &val);
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
647 if (res) continue;
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
648 w += val;
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
649 /* and finally, prefer DirectColor-ed visuals to allow color corrections */
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
650 if (vi_list[i].class != DirectColor) w += 100;
12709
bd90b887fb13 avoid visuals with low color-depth.
reimar
parents: 12448
diff changeset
651
bd90b887fb13 avoid visuals with low color-depth.
reimar
parents: 12448
diff changeset
652 // avoid bad-looking visual with less that 8bit per color
bd90b887fb13 avoid visuals with low color-depth.
reimar
parents: 12448
diff changeset
653 res = glXGetConfig(dpy, vi_list + i, GLX_RED_SIZE, &val);
bd90b887fb13 avoid visuals with low color-depth.
reimar
parents: 12448
diff changeset
654 if (res) continue;
bd90b887fb13 avoid visuals with low color-depth.
reimar
parents: 12448
diff changeset
655 if (val < 8) w += 50;
bd90b887fb13 avoid visuals with low color-depth.
reimar
parents: 12448
diff changeset
656 res = glXGetConfig(dpy, vi_list + i, GLX_GREEN_SIZE, &val);
bd90b887fb13 avoid visuals with low color-depth.
reimar
parents: 12448
diff changeset
657 if (res) continue;
bd90b887fb13 avoid visuals with low color-depth.
reimar
parents: 12448
diff changeset
658 if (val < 8) w += 70;
bd90b887fb13 avoid visuals with low color-depth.
reimar
parents: 12448
diff changeset
659 res = glXGetConfig(dpy, vi_list + i, GLX_BLUE_SIZE, &val);
bd90b887fb13 avoid visuals with low color-depth.
reimar
parents: 12448
diff changeset
660 if (res) continue;
bd90b887fb13 avoid visuals with low color-depth.
reimar
parents: 12448
diff changeset
661 if (val < 8) w += 50;
bd90b887fb13 avoid visuals with low color-depth.
reimar
parents: 12448
diff changeset
662
7964
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
663 if (w < best_weight) {
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
664 best_weight = w;
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
665 best_i = i;
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
666 }
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
667 }
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
668 if (best_weight < 1000000) *res_vi = vi_list[best_i];
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
669 XFree(vi_list);
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
670 return (best_weight < 1000000) ? 0 : -1;
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
671 }
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
672
12750
38c660174053 removed XFlush() before XSync(), made config_glx return-type signed, force 32bit on Darwin, idea from a patch by Marc Hoffman (mmh <at> pleasantst.com).
reimar
parents: 12709
diff changeset
673 static int config_glx(uint32_t width, uint32_t height, uint32_t d_width, uint32_t d_height, uint32_t flags, char *title, uint32_t format) {
13871
8298dc8ca78b more fullscreen fixes and gl2 uses setGlWindow.
reimar
parents: 13787
diff changeset
674 if ( vo_window == None )
8298dc8ca78b more fullscreen fixes and gl2 uses setGlWindow.
reimar
parents: 13787
diff changeset
675 {
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
676 XSizeHints hint;
7964
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
677 XVisualInfo *vinfo, vinfo_buf;
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
678 XEvent xev;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
679
2276
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
680 hint.x = 0;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
681 hint.y = 0;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
682 hint.width = d_width;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
683 hint.height = d_height;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
684 hint.flags = PPosition | PSize;
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
685
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
686 /* Make the window */
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
687
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
688 // XGetWindowAttributes(mDisplay, DefaultRootWindow(mDisplay), &attribs);
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
689
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
690 // XMatchVisualInfo(mDisplay, screen, depth, TrueColor, &vinfo);
7964
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
691 vinfo = choose_glx_visual(mDisplay,mScreen,&vinfo_buf) < 0 ? NULL : &vinfo_buf;
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
692 if (vinfo == NULL)
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
693 {
11988
ccb15c72f331 printf -> mp_msg
attila
parents: 11542
diff changeset
694 mp_msg(MSGT_VO, MSGL_FATAL, "[gl2] no GLX support present\n");
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
695 return -1;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
696 }
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
697
12035
b3512c7b26ce corrected problems with switching to and from fullscreen mode esp. with fixed-vo
reimar
parents: 11988
diff changeset
698 vo_fs = VO_FALSE;
10757
3aea64e0d6d9 Avoid flickering during resizes. Keep video contents even when paused. Fix by Tomas Simonaitis <haden@homelan.lt>
mosu
parents: 10604
diff changeset
699 vo_window = vo_x11_create_smooth_window(mDisplay, RootWindow(mDisplay,mScreen),
3aea64e0d6d9 Avoid flickering during resizes. Keep video contents even when paused. Fix by Tomas Simonaitis <haden@homelan.lt>
mosu
parents: 10604
diff changeset
700 vinfo->visual, hint.x, hint.y, hint.width, hint.height, vinfo->depth, vo_x11_create_colormap(vinfo));
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
701
6095
891cff8aba60 some cleanup, gl/gl2 updated to use vo_window
arpi
parents: 5651
diff changeset
702 XSelectInput(mDisplay, vo_window, StructureNotifyMask);
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
703
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
704 /* Tell other applications about this window */
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
705
10143
fd3cbeb388f0 removed broken swscaler support, added runtime fullscreens switching ability, and some other general cleanup thingies
alex
parents: 8254
diff changeset
706 XSetStandardProperties(mDisplay, vo_window, title, title, None, NULL, 0, &hint);
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
707
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
708 /* Map window. */
6095
891cff8aba60 some cleanup, gl/gl2 updated to use vo_window
arpi
parents: 5651
diff changeset
709 XMapWindow(mDisplay, vo_window);
4017
21a75ab24703 Xinerama patch number two by attila.
atmos4
parents: 3564
diff changeset
710 #ifdef HAVE_XINERAMA
6095
891cff8aba60 some cleanup, gl/gl2 updated to use vo_window
arpi
parents: 5651
diff changeset
711 vo_x11_xinerama_move(mDisplay,vo_window);
4017
21a75ab24703 Xinerama patch number two by attila.
atmos4
parents: 3564
diff changeset
712 #endif
11087
b427c796638b * clear window on fullscreen switch
attila
parents: 11000
diff changeset
713 vo_x11_sizehint( hint.x, hint.y, hint.width, hint.height,0 );
6095
891cff8aba60 some cleanup, gl/gl2 updated to use vo_window
arpi
parents: 5651
diff changeset
714 XClearWindow(mDisplay,vo_window);
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
715
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
716 /* Wait for map. */
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
717 do
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
718 {
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
719 XNextEvent(mDisplay, &xev);
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
720 }
6095
891cff8aba60 some cleanup, gl/gl2 updated to use vo_window
arpi
parents: 5651
diff changeset
721 while (xev.type != MapNotify || xev.xmap.event != vo_window);
12035
b3512c7b26ce corrected problems with switching to and from fullscreen mode esp. with fixed-vo
reimar
parents: 11988
diff changeset
722
7763
cdb43addad4c -fixed-vo support
pontscho
parents: 7124
diff changeset
723 vo_x11_classhint( mDisplay,vo_window,"gl2" );
cdb43addad4c -fixed-vo support
pontscho
parents: 7124
diff changeset
724 vo_hidecursor(mDisplay,vo_window);
cdb43addad4c -fixed-vo support
pontscho
parents: 7124
diff changeset
725
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
726 XSync(mDisplay, False);
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
727
6095
891cff8aba60 some cleanup, gl/gl2 updated to use vo_window
arpi
parents: 5651
diff changeset
728 //XSelectInput(mDisplay, vo_window, StructureNotifyMask); // !!!!
6953
ce67cc1f0beb ignore BadAccess error at XSelectInput() (grabbing mouse etc) with warning
arpi
parents: 6212
diff changeset
729 vo_x11_selectinput_witherr(mDisplay, vo_window, StructureNotifyMask | KeyPressMask | PointerMotionMask
10757
3aea64e0d6d9 Avoid flickering during resizes. Keep video contents even when paused. Fix by Tomas Simonaitis <haden@homelan.lt>
mosu
parents: 10604
diff changeset
730 | ButtonPressMask | ButtonReleaseMask | ExposureMask
4658
93d562ad1c22 Added new input mouse support in x11 vo
albeu
parents: 4596
diff changeset
731 );
13871
8298dc8ca78b more fullscreen fixes and gl2 uses setGlWindow.
reimar
parents: 13787
diff changeset
732 }
8298dc8ca78b more fullscreen fixes and gl2 uses setGlWindow.
reimar
parents: 13787
diff changeset
733 vo_x11_nofs_sizepos(0, 0, d_width, d_height);
8298dc8ca78b more fullscreen fixes and gl2 uses setGlWindow.
reimar
parents: 13787
diff changeset
734 if (vo_fs ^ (flags & VOFLAG_FULLSCREEN))
8298dc8ca78b more fullscreen fixes and gl2 uses setGlWindow.
reimar
parents: 13787
diff changeset
735 vo_x11_fullscreen();
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
736
13871
8298dc8ca78b more fullscreen fixes and gl2 uses setGlWindow.
reimar
parents: 13787
diff changeset
737 setGlWindow(&gl_vinfo, &gl_context, vo_window);
8298dc8ca78b more fullscreen fixes and gl2 uses setGlWindow.
reimar
parents: 13787
diff changeset
738
8298dc8ca78b more fullscreen fixes and gl2 uses setGlWindow.
reimar
parents: 13787
diff changeset
739 if(glXGetConfig(mDisplay,gl_vinfo,GLX_RED_SIZE, &r_sz)!=0)
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
740 r_sz=0;
13871
8298dc8ca78b more fullscreen fixes and gl2 uses setGlWindow.
reimar
parents: 13787
diff changeset
741 if(glXGetConfig(mDisplay,gl_vinfo,GLX_GREEN_SIZE, &g_sz)!=0)
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
742 g_sz=0;
13871
8298dc8ca78b more fullscreen fixes and gl2 uses setGlWindow.
reimar
parents: 13787
diff changeset
743 if(glXGetConfig(mDisplay,gl_vinfo,GLX_BLUE_SIZE, &b_sz)!=0)
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
744 b_sz=0;
13871
8298dc8ca78b more fullscreen fixes and gl2 uses setGlWindow.
reimar
parents: 13787
diff changeset
745 if(glXGetConfig(mDisplay,gl_vinfo,GLX_ALPHA_SIZE, &a_sz)!=0)
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
746 a_sz=0;
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
747
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
748 return 0;
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
749 }
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
750
12382
a830eebf6693 GUI support
reimar
parents: 12035
diff changeset
751 #ifdef HAVE_NEW_GUI
12750
38c660174053 removed XFlush() before XSync(), made config_glx return-type signed, force 32bit on Darwin, idea from a patch by Marc Hoffman (mmh <at> pleasantst.com).
reimar
parents: 12709
diff changeset
752 static int config_glx_gui(uint32_t d_width, uint32_t d_height) {
12382
a830eebf6693 GUI support
reimar
parents: 12035
diff changeset
753 vo_dwidth = d_width;
a830eebf6693 GUI support
reimar
parents: 12035
diff changeset
754 vo_dheight = d_height;
a830eebf6693 GUI support
reimar
parents: 12035
diff changeset
755 guiGetEvent( guiSetShVideo,0 ); // the GUI will set up / resize the window
13871
8298dc8ca78b more fullscreen fixes and gl2 uses setGlWindow.
reimar
parents: 13787
diff changeset
756 setGlWindow(&gl_vinfo, &gl_context, vo_window);
12382
a830eebf6693 GUI support
reimar
parents: 12035
diff changeset
757
13871
8298dc8ca78b more fullscreen fixes and gl2 uses setGlWindow.
reimar
parents: 13787
diff changeset
758 if (glXGetConfig(mDisplay,gl_vinfo,GLX_RED_SIZE, &r_sz) != 0) r_sz = 0;
8298dc8ca78b more fullscreen fixes and gl2 uses setGlWindow.
reimar
parents: 13787
diff changeset
759 if (glXGetConfig(mDisplay,gl_vinfo,GLX_GREEN_SIZE, &g_sz) != 0) g_sz = 0;
8298dc8ca78b more fullscreen fixes and gl2 uses setGlWindow.
reimar
parents: 13787
diff changeset
760 if (glXGetConfig(mDisplay,gl_vinfo,GLX_BLUE_SIZE, &b_sz) != 0) b_sz = 0;
8298dc8ca78b more fullscreen fixes and gl2 uses setGlWindow.
reimar
parents: 13787
diff changeset
761 if (glXGetConfig(mDisplay,gl_vinfo,GLX_ALPHA_SIZE, &a_sz) != 0) a_sz = 0;
12382
a830eebf6693 GUI support
reimar
parents: 12035
diff changeset
762 return 0;
a830eebf6693 GUI support
reimar
parents: 12035
diff changeset
763 }
a830eebf6693 GUI support
reimar
parents: 12035
diff changeset
764 #endif
a830eebf6693 GUI support
reimar
parents: 12035
diff changeset
765
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
766 #endif
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
767
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
768 static int initGl(uint32_t d_width, uint32_t d_height)
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
769 {
12446
59cd81e2e1ef fixed memory leak and removed unnecessary static variable
reimar
parents: 12394
diff changeset
770 ImageData=malloc(image_width*image_height*image_bytes);
59cd81e2e1ef fixed memory leak and removed unnecessary static variable
reimar
parents: 12394
diff changeset
771 memset(ImageData,128,image_width*image_height*image_bytes);
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
772
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
773 texture_width=image_width;
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
774 texture_height=image_height;
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
775
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
776 if (initTextures() < 0)
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
777 return -1;
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
778
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
779 glDisable(GL_BLEND);
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
780 glDisable(GL_DEPTH_TEST);
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
781 glDepthMask(GL_FALSE);
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
782 glDisable(GL_CULL_FACE);
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
783
12448
180c2fb327d3 removing useless code, improving readability
reimar
parents: 12446
diff changeset
784 glPixelStorei (GL_UNPACK_ROW_LENGTH, image_width);
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
785
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
786 /**
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
787 * may give a little speed up for a kinda burst read ..
13575
d3ef52aafb54 fixed UNPACK_ALIGNMENT setting.
reimar
parents: 13540
diff changeset
788 * Also, the default of 4 will break some files.
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
789 */
13653
799f81d3cb19 added gl_common for code used by both vo_gl.c and vo_gl2.c.
reimar
parents: 13575
diff changeset
790 glAdjustAlignment(image_width*image_bytes);
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
791
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
792 glEnable (GL_TEXTURE_2D);
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
793
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
794 gl_set_antialias(0);
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
795 gl_set_bilinear(1);
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
796
13653
799f81d3cb19 added gl_common for code used by both vo_gl.c and vo_gl2.c.
reimar
parents: 13575
diff changeset
797 mp_msg(MSGT_VO, MSGL_V, "[gl2] Using image_bpp=%d, image_bytes=%d, isBGR=%d, \n\tgl_bitmap_format=%s, gl_bitmap_type=%s, \n\trgb_size=%d (%d,%d,%d), a_sz=%d, \n\tgl_internal_format=%s\n",
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
798 image_bpp, image_bytes, image_mode==MODE_BGR,
13653
799f81d3cb19 added gl_common for code used by both vo_gl.c and vo_gl2.c.
reimar
parents: 13575
diff changeset
799 gl_bitmap_format_s, gl_bitmap_type_s,
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
800 rgb_sz, r_sz, g_sz, b_sz, a_sz, gl_internal_format_s);
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
801
11087
b427c796638b * clear window on fullscreen switch
attila
parents: 11000
diff changeset
802 resize(&d_width, &d_height);
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
803
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
804 glClearColor( 0.0f,0.0f,0.0f,0.0f );
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
805 glClear( GL_COLOR_BUFFER_BIT );
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
806
13926
b7ba9bcd1916 Avoid drawing before transformation matrices are set up.
reimar
parents: 13877
diff changeset
807 drawTextureDisplay ();
b7ba9bcd1916 Avoid drawing before transformation matrices are set up.
reimar
parents: 13877
diff changeset
808
b7ba9bcd1916 Avoid drawing before transformation matrices are set up.
reimar
parents: 13877
diff changeset
809 free (ImageData);
b7ba9bcd1916 Avoid drawing before transformation matrices are set up.
reimar
parents: 13877
diff changeset
810 ImageData = NULL;
b7ba9bcd1916 Avoid drawing before transformation matrices are set up.
reimar
parents: 13877
diff changeset
811
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
812 return 0;
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
813 }
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
814
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
815 /* connect to server, create and map window,
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
816 * allocate colors and (shared) memory
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
817 */
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
818 static uint32_t
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
819 config(uint32_t width, uint32_t height, uint32_t d_width, uint32_t d_height, uint32_t flags, char *title, uint32_t format)
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
820 {
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
821 const unsigned char * glVersion;
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
822
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
823 image_height = height;
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
824 image_width = width;
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
825 image_format = format;
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
826
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
827 int_pause = 0;
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
828
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
829 aspect_save_orig(width,height);
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
830 aspect_save_prescale(d_width,d_height);
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
831 aspect_save_screenres(vo_screenwidth,vo_screenheight);
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
832
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
833 aspect(&d_width,&d_height,A_NOZOOM);
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
834
12885
010a28a43c9f fix for people experimenting with GUI under windows
reimar
parents: 12842
diff changeset
835 #if defined(HAVE_NEW_GUI) && !defined(GL_WIN32)
12382
a830eebf6693 GUI support
reimar
parents: 12035
diff changeset
836 if (use_gui) {
a830eebf6693 GUI support
reimar
parents: 12035
diff changeset
837 if (config_glx_gui(d_width, d_height) == -1)
a830eebf6693 GUI support
reimar
parents: 12035
diff changeset
838 return -1;
a830eebf6693 GUI support
reimar
parents: 12035
diff changeset
839 } else
a830eebf6693 GUI support
reimar
parents: 12035
diff changeset
840 #endif
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
841 #ifdef GL_WIN32
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
842 if (config_w32(width, height, d_width, d_height, flags, title, format) == -1)
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
843 #else
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
844 if (config_glx(width, height, d_width, d_height, flags, title, format) == -1)
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
845 #endif
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
846 return -1;
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
847
2276
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
848 glVersion = glGetString(GL_VERSION);
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
849
11988
ccb15c72f331 printf -> mp_msg
attila
parents: 11542
diff changeset
850 mp_msg(MSGT_VO, MSGL_V, "[gl2] OpenGL Driver Information:\n");
ccb15c72f331 printf -> mp_msg
attila
parents: 11542
diff changeset
851 mp_msg(MSGT_VO, MSGL_V, "\tvendor: %s,\n\trenderer %s,\n\tversion %s\n",
2276
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
852 glGetString(GL_VENDOR),
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
853 glGetString(GL_RENDERER),
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
854 glVersion);
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
855
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
856 if(glVersion[0]>'1' ||
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
857 (glVersion[0]=='1' && glVersion[2]>='2') )
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
858 isGL12 = GL_TRUE;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
859 else
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
860 isGL12 = GL_FALSE;
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
861
2276
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
862 if(isGL12)
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
863 {
11988
ccb15c72f331 printf -> mp_msg
attila
parents: 11542
diff changeset
864 mp_msg(MSGT_VO, MSGL_INFO, "[gl2] You have OpenGL >= 1.2 capable drivers, GOOD (16bpp and BGR is ok!)\n");
2276
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
865 } else {
11988
ccb15c72f331 printf -> mp_msg
attila
parents: 11542
diff changeset
866 mp_msg(MSGT_VO, MSGL_INFO, "[gl2] You have OpenGL < 1.2 drivers, BAD (16bpp and BGR may be damaged!)\n");
2276
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
867 }
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
868
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
869 rgb_sz=r_sz+g_sz+b_sz;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
870 if(rgb_sz<=0) rgb_sz=24;
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
871
2276
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
872 if(r_sz==3 && g_sz==3 && b_sz==2 && a_sz==0) {
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
873 gl_internal_format=GL_R3_G3_B2;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
874 gl_internal_format_s="GL_R3_G3_B2";
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
875 } else if(r_sz==4 && g_sz==4 && b_sz==4 && a_sz==0) {
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
876 gl_internal_format=GL_RGB4;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
877 gl_internal_format_s="GL_RGB4";
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
878 } else if(r_sz==5 && g_sz==5 && b_sz==5 && a_sz==0) {
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
879 gl_internal_format=GL_RGB5;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
880 gl_internal_format_s="GL_RGB5";
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
881 } else if(r_sz==8 && g_sz==8 && b_sz==8 && a_sz==0) {
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
882 gl_internal_format=GL_RGB8;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
883 gl_internal_format_s="GL_RGB8";
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
884 } else if(r_sz==10 && g_sz==10 && b_sz==10 && a_sz==0) {
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
885 gl_internal_format=GL_RGB10;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
886 gl_internal_format_s="GL_RGB10";
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
887 } else if(r_sz==2 && g_sz==2 && b_sz==2 && a_sz==2) {
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
888 gl_internal_format=GL_RGBA2;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
889 gl_internal_format_s="GL_RGBA2";
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
890 } else if(r_sz==4 && g_sz==4 && b_sz==4 && a_sz==4) {
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
891 gl_internal_format=GL_RGBA4;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
892 gl_internal_format_s="GL_RGBA4";
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
893 } else if(r_sz==5 && g_sz==5 && b_sz==5 && a_sz==1) {
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
894 gl_internal_format=GL_RGB5_A1;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
895 gl_internal_format_s="GL_RGB5_A1";
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
896 } else if(r_sz==8 && g_sz==8 && b_sz==8 && a_sz==8) {
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
897 gl_internal_format=GL_RGBA8;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
898 gl_internal_format_s="GL_RGBA8";
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
899 } else if(r_sz==10 && g_sz==10 && b_sz==10 && a_sz==2) {
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
900 gl_internal_format=GL_RGB10_A2;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
901 gl_internal_format_s="GL_RGB10_A2";
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
902 } else {
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
903 gl_internal_format=GL_RGB;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
904 gl_internal_format_s="GL_RGB";
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
905 }
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
906
12750
38c660174053 removed XFlush() before XSync(), made config_glx return-type signed, force 32bit on Darwin, idea from a patch by Marc Hoffman (mmh <at> pleasantst.com).
reimar
parents: 12709
diff changeset
907 #ifdef TEXTUREFORMAT_ALWAYS
12762
cf8979836dc5 100l, OSX compile fix, patch by Steven Schulz (sms (at) 2BSD (dot) com)
reimar
parents: 12750
diff changeset
908 gl_internal_format=TEXTUREFORMAT_ALWAYS;
cf8979836dc5 100l, OSX compile fix, patch by Steven Schulz (sms (at) 2BSD (dot) com)
reimar
parents: 12750
diff changeset
909 gl_internal_format_s=TEXTUREFORMAT_ALWAYS_S;
10143
fd3cbeb388f0 removed broken swscaler support, added runtime fullscreens switching ability, and some other general cleanup thingies
alex
parents: 8254
diff changeset
910 #endif
fd3cbeb388f0 removed broken swscaler support, added runtime fullscreens switching ability, and some other general cleanup thingies
alex
parents: 8254
diff changeset
911
fd3cbeb388f0 removed broken swscaler support, added runtime fullscreens switching ability, and some other general cleanup thingies
alex
parents: 8254
diff changeset
912 if (IMGFMT_IS_BGR(format))
2276
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
913 {
10143
fd3cbeb388f0 removed broken swscaler support, added runtime fullscreens switching ability, and some other general cleanup thingies
alex
parents: 8254
diff changeset
914 image_mode=MODE_BGR;
fd3cbeb388f0 removed broken swscaler support, added runtime fullscreens switching ability, and some other general cleanup thingies
alex
parents: 8254
diff changeset
915 image_bpp=IMGFMT_BGR_DEPTH(format);
fd3cbeb388f0 removed broken swscaler support, added runtime fullscreens switching ability, and some other general cleanup thingies
alex
parents: 8254
diff changeset
916 }
fd3cbeb388f0 removed broken swscaler support, added runtime fullscreens switching ability, and some other general cleanup thingies
alex
parents: 8254
diff changeset
917 else
fd3cbeb388f0 removed broken swscaler support, added runtime fullscreens switching ability, and some other general cleanup thingies
alex
parents: 8254
diff changeset
918 {
fd3cbeb388f0 removed broken swscaler support, added runtime fullscreens switching ability, and some other general cleanup thingies
alex
parents: 8254
diff changeset
919 image_mode=MODE_RGB;
fd3cbeb388f0 removed broken swscaler support, added runtime fullscreens switching ability, and some other general cleanup thingies
alex
parents: 8254
diff changeset
920 image_bpp=IMGFMT_RGB_DEPTH(format);
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
921 }
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
922
2276
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
923 image_bytes=(image_bpp+7)/8;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
924
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
925 draw_alpha_fnc=draw_alpha_null;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
926
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
927 switch(image_bpp)
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
928 {
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
929 case 15:
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
930 case 16:
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
931 if(image_mode!=MODE_BGR)
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
932 {
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
933 gl_bitmap_format = GL_RGB;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
934 gl_bitmap_format_s ="GL_RGB";
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
935 gl_bitmap_type = GL_UNSIGNED_SHORT_5_6_5;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
936 gl_bitmap_type_s ="GL_UNSIGNED_SHORT_5_6_5";
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
937 } else {
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
938 gl_bitmap_format = GL_BGR;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
939 gl_bitmap_format_s ="GL_BGR";
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
940 gl_bitmap_type = GL_UNSIGNED_SHORT_5_6_5;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
941 gl_bitmap_type_s ="GL_UNSIGNED_SHORT_5_6_5";
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
942 }
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
943
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
944 if (image_bpp==15)
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
945 draw_alpha_fnc=draw_alpha_15;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
946 else
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
947 draw_alpha_fnc=draw_alpha_16;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
948
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
949 break;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
950 case 24:
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
951 if(image_mode!=MODE_BGR)
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
952 {
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
953 /* RGB888 */
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
954 gl_bitmap_format = GL_RGB;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
955 gl_bitmap_format_s ="GL_RGB";
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
956 } else {
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
957 /* BGR888 */
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
958 gl_bitmap_format = GL_BGR;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
959 gl_bitmap_format_s ="GL_BGR";
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
960 }
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
961 gl_bitmap_type = GL_UNSIGNED_BYTE;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
962 gl_bitmap_type_s ="GL_UNSIGNED_BYTE";
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
963
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
964 draw_alpha_fnc=draw_alpha_24; break;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
965 break;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
966 case 32:
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
967 /* RGBA8888 */
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
968 gl_bitmap_format = GL_BGRA;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
969 gl_bitmap_format_s ="GL_BGRA";
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
970
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
971 if(image_mode!=MODE_BGR)
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
972 {
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
973 gl_bitmap_type = GL_UNSIGNED_INT_8_8_8_8_REV;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
974 gl_bitmap_type_s ="GL_UNSIGNED_INT_8_8_8_8_REV";
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
975 } else {
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
976 gl_bitmap_type = GL_UNSIGNED_INT_8_8_8_8;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
977 gl_bitmap_type_s ="GL_UNSIGNED_INT_8_8_8_8";
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
978 }
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
979
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
980 draw_alpha_fnc=draw_alpha_32; break;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
981 break;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
982 }
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
983
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
984 if (initGl(d_width, d_height) == -1)
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
985 return -1;
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
986 #ifndef GL_WIN32
11542
85e503ddf65f runtime 'stay-on-top' functionality
joey
parents: 11087
diff changeset
987 if (vo_ontop) vo_x11_setlayer(mDisplay,vo_window, vo_ontop);
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
988 #endif
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
989
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
990 return 0;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
991 }
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
992
2276
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
993 static int gl_handlekey(int key)
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
994 {
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
995 if(key=='a'||key=='A')
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
996 {
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
997 gl_set_antialias(!gl_antialias);
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
998 return 0;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
999 }
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
1000 else if(key=='b'||key=='B')
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
1001 {
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
1002 gl_set_bilinear(-1);
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
1003 return 0;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
1004 }
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
1005 return 1;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
1006 }
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1007
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
1008 #ifdef GL_WIN32
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
1009
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
1010 static void check_events(void) {
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
1011 int e=vo_w32_check_events();
11087
b427c796638b * clear window on fullscreen switch
attila
parents: 11000
diff changeset
1012 if(e&VO_EVENT_RESIZE) resize(&vo_dwidth, &vo_dheight);
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
1013 if(e&VO_EVENT_EXPOSE && int_pause) flip_page();
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
1014 }
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
1015
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
1016 #else
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
1017
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1018 static void check_events(void)
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1019 {
2276
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
1020 XEvent Event;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
1021 char buf[100];
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
1022 KeySym keySym;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
1023 int key;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
1024 static XComposeStatus stat;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
1025 int e;
10757
3aea64e0d6d9 Avoid flickering during resizes. Keep video contents even when paused. Fix by Tomas Simonaitis <haden@homelan.lt>
mosu
parents: 10604
diff changeset
1026
2276
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
1027 while ( XPending( mDisplay ) )
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
1028 {
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
1029 XNextEvent( mDisplay,&Event );
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
1030 if( Event.type == KeyPress )
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
1031 {
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
1032
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
1033 XLookupString( &Event.xkey,buf,sizeof(buf),&keySym,&stat );
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
1034 key = (keySym&0xff00) != 0? ( (keySym&0x00ff) + 256 )
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
1035 : ( keySym ) ;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
1036 if(gl_handlekey(key))
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
1037 XPutBackEvent(mDisplay, &Event);
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
1038 break;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
1039 } else {
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
1040 XPutBackEvent(mDisplay, &Event);
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
1041 break;
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
1042 }
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
1043 }
10757
3aea64e0d6d9 Avoid flickering during resizes. Keep video contents even when paused. Fix by Tomas Simonaitis <haden@homelan.lt>
mosu
parents: 10604
diff changeset
1044 e=vo_x11_check_events(mDisplay);
11087
b427c796638b * clear window on fullscreen switch
attila
parents: 11000
diff changeset
1045 if(e&VO_EVENT_RESIZE) resize(&vo_dwidth, &vo_dheight);
10757
3aea64e0d6d9 Avoid flickering during resizes. Keep video contents even when paused. Fix by Tomas Simonaitis <haden@homelan.lt>
mosu
parents: 10604
diff changeset
1046 if(e&VO_EVENT_EXPOSE && int_pause) flip_page();
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1047 }
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1048
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
1049 #endif
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
1050
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1051 static void draw_osd(void)
12446
59cd81e2e1ef fixed memory leak and removed unnecessary static variable
reimar
parents: 12394
diff changeset
1052 {
59cd81e2e1ef fixed memory leak and removed unnecessary static variable
reimar
parents: 12394
diff changeset
1053 if (ImageData)
59cd81e2e1ef fixed memory leak and removed unnecessary static variable
reimar
parents: 12394
diff changeset
1054 vo_draw_text(image_width,image_height,draw_alpha_fnc);
59cd81e2e1ef fixed memory leak and removed unnecessary static variable
reimar
parents: 12394
diff changeset
1055 }
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1056
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1057 static void
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1058 flip_page(void)
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1059 {
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1060
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1061 drawTextureDisplay();
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1062
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1063 // glFlush();
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1064 glFinish();
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
1065 #ifdef GL_WIN32
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
1066 SwapBuffers(vo_hdc);
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
1067 #else
6095
891cff8aba60 some cleanup, gl/gl2 updated to use vo_window
arpi
parents: 5651
diff changeset
1068 glXSwapBuffers( mDisplay,vo_window );
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
1069 #endif
12394
b3ff1a576b8c clear buffer after (glX)SwapBuffers in fullscreen to avoid flickering borders
reimar
parents: 12382
diff changeset
1070
b3ff1a576b8c clear buffer after (glX)SwapBuffers in fullscreen to avoid flickering borders
reimar
parents: 12382
diff changeset
1071 if (vo_fs) // Avoid flickering borders in fullscreen mode
b3ff1a576b8c clear buffer after (glX)SwapBuffers in fullscreen to avoid flickering borders
reimar
parents: 12382
diff changeset
1072 glClear (GL_COLOR_BUFFER_BIT);
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1073 }
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1074
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1075 //static inline uint32_t draw_slice_x11(uint8_t *src[], uint32_t slice_num)
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1076 static uint32_t draw_slice(uint8_t *src[], int stride[], int w,int h,int x,int y)
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1077 {
2276
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
1078 return 0;
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1079 }
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1080
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1081 static inline uint32_t
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1082 draw_frame_x11_bgr(uint8_t *src[])
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1083 {
2276
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
1084 resetTexturePointers((unsigned char *)src[0]);
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
1085 ImageData=(unsigned char *)src[0];
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1086
2276
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
1087 // for(i=0;i<image_height;i++) ImageData[image_width*image_bytes*i+20]=128;
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1088
2276
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
1089 setupTextureDirtyArea(0, 0, image_width, image_height);
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1090 return 0;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1091 }
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1092
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1093 static inline uint32_t
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1094 draw_frame_x11_rgb(uint8_t *src[])
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1095 {
2276
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
1096 resetTexturePointers((unsigned char *)src[0]);
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
1097 ImageData=(unsigned char *)src[0];
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1098
2276
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
1099 setupTextureDirtyArea(0, 0, image_width, image_height);
558a9397c250 improved gl, please check performance and correct display
sven
parents: 2249
diff changeset
1100 return 0;
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1101 }
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1102
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1103
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1104 static uint32_t
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1105 draw_frame(uint8_t *src[])
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1106 {
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1107 uint32_t res = 0;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1108
10143
fd3cbeb388f0 removed broken swscaler support, added runtime fullscreens switching ability, and some other general cleanup thingies
alex
parents: 8254
diff changeset
1109 if (IMGFMT_IS_RGB(image_format))
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1110 res = draw_frame_x11_rgb(src);
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1111 else
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1112 res = draw_frame_x11_bgr(src);
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1113
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1114 return res;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1115 }
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1116
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1117 static uint32_t
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1118 query_format(uint32_t format)
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1119 {
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1120 switch(format){
12750
38c660174053 removed XFlush() before XSync(), made config_glx return-type signed, force 32bit on Darwin, idea from a patch by Marc Hoffman (mmh <at> pleasantst.com).
reimar
parents: 12709
diff changeset
1121 #ifdef SYS_DARWIN
38c660174053 removed XFlush() before XSync(), made config_glx return-type signed, force 32bit on Darwin, idea from a patch by Marc Hoffman (mmh <at> pleasantst.com).
reimar
parents: 12709
diff changeset
1122 case IMGFMT_RGB32:
38c660174053 removed XFlush() before XSync(), made config_glx return-type signed, force 32bit on Darwin, idea from a patch by Marc Hoffman (mmh <at> pleasantst.com).
reimar
parents: 12709
diff changeset
1123 #else
10143
fd3cbeb388f0 removed broken swscaler support, added runtime fullscreens switching ability, and some other general cleanup thingies
alex
parents: 8254
diff changeset
1124 case IMGFMT_RGB24:
fd3cbeb388f0 removed broken swscaler support, added runtime fullscreens switching ability, and some other general cleanup thingies
alex
parents: 8254
diff changeset
1125 case IMGFMT_BGR24:
fd3cbeb388f0 removed broken swscaler support, added runtime fullscreens switching ability, and some other general cleanup thingies
alex
parents: 8254
diff changeset
1126 // case IMGFMT_RGB32:
fd3cbeb388f0 removed broken swscaler support, added runtime fullscreens switching ability, and some other general cleanup thingies
alex
parents: 8254
diff changeset
1127 // case IMGFMT_BGR32:
12750
38c660174053 removed XFlush() before XSync(), made config_glx return-type signed, force 32bit on Darwin, idea from a patch by Marc Hoffman (mmh <at> pleasantst.com).
reimar
parents: 12709
diff changeset
1128 #endif
6212
2001affedb75 query_format revised
alex
parents: 6095
diff changeset
1129 return VFCAP_CSP_SUPPORTED | VFCAP_CSP_SUPPORTED_BY_HW | VFCAP_OSD;
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1130 }
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1131 return 0;
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1132 }
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1133
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1134
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1135 static void
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1136 uninit(void)
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1137 {
6095
891cff8aba60 some cleanup, gl/gl2 updated to use vo_window
arpi
parents: 5651
diff changeset
1138 if ( !vo_config_count ) return;
13877
faust3
parents: 13871
diff changeset
1139 #ifndef GL_WIN32
13871
8298dc8ca78b more fullscreen fixes and gl2 uses setGlWindow.
reimar
parents: 13787
diff changeset
1140 releaseGlContext(&gl_vinfo, &gl_context);
13877
faust3
parents: 13871
diff changeset
1141 #endif
13540
02c0d4371573 fixed memleak, especially for fixed-vo.
reimar
parents: 12895
diff changeset
1142 if (texgrid) {
02c0d4371573 fixed memleak, especially for fixed-vo.
reimar
parents: 12895
diff changeset
1143 free(texgrid);
02c0d4371573 fixed memleak, especially for fixed-vo.
reimar
parents: 12895
diff changeset
1144 texgrid = NULL;
02c0d4371573 fixed memleak, especially for fixed-vo.
reimar
parents: 12895
diff changeset
1145 }
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
1146 #ifdef GL_WIN32
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
1147 vo_w32_uninit();
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
1148 #else
6095
891cff8aba60 some cleanup, gl/gl2 updated to use vo_window
arpi
parents: 5651
diff changeset
1149 vo_x11_uninit();
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
1150 #endif
2124
0bb00e528669 new version by Sven Goethel
arpi
parents:
diff changeset
1151 }
4352
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4017
diff changeset
1152
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4017
diff changeset
1153 static uint32_t preinit(const char *arg)
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4017
diff changeset
1154 {
4737
32e1f5042f65 I don't like such reports: '-vo dga:vidix or -vo x11:vidix works fine for me'
nick
parents: 4658
diff changeset
1155 if(arg)
32e1f5042f65 I don't like such reports: '-vo dga:vidix or -vo x11:vidix works fine for me'
nick
parents: 4658
diff changeset
1156 {
11988
ccb15c72f331 printf -> mp_msg
attila
parents: 11542
diff changeset
1157 mp_msg(MSGT_VO, MSGL_FATAL, "[gl2] 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: 4658
diff changeset
1158 return ENOSYS;
32e1f5042f65 I don't like such reports: '-vo dga:vidix or -vo x11:vidix works fine for me'
nick
parents: 4658
diff changeset
1159 }
7931
48c71b6c7389 vo_init() moved to/fixed in preinit()
arpi
parents: 7763
diff changeset
1160 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: 4658
diff changeset
1161 return 0;
4352
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4017
diff changeset
1162 }
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4017
diff changeset
1163
4596
c35d7ce151b3 10000hl to Holm... control MUST BE static...
arpi
parents: 4592
diff changeset
1164 static uint32_t control(uint32_t request, void *data, ...)
4352
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4017
diff changeset
1165 {
4592
5fbfd8545c3b query_ stuff replaced by new control() - patch by David Holm
arpi
parents: 4440
diff changeset
1166 switch (request) {
10757
3aea64e0d6d9 Avoid flickering during resizes. Keep video contents even when paused. Fix by Tomas Simonaitis <haden@homelan.lt>
mosu
parents: 10604
diff changeset
1167 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: 10604
diff changeset
1168 case VOCTRL_RESUME: return (int_pause=0);
4592
5fbfd8545c3b query_ stuff replaced by new control() - patch by David Holm
arpi
parents: 4440
diff changeset
1169 case VOCTRL_QUERY_FORMAT:
5fbfd8545c3b query_ stuff replaced by new control() - patch by David Holm
arpi
parents: 4440
diff changeset
1170 return query_format(*((uint32_t*)data));
12382
a830eebf6693 GUI support
reimar
parents: 12035
diff changeset
1171 case VOCTRL_GUISUPPORT:
a830eebf6693 GUI support
reimar
parents: 12035
diff changeset
1172 return VO_TRUE;
11542
85e503ddf65f runtime 'stay-on-top' functionality
joey
parents: 11087
diff changeset
1173 case VOCTRL_ONTOP:
85e503ddf65f runtime 'stay-on-top' functionality
joey
parents: 11087
diff changeset
1174 #ifdef GL_WIN32
85e503ddf65f runtime 'stay-on-top' functionality
joey
parents: 11087
diff changeset
1175 vo_w32_ontop();
85e503ddf65f runtime 'stay-on-top' functionality
joey
parents: 11087
diff changeset
1176 #else
85e503ddf65f runtime 'stay-on-top' functionality
joey
parents: 11087
diff changeset
1177 vo_x11_ontop();
85e503ddf65f runtime 'stay-on-top' functionality
joey
parents: 11087
diff changeset
1178 #endif
85e503ddf65f runtime 'stay-on-top' functionality
joey
parents: 11087
diff changeset
1179 return VO_TRUE;
10143
fd3cbeb388f0 removed broken swscaler support, added runtime fullscreens switching ability, and some other general cleanup thingies
alex
parents: 8254
diff changeset
1180 case VOCTRL_FULLSCREEN:
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
1181 #ifdef GL_WIN32
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
1182 vo_w32_fullscreen();
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
1183 initGl(vo_dwidth, vo_dheight);
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
1184 #else
10143
fd3cbeb388f0 removed broken swscaler support, added runtime fullscreens switching ability, and some other general cleanup thingies
alex
parents: 8254
diff changeset
1185 vo_x11_fullscreen();
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
1186 #endif
10143
fd3cbeb388f0 removed broken swscaler support, added runtime fullscreens switching ability, and some other general cleanup thingies
alex
parents: 8254
diff changeset
1187 return VO_TRUE;
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
1188 #ifndef GL_WIN32
7964
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
1189 case VOCTRL_SET_EQUALIZER:
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
1190 {
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
1191 va_list ap;
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
1192 int value;
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
1193
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
1194 va_start(ap, data);
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
1195 value = va_arg(ap, int);
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
1196 va_end(ap);
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
1197 return vo_x11_set_equalizer(data, value);
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
1198 }
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
1199 case VOCTRL_GET_EQUALIZER:
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
1200 {
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
1201 va_list ap;
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
1202 int *value;
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
1203
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
1204 va_start(ap, data);
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
1205 value = va_arg(ap, int *);
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
1206 va_end(ap);
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
1207 return vo_x11_get_equalizer(data, value);
143d730908ae here is a somewhat generic equalizer implementation for the X11 vo drivers
arpi
parents: 7931
diff changeset
1208 }
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents: 10757
diff changeset
1209 #endif
4592
5fbfd8545c3b query_ stuff replaced by new control() - patch by David Holm
arpi
parents: 4440
diff changeset
1210 }
5fbfd8545c3b query_ stuff replaced by new control() - patch by David Holm
arpi
parents: 4440
diff changeset
1211 return VO_NOTIMPL;
4352
ed5b85b713a3 Extensions for video accelerated architecture
nick
parents: 4017
diff changeset
1212 }