annotate libvo/vo_ggi.c @ 32439:2f1ccd169a7f

Improve vd_ffmpeg aspect handling to respect container aspect if possible (i.e. until the first resolution or aspect change) and to use correct aspect if only resolution changes but not the pixel aspect.
author reimar
date Fri, 22 Oct 2010 17:36:11 +0000
parents 7681eab10aea
children 8fa2f43cb760
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1172
290353337b44 hardly modified, keyboard handling is ok. aspect implemented, but bugging :)
al3x
parents: 1148
diff changeset
1 /*
28446
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27365
diff changeset
2 * General Graphics Interface (GGI) vo driver
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27365
diff changeset
3 *
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27365
diff changeset
4 * copyright (C) 2001 Alex Beregszaszi
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27365
diff changeset
5 *
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27365
diff changeset
6 * Uses libGGI - http://www.ggi-project.org/
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27365
diff changeset
7 *
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27365
diff changeset
8 * TODO:
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27365
diff changeset
9 * * implement gamma handling (VAA isn't obsoleted?)
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27365
diff changeset
10 *
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27365
diff changeset
11 * Thanks to Andreas Beck for his patches.
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27365
diff changeset
12 *
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27365
diff changeset
13 * Many thanks to Atmosfear, he hacked this driver to work with planar
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27365
diff changeset
14 * formats, and he fixed the RGB handling.
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27365
diff changeset
15 *
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27365
diff changeset
16 * This file is part of MPlayer.
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27365
diff changeset
17 *
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27365
diff changeset
18 * MPlayer is free software; you can redistribute it and/or modify
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27365
diff changeset
19 * it under the terms of the GNU General Public License as published by
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27365
diff changeset
20 * the Free Software Foundation; either version 2 of the License, or
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27365
diff changeset
21 * (at your option) any later version.
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27365
diff changeset
22 *
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27365
diff changeset
23 * MPlayer is distributed in the hope that it will be useful,
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27365
diff changeset
24 * but WITHOUT ANY WARRANTY; without even the implied warranty of
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27365
diff changeset
25 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27365
diff changeset
26 * GNU General Public License for more details.
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27365
diff changeset
27 *
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27365
diff changeset
28 * You should have received a copy of the GNU General Public License along
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27365
diff changeset
29 * with MPlayer; if not, write to the Free Software Foundation, Inc.,
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27365
diff changeset
30 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
7681eab10aea Add standard license headers, unify header formatting.
diego
parents: 27365
diff changeset
31 */
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
32
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
33 #include <stdio.h>
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
34 #include <stdlib.h>
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
35 #include <string.h>
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
36 #include <errno.h>
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
37
4828
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
38 #include "mp_msg.h"
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
39
12650
ac3fd2ff2561 Unify the config.h #include, use "config.h" instead of "../config.h"
diego
parents: 11110
diff changeset
40 #include "config.h"
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
41 #include "video_out.h"
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
42 #include "video_out_internal.h"
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
43
22823
98eaf29b5dee Code cleanup: don't include a .c file in mplayer.c and fix a few
rathann
parents: 16470
diff changeset
44 #include "mp_fifo.h"
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
45
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
46 #include <ggi/ggi.h>
1141
c33f8b7488d1 cleaned up, and merged with my version, also code will be faster too
al3x
parents: 1132
diff changeset
47
27365
13c920fdf7f5 Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents: 26755
diff changeset
48 #ifdef CONFIG_GGIWMH
15406
04c47e9acab3 - make use of libggiwmh if found by configure
diego
parents: 15272
diff changeset
49 #include <ggi/wmh.h>
04c47e9acab3 - make use of libggiwmh if found by configure
diego
parents: 15272
diff changeset
50 #endif
04c47e9acab3 - make use of libggiwmh if found by configure
diego
parents: 15272
diff changeset
51
4831
9153d1275b6d do not fault if no directbuffer available (for example: ggi display-multi)
alex
parents: 4830
diff changeset
52 /* maximum buffers */
5703
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
53 #undef GGI_FLIP
5637
6890819bc0dc added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents: 4841
diff changeset
54
25216
3aee342be929 Make vo info structs const
reimar
parents: 23376
diff changeset
55 static const vo_info_t info =
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
56 {
16409
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
57 "General Graphics Interface (GGI) output",
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
58 "ggi",
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
59 "Alex Beregszaszi",
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
60 "major"
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
61 };
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
62
25220
c9e9ac2008c2 Mark the vo_functions_t definitions as const where possible.
reimar
parents: 25216
diff changeset
63 const LIBVO_EXTERN(ggi)
16409
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
64
8148
5b39e79af5fe removed get_info, using the same sheme as in libmpcodecs instead
alex
parents: 7124
diff changeset
65
1172
290353337b44 hardly modified, keyboard handling is ok. aspect implemented, but bugging :)
al3x
parents: 1148
diff changeset
66 static struct ggi_conf_s {
290353337b44 hardly modified, keyboard handling is ok. aspect implemented, but bugging :)
al3x
parents: 1148
diff changeset
67 char *driver;
16409
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
68
1172
290353337b44 hardly modified, keyboard handling is ok. aspect implemented, but bugging :)
al3x
parents: 1148
diff changeset
69 ggi_visual_t vis;
16470
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
70 ggi_visual_t drawvis;
16409
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
71
4830
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
72 /* source image format */
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
73 int srcwidth;
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
74 int srcheight;
4828
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
75 int srcformat;
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
76 int srcdepth;
5703
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
77 int srcbpp;
14175
c4fe6bb22e2e - Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents: 14021
diff changeset
78
c4fe6bb22e2e - Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents: 14021
diff changeset
79 /* dirty region */
c4fe6bb22e2e - Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents: 14021
diff changeset
80 struct {
16409
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
81 int x1, y1;
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
82 int x2, y2;
14175
c4fe6bb22e2e - Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents: 14021
diff changeset
83 } flushregion;
16409
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
84
5703
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
85 int voflags;
1172
290353337b44 hardly modified, keyboard handling is ok. aspect implemented, but bugging :)
al3x
parents: 1148
diff changeset
86 } ggi_conf;
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
87
14175
c4fe6bb22e2e - Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents: 14021
diff changeset
88
27365
13c920fdf7f5 Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents: 26755
diff changeset
89 #ifdef CONFIG_GGIWMH
15406
04c47e9acab3 - make use of libggiwmh if found by configure
diego
parents: 15272
diff changeset
90 static void window_ontop(void)
04c47e9acab3 - make use of libggiwmh if found by configure
diego
parents: 15272
diff changeset
91 {
16409
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
92 mp_msg(MSGT_VO, MSGL_V, "[ggi] debug: window_ontop() called\n");
16470
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
93 ggiWmhZOrder(ggi_conf.vis, ZO_TOP);
16409
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
94 return;
15406
04c47e9acab3 - make use of libggiwmh if found by configure
diego
parents: 15272
diff changeset
95 }
04c47e9acab3 - make use of libggiwmh if found by configure
diego
parents: 15272
diff changeset
96 #endif
04c47e9acab3 - make use of libggiwmh if found by configure
diego
parents: 15272
diff changeset
97
04c47e9acab3 - make use of libggiwmh if found by configure
diego
parents: 15272
diff changeset
98
14175
c4fe6bb22e2e - Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents: 14021
diff changeset
99 static void set_graphtype(uint32_t format, ggi_mode *mode)
c4fe6bb22e2e - Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents: 14021
diff changeset
100 {
16409
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
101 switch (format) {
16426
3523630c28cf Replace remaining tabs by spaces.
diego
parents: 16409
diff changeset
102 case IMGFMT_RGB4:
16409
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
103 mode->graphtype = GT_4BIT;
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
104 break;
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
105 case IMGFMT_BGR4:
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
106 mode->graphtype = GT_4BIT;
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
107 GT_SETSUBSCHEME(mode->graphtype, GT_SUB_HIGHBIT_RIGHT);
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
108 break;
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
109 case IMGFMT_RGB8:
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
110 case IMGFMT_BGR8:
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
111 mode->graphtype = GT_8BIT;
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
112 break;
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
113 case IMGFMT_RGB15:
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
114 case IMGFMT_BGR15:
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
115 mode->graphtype = GT_15BIT;
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
116 break;
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
117 case IMGFMT_RGB16:
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
118 case IMGFMT_BGR16:
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
119 mode->graphtype = GT_16BIT;
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
120 break;
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
121 case IMGFMT_RGB24:
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
122 case IMGFMT_BGR24:
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
123 mode->graphtype = GT_24BIT;
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
124 break;
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
125 case IMGFMT_RGB32:
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
126 case IMGFMT_BGR32:
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
127 mode->graphtype = GT_32BIT;
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
128 break;
14175
c4fe6bb22e2e - Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents: 14021
diff changeset
129 }
c4fe6bb22e2e - Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents: 14021
diff changeset
130
c4fe6bb22e2e - Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents: 14021
diff changeset
131 return;
c4fe6bb22e2e - Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents: 14021
diff changeset
132 }
c4fe6bb22e2e - Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents: 14021
diff changeset
133
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15406
diff changeset
134 static int config(uint32_t width, uint32_t height, uint32_t d_width,
16409
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
135 uint32_t d_height, uint32_t flags, char *title,
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
136 uint32_t format)
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
137 {
14175
c4fe6bb22e2e - Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents: 14021
diff changeset
138 ggi_mode mode = {
16409
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
139 1, /* frames */
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
140 {width, height}, /* visible */
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
141 {GGI_AUTO, GGI_AUTO}, /* virt */
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
142 {GGI_AUTO, GGI_AUTO}, /* size */
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
143 GT_AUTO, /* graphtype */
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
144 {GGI_AUTO, GGI_AUTO} /* dots per pixel */
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
145 };
14021
f0236d5ba7a7 Remove broken support for directbuffer and including frame-handling use.
iive
parents: 13787
diff changeset
146
16409
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
147
16470
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
148 set_graphtype(format, &mode);
4828
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
149
5703
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
150 #if 0
4830
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
151 printf("[ggi] mode: ");
15406
04c47e9acab3 - make use of libggiwmh if found by configure
diego
parents: 15272
diff changeset
152 ggiPrintMode(&mode);
04c47e9acab3 - make use of libggiwmh if found by configure
diego
parents: 15272
diff changeset
153 printf("\n");
4830
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
154 #endif
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
155
16470
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
156 ggiCheckMode(ggi_conf.vis, &mode);
4830
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
157
16470
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
158 if (ggiSetMode(ggi_conf.vis, &mode) < 0) {
16426
3523630c28cf Replace remaining tabs by spaces.
diego
parents: 16409
diff changeset
159 mp_msg(MSGT_VO, MSGL_ERR, "[ggi] unable to set display mode\n");
26755
46f0b4d34fa1 cosmetics: Remove useless parentheses from from return statements.
diego
parents: 25220
diff changeset
160 return -1;
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
161 }
16470
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
162 if (ggiGetMode(ggi_conf.vis, &mode) < 0) {
16426
3523630c28cf Replace remaining tabs by spaces.
diego
parents: 16409
diff changeset
163 mp_msg(MSGT_VO, MSGL_ERR, "[ggi] unable to get display mode\n");
26755
46f0b4d34fa1 cosmetics: Remove useless parentheses from from return statements.
diego
parents: 25220
diff changeset
164 return -1;
1147
82bbd3ee8ce7 hacked osd working on yv12
al3x
parents: 1145
diff changeset
165 }
16470
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
166 if ((mode.graphtype == GT_INVALID)
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
167 || (mode.graphtype == GT_AUTO))
4841
5928e94c0d5f older API fixes, support for async mode
alex
parents: 4831
diff changeset
168 {
16426
3523630c28cf Replace remaining tabs by spaces.
diego
parents: 16409
diff changeset
169 mp_msg(MSGT_VO, MSGL_ERR, "[ggi] not supported depth/bpp\n");
26755
46f0b4d34fa1 cosmetics: Remove useless parentheses from from return statements.
diego
parents: 25220
diff changeset
170 return -1;
4841
5928e94c0d5f older API fixes, support for async mode
alex
parents: 4831
diff changeset
171 }
5928e94c0d5f older API fixes, support for async mode
alex
parents: 4831
diff changeset
172
15406
04c47e9acab3 - make use of libggiwmh if found by configure
diego
parents: 15272
diff changeset
173 #if 0
04c47e9acab3 - make use of libggiwmh if found by configure
diego
parents: 15272
diff changeset
174 printf("[ggi] mode: ");
4830
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
175 ggiPrintMode(&mode);
4828
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
176 printf("\n");
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
177 #endif
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
178
16470
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
179
27365
13c920fdf7f5 Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents: 26755
diff changeset
180 #ifdef CONFIG_GGIWMH
16470
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
181 ggiWmhSetTitle(ggi_conf.vis, title);
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
182 if (vo_ontop) window_ontop();
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
183 #endif
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
184
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
185 ggiSetFlags(ggi_conf.vis, GGIFLAG_ASYNC);
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
186
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
187 if (GT_SCHEME(mode.graphtype) == GT_PALETTE)
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
188 ggiSetColorfulPalette(ggi_conf.vis);
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
189
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
190 if (GT_SCHEME(mode.graphtype) != GT_TRUECOLOR) {
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
191 ggi_mode drawmode;
16409
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
192
16470
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
193 ggi_conf.drawvis = ggiOpen("display-memory", NULL);
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
194 if (ggi_conf.drawvis == NULL) {
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
195 mp_msg(MSGT_VO, MSGL_ERR,
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
196 "[ggi] unable to get backbuffer for conversion\n");
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
197 return -1;
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
198 }
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
199 memcpy(&drawmode, &mode, sizeof(ggi_mode));
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
200 drawmode.graphtype = GT_32BIT;
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
201 drawmode.size.x = GGI_AUTO;
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
202 drawmode.size.y = GGI_AUTO;
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
203 ggiCheckMode(ggi_conf.drawvis, &drawmode);
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
204 if (ggiSetMode(ggi_conf.drawvis, &drawmode) < 0) {
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
205 mp_msg(MSGT_VO, MSGL_ERR,
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
206 "[ggi] unable to set backbuffer mode\n");
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
207 return -1;
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
208 }
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
209 mode.graphtype = drawmode.graphtype;
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
210
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
211 ggiSetFlags(ggi_conf.drawvis, GGIFLAG_ASYNC);
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
212 }
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
213 vo_depthonscreen = GT_DEPTH(mode.graphtype);
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
214 vo_screenwidth = mode.virt.x;
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
215 vo_screenheight = mode.virt.y;
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
216
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
217 vo_dwidth = width;
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
218 vo_dheight = height;
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
219 vo_dbpp = GT_SIZE(mode.graphtype);
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
220
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
221
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
222 /* calculate top, left corner */
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
223 vo_dx = (vo_screenwidth - vo_dwidth) / 2;
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
224 vo_dy = (vo_screenheight - vo_dheight) / 2;
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
225
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
226
4828
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
227 ggi_conf.srcwidth = width;
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
228 ggi_conf.srcheight = height;
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
229 ggi_conf.srcformat = format;
15406
04c47e9acab3 - make use of libggiwmh if found by configure
diego
parents: 15272
diff changeset
230
5703
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
231 ggi_conf.voflags = flags;
4830
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
232
16409
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
233 if (IMGFMT_IS_RGB(ggi_conf.srcformat)) {
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
234 ggi_conf.srcdepth = IMGFMT_RGB_DEPTH(ggi_conf.srcformat);
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
235 } else if (IMGFMT_IS_BGR(ggi_conf.srcformat)) {
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
236 ggi_conf.srcdepth = IMGFMT_BGR_DEPTH(ggi_conf.srcformat);
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
237 } else {
5637
6890819bc0dc added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents: 4841
diff changeset
238 mp_msg(MSGT_VO, MSGL_FATAL, "[ggi] Unknown image format: %s\n",
16409
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
239 vo_format_name(ggi_conf.srcformat));
26755
46f0b4d34fa1 cosmetics: Remove useless parentheses from from return statements.
diego
parents: 25220
diff changeset
240 return -1;
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
241 }
1172
290353337b44 hardly modified, keyboard handling is ok. aspect implemented, but bugging :)
al3x
parents: 1148
diff changeset
242
14021
f0236d5ba7a7 Remove broken support for directbuffer and including frame-handling use.
iive
parents: 13787
diff changeset
243 mp_msg(MSGT_VO, MSGL_INFO, "[ggi] input: %dx%dx%d, output: %dx%dx%d\n",
16409
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
244 ggi_conf.srcwidth, ggi_conf.srcheight, ggi_conf.srcdepth,
16470
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
245 mode.virt.x, mode.virt.y, vo_dbpp);
4841
5928e94c0d5f older API fixes, support for async mode
alex
parents: 4831
diff changeset
246
16409
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
247 ggi_conf.srcbpp = (ggi_conf.srcdepth + 7) / 8;
4830
2c1dd0b15622 reworked :) should work on low bpp outputs
alex
parents: 4828
diff changeset
248
16470
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
249 ggi_conf.flushregion.x1 = vo_dx;
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
250 ggi_conf.flushregion.y1 = vo_dy;
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
251 ggi_conf.flushregion.x2 = vo_dwidth;
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
252 ggi_conf.flushregion.y2 = vo_dheight;
14175
c4fe6bb22e2e - Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents: 14021
diff changeset
253
26755
46f0b4d34fa1 cosmetics: Remove useless parentheses from from return statements.
diego
parents: 25220
diff changeset
254 return 0;
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
255 }
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
256
5637
6890819bc0dc added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents: 4841
diff changeset
257 static uint32_t get_image(mp_image_t *mpi)
6890819bc0dc added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents: 4841
diff changeset
258 {
6890819bc0dc added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents: 4841
diff changeset
259 /* GGI DirectRendering supports (yet) only BGR/RGB modes */
16470
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
260 if (!((IMGFMT_IS_BGR(mpi->imgfmt)) &&
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
261 (IMGFMT_BGR_DEPTH(mpi->imgfmt) == vo_dbpp)))
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
262 {
26755
46f0b4d34fa1 cosmetics: Remove useless parentheses from from return statements.
diego
parents: 25220
diff changeset
263 return VO_FALSE;
16470
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
264 }
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
265
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
266 if (!((IMGFMT_IS_RGB(mpi->imgfmt)) &&
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
267 (IMGFMT_RGB_DEPTH(mpi->imgfmt) == vo_dbpp)))
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
268 {
26755
46f0b4d34fa1 cosmetics: Remove useless parentheses from from return statements.
diego
parents: 25220
diff changeset
269 return VO_FALSE;
16470
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
270 }
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
271
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
272 if (!((mpi->width == ggi_conf.srcwidth) &&
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
273 (mpi->height == ggi_conf.srcheight)))
14175
c4fe6bb22e2e - Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents: 14021
diff changeset
274 {
26755
46f0b4d34fa1 cosmetics: Remove useless parentheses from from return statements.
diego
parents: 25220
diff changeset
275 return VO_FALSE;
14175
c4fe6bb22e2e - Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents: 14021
diff changeset
276 }
5637
6890819bc0dc added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents: 4841
diff changeset
277
5703
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
278 mpi->planes[1] = mpi->planes[2] = NULL;
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
279 mpi->stride[1] = mpi->stride[2] = 0;
16409
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
280
14021
f0236d5ba7a7 Remove broken support for directbuffer and including frame-handling use.
iive
parents: 13787
diff changeset
281 mpi->planes[0] = NULL;
14175
c4fe6bb22e2e - Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents: 14021
diff changeset
282 mpi->stride[0] = ggi_conf.srcwidth * ggi_conf.srcbpp;
5637
6890819bc0dc added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents: 4841
diff changeset
283 mpi->flags |= MP_IMGFLAG_DIRECT;
6890819bc0dc added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents: 4841
diff changeset
284
5703
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
285 #ifdef GGI_FLIP
16409
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
286 if (ggi_conf.voflags & VOFLAG_FLIPPING) {
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
287 mpi->stride[0] = -mpi->stride[0];
5703
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
288 }
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
289 #endif
efd2518b174e minor fixes and flipping support
alex
parents: 5637
diff changeset
290
26755
46f0b4d34fa1 cosmetics: Remove useless parentheses from from return statements.
diego
parents: 25220
diff changeset
291 return VO_TRUE;
5637
6890819bc0dc added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents: 4841
diff changeset
292 }
6890819bc0dc added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents: 4841
diff changeset
293
6890819bc0dc added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents: 4841
diff changeset
294
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15406
diff changeset
295 static int draw_frame(uint8_t *src[])
5637
6890819bc0dc added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents: 4841
diff changeset
296 {
16470
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
297 ggiPutBox(ggi_conf.drawvis, vo_dx, vo_dy,
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
298 vo_dwidth, vo_dheight, src[0]);
14175
c4fe6bb22e2e - Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents: 14021
diff changeset
299
16470
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
300 ggi_conf.flushregion.x1 = vo_dx;
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
301 ggi_conf.flushregion.y1 = vo_dy;
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
302 ggi_conf.flushregion.x2 = vo_dwidth;
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
303 ggi_conf.flushregion.y2 = vo_dheight;
5637
6890819bc0dc added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents: 4841
diff changeset
304
26755
46f0b4d34fa1 cosmetics: Remove useless parentheses from from return statements.
diego
parents: 25220
diff changeset
305 return 0;
1141
c33f8b7488d1 cleaned up, and merged with my version, also code will be faster too
al3x
parents: 1132
diff changeset
306 }
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
307
5637
6890819bc0dc added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents: 4841
diff changeset
308 static void draw_osd(void)
6890819bc0dc added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents: 4841
diff changeset
309 {
14175
c4fe6bb22e2e - Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents: 14021
diff changeset
310 return;
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
311 }
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
312
5637
6890819bc0dc added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents: 4841
diff changeset
313 static void flip_page(void)
6890819bc0dc added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents: 4841
diff changeset
314 {
16470
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
315 if (ggi_conf.drawvis != ggi_conf.vis) {
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
316 #if 0
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
317 ggiFlushRegion(ggi_conf.drawvis,
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
318 ggi_conf.flushregion.x1, ggi_conf.flushregion.y1,
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
319 ggi_conf.flushregion.x2 - ggi_conf.flushregion.x1,
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
320 ggi_conf.flushregion.y2 - ggi_conf.flushregion.y1);
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
321 #endif
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
322 ggiCrossBlit(ggi_conf.drawvis,
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
323 ggi_conf.flushregion.x1, ggi_conf.flushregion.y1,
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
324 ggi_conf.flushregion.x2 - ggi_conf.flushregion.x1,
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
325 ggi_conf.flushregion.y2 - ggi_conf.flushregion.y1,
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
326 ggi_conf.vis,
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
327 ggi_conf.flushregion.x1, ggi_conf.flushregion.y1);
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
328
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
329 }
16409
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
330 ggiFlushRegion(ggi_conf.vis,
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
331 ggi_conf.flushregion.x1, ggi_conf.flushregion.y1,
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
332 ggi_conf.flushregion.x2 - ggi_conf.flushregion.x1,
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
333 ggi_conf.flushregion.y2 - ggi_conf.flushregion.y1);
15406
04c47e9acab3 - make use of libggiwmh if found by configure
diego
parents: 15272
diff changeset
334
04c47e9acab3 - make use of libggiwmh if found by configure
diego
parents: 15272
diff changeset
335 ggi_conf.flushregion.x1 = ggi_conf.flushregion.x2 = -1;
04c47e9acab3 - make use of libggiwmh if found by configure
diego
parents: 15272
diff changeset
336 ggi_conf.flushregion.y1 = ggi_conf.flushregion.y2 = -1;
5637
6890819bc0dc added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents: 4841
diff changeset
337 }
6890819bc0dc added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents: 4841
diff changeset
338
16409
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
339 static int draw_slice(uint8_t *src[], int stride[],
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
340 int w, int h, int x, int y)
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
341 {
16470
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
342 ggiPutBox(ggi_conf.drawvis, vo_dx + x, vo_dy + y, w, h, src[0]);
14175
c4fe6bb22e2e - Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents: 14021
diff changeset
343
16470
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
344 if ((ggi_conf.flushregion.x1 == -1) ||
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
345 ((vo_dx + x) < ggi_conf.flushregion.x1))
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
346 {
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
347 ggi_conf.flushregion.x1 = vo_dx + x;
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
348 }
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
349 if ((ggi_conf.flushregion.y1 == -1) ||
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
350 ((vo_dy + y) < ggi_conf.flushregion.y1))
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
351 {
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
352 ggi_conf.flushregion.y1 = vo_dy + y;
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
353 }
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
354 if ((ggi_conf.flushregion.x2 == -1) ||
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
355 ((vo_dx + x + w) > ggi_conf.flushregion.x2))
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
356 {
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
357 ggi_conf.flushregion.x2 = vo_dx + x + w;
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
358 }
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
359 if ((ggi_conf.flushregion.y2 == -1) ||
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
360 ((vo_dy + y + h) > ggi_conf.flushregion.y2))
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
361 {
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
362 ggi_conf.flushregion.y2 = vo_dy + y + h;
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
363 }
14175
c4fe6bb22e2e - Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents: 14021
diff changeset
364
26755
46f0b4d34fa1 cosmetics: Remove useless parentheses from from return statements.
diego
parents: 25220
diff changeset
365 return 1;
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
366 }
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
367
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15406
diff changeset
368 static int query_format(uint32_t format)
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
369 {
5637
6890819bc0dc added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents: 4841
diff changeset
370 ggi_mode mode;
14175
c4fe6bb22e2e - Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents: 14021
diff changeset
371 uint32_t vfcap;
c4fe6bb22e2e - Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents: 14021
diff changeset
372
16409
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
373 vfcap = VFCAP_CSP_SUPPORTED
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
374 | VFCAP_CSP_SUPPORTED_BY_HW
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
375 | VFCAP_ACCEPT_STRIDE;
14175
c4fe6bb22e2e - Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents: 14021
diff changeset
376
16470
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
377 if ((!vo_depthonscreen || !vo_dbpp) && ggi_conf.vis) {
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
378 if (ggiGetMode(ggi_conf.vis, &mode) == 0) {
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
379 vo_depthonscreen = GT_DEPTH(mode.graphtype);
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
380 vo_dbpp = GT_SIZE(mode.graphtype);
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
381 }
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
382 if (GT_SCHEME(mode.graphtype) == GT_AUTO) {
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
383 ggiCheckMode(ggi_conf.vis, &mode);
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
384 }
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
385 if (GT_SCHEME(mode.graphtype) != GT_TRUECOLOR) {
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
386 mode.graphtype = GT_32BIT;
16409
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
387 vo_depthonscreen = GT_DEPTH(mode.graphtype);
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
388 vo_dbpp = GT_SIZE(mode.graphtype);
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
389 }
5637
6890819bc0dc added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents: 4841
diff changeset
390 }
6890819bc0dc added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents: 4841
diff changeset
391 if ((IMGFMT_IS_BGR(format) && (IMGFMT_BGR_DEPTH(format) == vo_dbpp)) ||
16409
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
392 (IMGFMT_IS_RGB(format) && (IMGFMT_RGB_DEPTH(format) == vo_dbpp)))
1141
c33f8b7488d1 cleaned up, and merged with my version, also code will be faster too
al3x
parents: 1132
diff changeset
393 {
16409
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
394 return vfcap;
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
395 }
16409
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
396 if (IMGFMT_IS_BGR(format) || IMGFMT_IS_RGB(format)) {
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
397 set_graphtype(format, &mode);
14175
c4fe6bb22e2e - Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents: 14021
diff changeset
398
16470
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
399 if (ggiCheckMode(ggi_conf.drawvis, &mode) < 0) {
16409
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
400 return 0;
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
401 } else {
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
402 return vfcap;
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
403 }
5637
6890819bc0dc added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents: 4841
diff changeset
404 }
26755
46f0b4d34fa1 cosmetics: Remove useless parentheses from from return statements.
diego
parents: 25220
diff changeset
405 return 0;
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
406 }
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
407
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15406
diff changeset
408 static int preinit(const char *arg)
4828
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
409 {
16409
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
410 if (ggiInit() != 0) {
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
411 mp_msg(MSGT_VO, MSGL_FATAL, "[ggi] unable to initialize GGI\n");
26755
46f0b4d34fa1 cosmetics: Remove useless parentheses from from return statements.
diego
parents: 25220
diff changeset
412 return -1;
4828
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
413 }
27365
13c920fdf7f5 Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents: 26755
diff changeset
414 #ifdef CONFIG_GGIWMH
16409
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
415 if (ggiWmhInit() < 0) {
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
416 mp_msg(MSGT_VO, MSGL_FATAL, "[ggi] unable to initialize libggiwmh\n");
26755
46f0b4d34fa1 cosmetics: Remove useless parentheses from from return statements.
diego
parents: 25220
diff changeset
417 return -1;
15406
04c47e9acab3 - make use of libggiwmh if found by configure
diego
parents: 15272
diff changeset
418 }
04c47e9acab3 - make use of libggiwmh if found by configure
diego
parents: 15272
diff changeset
419 #endif
04c47e9acab3 - make use of libggiwmh if found by configure
diego
parents: 15272
diff changeset
420
16470
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
421 if (arg) {
16409
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
422 int i = 0;
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
423 ggi_conf.driver = strdup(arg);
16470
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
424 while (ggi_conf.driver[i] != '\0') {
16409
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
425 if (ggi_conf.driver[i] == '.')
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
426 ggi_conf.driver[i] = ',';
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
427 i++;
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
428 }
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
429 } else {
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
430 ggi_conf.driver = NULL;
4828
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
431 }
14175
c4fe6bb22e2e - Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents: 14021
diff changeset
432
16470
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
433 ggi_conf.vis = ggiOpen(ggi_conf.driver);
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
434 if (ggi_conf.vis == NULL) {
16409
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
435 mp_msg(MSGT_VO, MSGL_FATAL, "[ggi] unable to open '%s' output\n",
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
436 (ggi_conf.driver == NULL) ? "default" : ggi_conf.driver);
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
437 ggiExit();
26755
46f0b4d34fa1 cosmetics: Remove useless parentheses from from return statements.
diego
parents: 25220
diff changeset
438 return -1;
16409
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
439 }
16470
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
440 ggi_conf.drawvis = ggi_conf.vis;
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
441
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
442
27365
13c920fdf7f5 Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents: 26755
diff changeset
443 #ifdef CONFIG_GGIWMH
16470
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
444 ggiWmhAttach(ggi_conf.vis);
15406
04c47e9acab3 - make use of libggiwmh if found by configure
diego
parents: 15272
diff changeset
445 #endif
04c47e9acab3 - make use of libggiwmh if found by configure
diego
parents: 15272
diff changeset
446
16409
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
447
4828
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
448 mp_msg(MSGT_VO, MSGL_V, "[ggi] using '%s' output\n",
16409
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
449 (ggi_conf.driver == NULL) ? "default" : ggi_conf.driver);
4828
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
450
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
451 return 0;
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
452 }
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
453
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
454 static void uninit(void)
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
455 {
4841
5928e94c0d5f older API fixes, support for async mode
alex
parents: 4831
diff changeset
456 if (ggi_conf.driver)
16409
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
457 free(ggi_conf.driver);
15406
04c47e9acab3 - make use of libggiwmh if found by configure
diego
parents: 15272
diff changeset
458
27365
13c920fdf7f5 Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents: 26755
diff changeset
459 #ifdef CONFIG_GGIWMH
16470
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
460 ggiWmhDetach(ggi_conf.vis);
15406
04c47e9acab3 - make use of libggiwmh if found by configure
diego
parents: 15272
diff changeset
461 ggiWmhExit();
04c47e9acab3 - make use of libggiwmh if found by configure
diego
parents: 15272
diff changeset
462 #endif
04c47e9acab3 - make use of libggiwmh if found by configure
diego
parents: 15272
diff changeset
463
16470
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
464 if (ggi_conf.drawvis != NULL && ggi_conf.drawvis != ggi_conf.vis)
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
465 ggiClose(ggi_conf.drawvis);
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
466
1172
290353337b44 hardly modified, keyboard handling is ok. aspect implemented, but bugging :)
al3x
parents: 1148
diff changeset
467 ggiClose(ggi_conf.vis);
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
468 ggiExit();
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
469 }
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
470
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15406
diff changeset
471 static int control(uint32_t request, void *data, ...)
4828
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
472 {
16409
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
473 switch (request) {
16426
3523630c28cf Replace remaining tabs by spaces.
diego
parents: 16409
diff changeset
474 case VOCTRL_QUERY_FORMAT:
16409
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
475 return query_format(*((uint32_t *) data));
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
476 case VOCTRL_GET_IMAGE:
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
477 return get_image(data);
27365
13c920fdf7f5 Change a bunch of video-output-specific preprocessor directives from a HAVE_
diego
parents: 26755
diff changeset
478 #ifdef CONFIG_GGIWMH
16409
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
479 case VOCTRL_ONTOP:
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
480 vo_ontop = (!(vo_ontop));
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
481 window_ontop();
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
482 return VO_TRUE;
15406
04c47e9acab3 - make use of libggiwmh if found by configure
diego
parents: 15272
diff changeset
483 #endif
5637
6890819bc0dc added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents: 4841
diff changeset
484 }
6890819bc0dc added support for directrendering, updated to VFCAP_ flags in query_format, added support for non-directbuffer devices, and using mem2agpcpy_pic
alex
parents: 4841
diff changeset
485 return VO_NOTIMPL;
4828
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
486 }
0ae597cc28e6 totally reworked, working fine on fbdev too, applied Andres Beck's patches, quad-buffering support
alex
parents: 4737
diff changeset
487
4841
5928e94c0d5f older API fixes, support for async mode
alex
parents: 4831
diff changeset
488 /* EVENT handling */
13787
e047e70a9767 Handle "xxx.h" vs "../xxx.h" include paths in a consistent way.
diego
parents: 12650
diff changeset
489 #include "osdep/keycodes.h"
1172
290353337b44 hardly modified, keyboard handling is ok. aspect implemented, but bugging :)
al3x
parents: 1148
diff changeset
490
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
491 static void check_events(void)
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
492 {
16409
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
493 struct timeval tv = {0, 0};
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
494 ggi_event event;
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
495 ggi_event_mask mask;
1143
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
496
16470
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
497 if ((mask = ggiEventPoll(ggi_conf.vis, emAll, &tv))) {
fbaf51e1c3b2 - improved performance on truecolor modes
diego
parents: 16426
diff changeset
498 if (ggiEventRead(ggi_conf.vis, &event, emAll) != 0) {
16409
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
499 mp_dbg(MSGT_VO, MSGL_DBG3,
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
500 "type: %4x, origin: %4x, "
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
501 "sym: %4x, label: %4x, button=%4x\n",
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
502 event.any.origin, event.any.type, event.key.sym,
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
503 event.key.label, event.key.button);
1143
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
504
16409
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
505 switch (event.any.type) {
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
506 case evKeyPress:
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
507 switch (event.key.sym) {
16426
3523630c28cf Replace remaining tabs by spaces.
diego
parents: 16409
diff changeset
508 case GIIK_PAsterisk: /* PStar */
16409
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
509 case GIIUC_Asterisk:
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
510 mplayer_put_key('*');
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
511 break;
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
512 case GIIK_PSlash:
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
513 case GIIUC_Slash:
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
514 mplayer_put_key('/');
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
515 break;
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
516 case GIIK_PPlus:
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
517 case GIIUC_Plus:
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
518 mplayer_put_key('+');
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
519 break;
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
520 case GIIK_PMinus:
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
521 case GIIUC_Minus:
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
522 mplayer_put_key('-');
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
523 break;
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
524 case GIIUC_o:
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
525 case GIIUC_O:
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
526 mplayer_put_key('o');
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
527 break;
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
528 case GIIUC_g:
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
529 case GIIUC_G:
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
530 mplayer_put_key('g');
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
531 break;
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
532 case GIIUC_z:
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
533 case GIIUC_Z:
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
534 mplayer_put_key('z');
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
535 break;
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
536 case GIIUC_x:
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
537 case GIIUC_X:
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
538 mplayer_put_key('x');
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
539 break;
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
540 case GIIUC_m:
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
541 case GIIUC_M:
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
542 mplayer_put_key('m');
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
543 break;
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
544 case GIIUC_d:
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
545 case GIIUC_D:
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
546 mplayer_put_key('d');
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
547 break;
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
548 case GIIUC_q:
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
549 case GIIUC_Q:
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
550 mplayer_put_key('q');
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
551 break;
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
552 case GIIUC_h:
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
553 case GIIUC_H:
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
554 mplayer_put_key('h');
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
555 break;
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
556 case GIIUC_l:
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
557 case GIIUC_L:
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
558 mplayer_put_key('l');
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
559 break;
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
560 case GIIUC_Space:
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
561 case GIIUC_p:
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
562 case GIIUC_P:
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
563 mplayer_put_key('p');
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
564 break;
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
565 case GIIK_Up:
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
566 mplayer_put_key(KEY_UP);
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
567 break;
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
568 case GIIK_Down:
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
569 mplayer_put_key(KEY_DOWN);
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
570 break;
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
571 case GIIK_Left:
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
572 mplayer_put_key(KEY_LEFT);
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
573 break;
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
574 case GIIK_Right:
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
575 mplayer_put_key(KEY_RIGHT);
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
576 break;
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
577 case GIIK_PageUp:
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
578 mplayer_put_key(KEY_PAGE_UP);
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
579 break;
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
580 case GIIK_PageDown:
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
581 mplayer_put_key(KEY_PAGE_DOWN);
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
582 break;
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
583 default:
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
584 break;
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
585 } /* switch */
14175
c4fe6bb22e2e - Fixed mode setting, so any video can be played on all supported ggi targets.
diego
parents: 14021
diff changeset
586
16409
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
587 break;
16426
3523630c28cf Replace remaining tabs by spaces.
diego
parents: 16409
diff changeset
588 } /* switch */
16409
ff4af59f64b2 Switch indentation over to K&R style, replace all tabs by spaces.
diego
parents: 16280
diff changeset
589 } /* if */
16426
3523630c28cf Replace remaining tabs by spaces.
diego
parents: 16409
diff changeset
590 } /* if */
1143
a9d985d6aa91 key controlling implemented
al3x
parents: 1141
diff changeset
591 return;
1132
80a0f8aa2360 Added for development only this is in pre-alpha state, do not use!
atmosfear
parents:
diff changeset
592 }