Mercurial > mplayer.hg
annotate gui/interface.c @ 33960:1cd81338af07
Rework fullscreen handling.
This should fix all problems the GUI had with fullscreen handling.
In interface.c:
1. Remove disabled code.
2. Set background of inactive video window to black (which prevents
some flashing when starting the playback in fullscreen mode).
3. Set the state of the fullscreen button according to next playback
mode (normal or fullscreen).
4. Make the video window invisible if there is no video, but don't
make it visible that early if there is video.
5. Set the global fullscreen variable to get aspect scaling. (Hack)
6. In GUI_SETUP_VIDEO_WINDOW:
a. First set the video size,
b. then resize and reposition,
c. then make the window visible,
d. switch to/from fullscreen, if necessary.
(This minimizes disturbances and the display stays in fullscreen
mode and is smoothly black as often as possible.)
7. When playback ends, either act as in 6. or make video window
quickly invisible if requested.
In actions.c:
8. Allow calling uiFullScreen() even if not playing.
9. Remove unnecessary (and misplaced) repositioning (but not properly
resizing) code from uiFullScreen().
10. Don't call wsFullScreen() conditionally.
11. Only set global variable vo_fs, not the global fullscreen
variable.
author | ib |
---|---|
date | Thu, 01 Sep 2011 20:15:40 +0000 |
parents | ef089a8affc6 |
children | 30a443c59053 |
rev | line source |
---|---|
26458 | 1 /* |
2 * This file is part of MPlayer. | |
3 * | |
4 * MPlayer is free software; you can redistribute it and/or modify | |
5 * it under the terms of the GNU General Public License as published by | |
6 * the Free Software Foundation; either version 2 of the License, or | |
7 * (at your option) any later version. | |
8 * | |
9 * MPlayer is distributed in the hope that it will be useful, | |
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
12 * GNU General Public License for more details. | |
13 * | |
14 * You should have received a copy of the GNU General Public License along | |
15 * with MPlayer; if not, write to the Free Software Foundation, Inc., | |
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | |
17 */ | |
23077 | 18 |
33754 | 19 #include <stdarg.h> |
20 #include <stdio.h> | |
23077 | 21 #include <stdlib.h> |
22 #include <string.h> | |
23 | |
32984 | 24 #include "interface.h" |
25 #include "app.h" | |
26 #include "skin/skin.h" | |
33556 | 27 #include "ui/gmplayer.h" |
28 #include "ui/widgets.h" | |
33741 | 29 #include "util/list.h" |
33739 | 30 #include "util/mem.h" |
33737 | 31 #include "util/string.h" |
23077 | 32 #include "wm/ws.h" |
33 #include "wm/wsxdnd.h" | |
34 | |
35 #include "access_mpcontext.h" | |
32984 | 36 #include "config.h" |
23077 | 37 #include "help_mp.h" |
32984 | 38 #include "input/input.h" |
39 #include "libaf/equalizer.h" | |
33689
8d0290220239
Replace numeric constants for gtkEquChannels array size.
ib
parents:
33688
diff
changeset
|
40 #include "libavutil/common.h" |
32984 | 41 #include "libmpcodecs/dec_audio.h" |
42 #include "libmpcodecs/dec_video.h" | |
43 #include "libmpcodecs/vd.h" | |
44 #include "libmpcodecs/vf.h" | |
33398 | 45 #include "libvo/video_out.h" |
32984 | 46 #include "libvo/x11_common.h" |
47 #include "mixer.h" | |
48 #include "mp_msg.h" | |
32032 | 49 #include "mpcommon.h" |
30536
39a4dd7ec420
Move GUI-related extern declarations to a GUI header file.
diego
parents:
30535
diff
changeset
|
50 #include "mplayer.h" |
32984 | 51 #include "path.h" |
32466
9e627a1793b1
Move font_load.[ch], font_load_ft.c and osd_font.h from libvo to sub.
cigaes
parents:
32461
diff
changeset
|
52 #include "sub/font_load.h" |
32467 | 53 #include "sub/sub.h" |
23077 | 54 |
27341
e7c989f7a7c9
Start unifying names of internal preprocessor directives.
diego
parents:
26458
diff
changeset
|
55 #ifdef CONFIG_DVDREAD |
23077 | 56 #include "stream/stream_dvd.h" |
57 #endif | |
58 | |
33662 | 59 guiInterface_t guiInfo = { |
33664 | 60 .StreamType = STREAMTYPE_DUMMY, |
61 .Balance = 50.0f | |
33662 | 62 }; |
23077 | 63 |
33265 | 64 static int initialized; |
65 | |
33745 | 66 /* MPlayer -> GUI */ |
67 | |
32984 | 68 void guiInit(void) |
23077 | 69 { |
32984 | 70 int i; |
23077 | 71 |
33530 | 72 mp_msg(MSGT_GPLAYER, MSGL_V, "GUI init.\n"); |
73 | |
32984 | 74 #ifdef CONFIG_DXR3 |
75 if (!gtkDXR3Device) | |
76 gtkDXR3Device = strdup("/dev/em8300-0"); | |
77 #endif | |
32927 | 78 |
32984 | 79 if (stream_cache_size > 0) { |
80 gtkCacheOn = 1; | |
81 gtkCacheSize = stream_cache_size; | |
82 } else if (stream_cache_size == 0) | |
83 gtkCacheOn = 0; | |
84 | |
85 if (autosync && (autosync != gtkAutoSync)) { | |
86 gtkAutoSyncOn = 1; | |
87 gtkAutoSync = autosync; | |
88 } | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27393
diff
changeset
|
89 |
27341
e7c989f7a7c9
Start unifying names of internal preprocessor directives.
diego
parents:
26458
diff
changeset
|
90 #ifdef CONFIG_ASS |
32984 | 91 gtkASS.enabled = ass_enabled; |
92 gtkASS.use_margins = ass_use_margins; | |
93 gtkASS.top_margin = ass_top_margin; | |
94 gtkASS.bottom_margin = ass_bottom_margin; | |
23077 | 95 #endif |
96 | |
32984 | 97 gtkInit(); |
98 | |
99 // initialize X | |
33463 | 100 wsXInit(mDisplay); |
32984 | 101 |
102 // load skin | |
103 | |
104 skinDirInHome = get_path("skins"); | |
105 skinMPlayerDir = MPLAYER_DATADIR "/skins"; | |
106 | |
33530 | 107 mp_dbg(MSGT_GPLAYER, MSGL_DBG2, "[interface] skin directory #1: %s\n", skinDirInHome); |
108 mp_dbg(MSGT_GPLAYER, MSGL_DBG2, "[interface] skin directory #2: %s\n", skinMPlayerDir); | |
32984 | 109 |
110 if (!skinName) | |
111 skinName = strdup("default"); | |
112 | |
113 i = skinRead(skinName); | |
114 | |
115 if (i == -1 && strcmp(skinName, "default") != 0) { | |
116 mp_msg(MSGT_GPLAYER, MSGL_WARN, MSGTR_SKIN_SKINCFG_SelectedSkinNotFound, skinName); | |
117 | |
118 skinName = strdup("default"); | |
119 i = skinRead(skinName); | |
120 } | |
121 | |
122 switch (i) { | |
123 case -1: | |
33024 | 124 gmp_msg(MSGT_GPLAYER, MSGL_FATAL, MSGTR_SKIN_SKINCFG_SkinNotFound, skinName); |
33768 | 125 mplayer(MPLAYER_EXIT_GUI, EXIT_ERROR, 0); |
23077 | 126 |
32984 | 127 case -2: |
33025 | 128 gmp_msg(MSGT_GPLAYER, MSGL_FATAL, MSGTR_SKIN_SKINCFG_SkinCfgError, skinName); |
33768 | 129 mplayer(MPLAYER_EXIT_GUI, EXIT_ERROR, 0); |
32984 | 130 } |
131 | |
132 // initialize windows | |
133 | |
33555 | 134 mainDrawBuffer = malloc(guiApp.main.Bitmap.ImageSize); |
32984 | 135 |
33555 | 136 if (!mainDrawBuffer) { |
33024 | 137 gmp_msg(MSGT_GPLAYER, MSGL_FATAL, MSGTR_NEMDB); |
33768 | 138 mplayer(MPLAYER_EXIT_GUI, EXIT_ERROR, 0); |
32984 | 139 } |
23077 | 140 |
32984 | 141 if (gui_save_pos) { |
33218
f0c2a62e3e89
Position windows initially at coordinates given in skin file.
ib
parents:
33053
diff
changeset
|
142 if (gui_main_pos_x != -3) |
33555 | 143 guiApp.main.x = gui_main_pos_x; |
33218
f0c2a62e3e89
Position windows initially at coordinates given in skin file.
ib
parents:
33053
diff
changeset
|
144 if (gui_main_pos_y != -3) |
33555 | 145 guiApp.main.y = gui_main_pos_y; |
33218
f0c2a62e3e89
Position windows initially at coordinates given in skin file.
ib
parents:
33053
diff
changeset
|
146 if (gui_sub_pos_x != -3) |
33555 | 147 guiApp.sub.x = gui_sub_pos_x; |
33218
f0c2a62e3e89
Position windows initially at coordinates given in skin file.
ib
parents:
33053
diff
changeset
|
148 if (gui_sub_pos_y != -3) |
33555 | 149 guiApp.sub.y = gui_sub_pos_y; |
32984 | 150 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27393
diff
changeset
|
151 |
32984 | 152 if (WinID > 0) { |
33555 | 153 guiApp.subWindow.Parent = WinID; |
154 guiApp.sub.x = 0; | |
155 guiApp.sub.y = 0; | |
32984 | 156 } |
23077 | 157 |
32984 | 158 if (guiWinID >= 0) |
33555 | 159 guiApp.mainWindow.Parent = guiWinID; |
23077 | 160 |
33555 | 161 wsCreateWindow(&guiApp.subWindow, guiApp.sub.x, guiApp.sub.y, guiApp.sub.width, guiApp.sub.height, wsNoBorder, wsShowMouseCursor | wsHandleMouseButton | wsHandleMouseMove, wsShowFrame | wsHideWindow, "MPlayer - Video"); |
162 wsDestroyImage(&guiApp.subWindow); | |
163 wsCreateImage(&guiApp.subWindow, guiApp.sub.Bitmap.Width, guiApp.sub.Bitmap.Height); | |
164 wsXDNDMakeAwareness(&guiApp.subWindow); | |
32984 | 165 |
33958 | 166 WinID = guiApp.subWindow.WindowID; |
167 | |
33555 | 168 uiMenuInit(); |
169 uiPlaybarInit(); | |
23077 | 170 |
171 // i=wsHideFrame|wsMaxSize|wsHideWindow; | |
33555 | 172 // if ( guiApp.mainDecoration ) i=wsShowFrame|wsMaxSize|wsHideWindow; |
32984 | 173 i = wsShowFrame | wsMaxSize | wsHideWindow; |
33555 | 174 wsCreateWindow(&guiApp.mainWindow, guiApp.main.x, guiApp.main.y, guiApp.main.width, guiApp.main.height, wsNoBorder, wsShowMouseCursor | wsHandleMouseButton | wsHandleMouseMove, i, "MPlayer"); |
175 wsSetShape(&guiApp.mainWindow, guiApp.main.Mask.Image); | |
176 wsXDNDMakeAwareness(&guiApp.mainWindow); | |
23077 | 177 |
33530 | 178 mp_dbg(MSGT_GPLAYER, MSGL_DBG2, "[interface] screen depth: %d\n", wsDepthOnScreen); |
33555 | 179 mp_dbg(MSGT_GPLAYER, MSGL_DBG2, "[interface] mainWindow ID: 0x%x\n", (int)guiApp.mainWindow.WindowID); |
180 mp_dbg(MSGT_GPLAYER, MSGL_DBG2, "[interface] subWindow ID: 0x%x\n", (int)guiApp.subWindow.WindowID); | |
23077 | 181 |
33555 | 182 guiApp.mainWindow.ReDraw = (void *)uiMainDraw; |
183 guiApp.mainWindow.MouseHandler = uiMainMouseHandle; | |
184 guiApp.mainWindow.KeyHandler = uiMainKeyHandle; | |
185 guiApp.mainWindow.DandDHandler = uiDandDHandler; | |
32984 | 186 |
33555 | 187 guiApp.subWindow.ReDraw = (void *)uiSubDraw; |
188 guiApp.subWindow.MouseHandler = uiSubMouseHandle; | |
189 guiApp.subWindow.KeyHandler = uiMainKeyHandle; | |
190 guiApp.subWindow.DandDHandler = uiDandDHandler; | |
23077 | 191 |
33555 | 192 wsSetBackgroundRGB(&guiApp.subWindow, guiApp.sub.R, guiApp.sub.G, guiApp.sub.B); |
193 wsClearWindow(guiApp.subWindow); | |
23077 | 194 |
33555 | 195 if (guiApp.sub.Bitmap.Image) |
196 wsConvert(&guiApp.subWindow, guiApp.sub.Bitmap.Image); | |
32984 | 197 |
33555 | 198 btnModify(evSetVolume, guiInfo.Volume); |
199 btnModify(evSetBalance, guiInfo.Balance); | |
200 btnModify(evSetMoviePosition, guiInfo.Position); | |
23077 | 201 |
33555 | 202 wsSetIcon(wsDisplay, guiApp.mainWindow.WindowID, &guiIcon); |
203 wsSetIcon(wsDisplay, guiApp.subWindow.WindowID, &guiIcon); | |
32984 | 204 |
33555 | 205 if (!guiApp.mainDecoration) |
206 wsWindowDecoration(&guiApp.mainWindow, 0); | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27393
diff
changeset
|
207 |
33555 | 208 wsVisibleWindow(&guiApp.mainWindow, wsShowWindow); |
23077 | 209 |
32984 | 210 if (gtkShowVideoWindow) { |
33555 | 211 wsVisibleWindow(&guiApp.subWindow, wsShowWindow); |
33960 | 212 |
32984 | 213 { |
214 XEvent xev; | |
215 | |
216 do | |
217 XNextEvent(wsDisplay, &xev); | |
33555 | 218 while (xev.type != MapNotify || xev.xmap.event != guiApp.subWindow.WindowID); |
32984 | 219 |
33555 | 220 guiApp.subWindow.Mapped = wsMapped; |
33960 | 221 guiInfo.VideoWindow = True; |
32984 | 222 } |
23077 | 223 |
33960 | 224 if (gtkLoadFullscreen) |
33555 | 225 uiFullScreen(); |
33960 | 226 } else |
227 wsSetBackgroundRGB(&guiApp.subWindow, 0, 0, 0); | |
32984 | 228 |
33960 | 229 if (gtkLoadFullscreen) |
230 btnModify(evFullScreen, btnPressed); | |
32984 | 231 |
33615
1f9a31d4f114
Replace all playback integer constants by their symbolic constants.
ib
parents:
33614
diff
changeset
|
232 guiInfo.Playing = GUI_STOP; |
33609 | 233 |
33555 | 234 uiSubRender = 1; |
32984 | 235 |
236 if (plCurrent && !filename) | |
33555 | 237 uiSetFileName(plCurrent->path, plCurrent->name, STREAMTYPE_FILE); |
32984 | 238 |
239 if (subdata) | |
33897 | 240 setdup(&guiInfo.SubtitleFilename, subdata->filename); |
32984 | 241 |
33763 | 242 mplayerLoadFont(); |
33265 | 243 |
244 initialized = 1; | |
23077 | 245 } |
246 | |
32984 | 247 void guiDone(void) |
23077 | 248 { |
33307 | 249 if (initialized) { |
33555 | 250 uiMainRender = 0; |
32984 | 251 |
33308 | 252 if (gui_save_pos) { |
33555 | 253 gui_main_pos_x = guiApp.mainWindow.X; |
254 gui_main_pos_y = guiApp.mainWindow.Y; | |
33942
afede91f9d5f
Don't use current x and y position of video window for saving.
ib
parents:
33903
diff
changeset
|
255 gui_sub_pos_x = guiApp.sub.x; |
afede91f9d5f
Don't use current x and y position of video window for saving.
ib
parents:
33903
diff
changeset
|
256 gui_sub_pos_y = guiApp.sub.y; |
33308 | 257 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27393
diff
changeset
|
258 |
27341
e7c989f7a7c9
Start unifying names of internal preprocessor directives.
diego
parents:
26458
diff
changeset
|
259 #ifdef CONFIG_ASS |
33308 | 260 ass_enabled = gtkASS.enabled; |
261 ass_use_margins = gtkASS.use_margins; | |
262 ass_top_margin = gtkASS.top_margin; | |
263 ass_bottom_margin = gtkASS.bottom_margin; | |
23077 | 264 #endif |
265 | |
33308 | 266 cfg_write(); |
267 wsXDone(); | |
33307 | 268 } |
33263 | 269 |
33307 | 270 appFreeStruct(); |
33542 | 271 free(guiIcon.collection); |
33307 | 272 |
273 if (gui_conf) { | |
274 m_config_free(gui_conf); | |
275 gui_conf = NULL; | |
276 } | |
33530 | 277 |
278 mp_msg(MSGT_GPLAYER, MSGL_V, "GUI done.\n"); | |
33263 | 279 } |
280 | |
32984 | 281 static void add_vf(char *str) |
23077 | 282 { |
32984 | 283 void *p; |
284 | |
285 if (vf_settings) { | |
286 int i = 0; | |
287 | |
288 while (vf_settings[i].name) { | |
289 if (!gstrcmp(vf_settings[i++].name, str)) { | |
290 i = -1; | |
291 break; | |
292 } | |
293 } | |
294 | |
295 if (i != -1) { | |
296 p = realloc(vf_settings, (i + 2) * sizeof(m_obj_settings_t)); | |
32712 | 297 |
32984 | 298 if (!p) |
299 return; | |
300 | |
301 vf_settings = p; | |
302 vf_settings[i].name = strdup(str); | |
303 vf_settings[i].attribs = NULL; | |
304 vf_settings[i + 1].name = NULL; | |
305 } | |
306 } else { | |
307 vf_settings = malloc(2 * sizeof(m_obj_settings_t)); | |
308 vf_settings[0].name = strdup(str); | |
309 vf_settings[0].attribs = NULL; | |
310 vf_settings[1].name = NULL; | |
32712 | 311 } |
312 | |
33530 | 313 mp_msg(MSGT_GPLAYER, MSGL_INFO, MSGTR_AddingVideoFilter, str); |
23077 | 314 } |
315 | |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
316 int gui(int what, void *data) |
23077 | 317 { |
32984 | 318 mixer_t *mixer = NULL; |
33685
ca6c9a80a062
Make assignments to variables in guiGetEvent() only if needed.
ib
parents:
33683
diff
changeset
|
319 stream_t *stream; |
27341
e7c989f7a7c9
Start unifying names of internal preprocessor directives.
diego
parents:
26458
diff
changeset
|
320 #ifdef CONFIG_DVDREAD |
33687 | 321 dvd_priv_t *dvd; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27393
diff
changeset
|
322 #endif |
33694
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
323 plItem *next; |
23077 | 324 |
33555 | 325 if (guiInfo.mpcontext) |
326 mixer = mpctx_get_mixer(guiInfo.mpcontext); | |
23077 | 327 |
33726 | 328 switch (what) { |
33731
81f71d910333
Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents:
33730
diff
changeset
|
329 case GUI_SET_CONTEXT: |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
330 guiInfo.mpcontext = data; |
23077 | 331 break; |
32984 | 332 |
33731
81f71d910333
Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents:
33730
diff
changeset
|
333 case GUI_SET_STATE: |
32984 | 334 |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
335 switch ((int)data) { |
33631 | 336 case GUI_STOP: |
33614 | 337 case GUI_PLAY: |
33555 | 338 // if ( !gtkShowVideoWindow ) wsVisibleWindow( &guiApp.subWindow,wsHideWindow ); |
33614 | 339 case GUI_PAUSE: |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
340 guiInfo.Playing = (int)data; |
32984 | 341 break; |
342 } | |
343 | |
33555 | 344 uiState(); |
23077 | 345 break; |
32984 | 346 |
33731
81f71d910333
Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents:
33730
diff
changeset
|
347 case GUI_SET_FILE: |
32984 | 348 |
33894 | 349 // if ( guiInfo.Playing == 1 && guiInfo.NewPlay == GUI_FILE_NEW ) |
350 if (guiInfo.NewPlay == GUI_FILE_NEW) { | |
33899 | 351 dvd_title = 0; |
32984 | 352 audio_id = -1; |
353 video_id = -1; | |
354 dvdsub_id = -1; | |
355 vobsub_id = -1; | |
33899 | 356 |
32984 | 357 stream_cache_size = -1; |
358 autosync = 0; | |
359 force_fps = 0; | |
360 } | |
361 | |
33555 | 362 guiInfo.sh_video = NULL; |
363 wsPostRedisplay(&guiApp.subWindow); | |
32984 | 364 |
365 break; | |
366 | |
33732 | 367 case GUI_HANDLE_EVENTS: |
33901 | 368 if (!guiInfo.Playing || !guiInfo.VideoWindow) |
33732 | 369 wsHandleEvents(); |
370 gtkEventHandling(); | |
371 break; | |
372 | |
33731
81f71d910333
Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents:
33730
diff
changeset
|
373 case GUI_RUN_COMMAND: |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
374 |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
375 mp_dbg(MSGT_GPLAYER, MSGL_DBG2, "[interface] GUI_RUN_COMMAND: %d\n", (int)data); |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
376 |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
377 switch ((int)data) { |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
378 case MP_CMD_VO_FULLSCREEN: |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
379 uiEventHandling(evFullScreen, 0); |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
380 break; |
33696
24d919fb6778
Don't let MPlayer directly call user interface functions.
ib
parents:
33695
diff
changeset
|
381 |
24d919fb6778
Don't let MPlayer directly call user interface functions.
ib
parents:
33695
diff
changeset
|
382 case MP_CMD_PLAY_TREE_STEP: |
24d919fb6778
Don't let MPlayer directly call user interface functions.
ib
parents:
33695
diff
changeset
|
383 uiEventHandling(evNext, 0); |
24d919fb6778
Don't let MPlayer directly call user interface functions.
ib
parents:
33695
diff
changeset
|
384 break; |
24d919fb6778
Don't let MPlayer directly call user interface functions.
ib
parents:
33695
diff
changeset
|
385 |
24d919fb6778
Don't let MPlayer directly call user interface functions.
ib
parents:
33695
diff
changeset
|
386 case -MP_CMD_PLAY_TREE_STEP: |
24d919fb6778
Don't let MPlayer directly call user interface functions.
ib
parents:
33695
diff
changeset
|
387 uiEventHandling(evPrev, 0); |
24d919fb6778
Don't let MPlayer directly call user interface functions.
ib
parents:
33695
diff
changeset
|
388 break; |
24d919fb6778
Don't let MPlayer directly call user interface functions.
ib
parents:
33695
diff
changeset
|
389 |
24d919fb6778
Don't let MPlayer directly call user interface functions.
ib
parents:
33695
diff
changeset
|
390 case MP_CMD_STOP: |
24d919fb6778
Don't let MPlayer directly call user interface functions.
ib
parents:
33695
diff
changeset
|
391 uiEventHandling(evStop, 0); |
24d919fb6778
Don't let MPlayer directly call user interface functions.
ib
parents:
33695
diff
changeset
|
392 break; |
33697 | 393 |
394 case MP_CMD_QUIT: | |
395 uiEventHandling(evExit, 0); | |
396 break; | |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
397 } |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
398 |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
399 break; |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
400 |
33731
81f71d910333
Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents:
33730
diff
changeset
|
401 case GUI_PREPARE: |
32984 | 402 |
33731
81f71d910333
Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents:
33730
diff
changeset
|
403 gui(GUI_SET_FILE, 0); |
32984 | 404 |
33555 | 405 switch (guiInfo.StreamType) { |
32984 | 406 case STREAMTYPE_PLAYLIST: |
407 break; | |
408 | |
409 #ifdef CONFIG_VCD | |
410 case STREAMTYPE_VCD: | |
411 { | |
412 char tmp[512]; | |
413 | |
33874 | 414 sprintf(tmp, "vcd://%d", guiInfo.Track); |
33740
2c02269701bd
Remove macros guiSetFilename() and guiSetDF() from interface.h.
ib
parents:
33739
diff
changeset
|
415 setdup(&guiInfo.Filename, tmp); |
32984 | 416 } |
417 break; | |
418 #endif | |
419 | |
420 #ifdef CONFIG_DVDREAD | |
421 case STREAMTYPE_DVD: | |
422 { | |
423 char tmp[512]; | |
424 | |
33876
4789b8eed97e
Get rid of a bunch of needless or redundant guiInfo members.
ib
parents:
33874
diff
changeset
|
425 sprintf(tmp, "dvd://%d", guiInfo.Track); |
33740
2c02269701bd
Remove macros guiSetFilename() and guiSetDF() from interface.h.
ib
parents:
33739
diff
changeset
|
426 setdup(&guiInfo.Filename, tmp); |
32984 | 427 } |
428 | |
33555 | 429 dvd_chapter = guiInfo.Chapter; |
430 dvd_angle = guiInfo.Angle; | |
32984 | 431 |
432 break; | |
433 #endif | |
434 } | |
435 | |
33555 | 436 // if ( guiInfo.StreamType != STREAMTYPE_PLAYLIST ) // Does not make problems anymore! |
32984 | 437 { |
33555 | 438 if (guiInfo.Filename) |
439 filename = gstrdup(guiInfo.Filename); | |
32984 | 440 else if (filename) |
33740
2c02269701bd
Remove macros guiSetFilename() and guiSetDF() from interface.h.
ib
parents:
33739
diff
changeset
|
441 setdup(&guiInfo.Filename, filename); |
32984 | 442 } |
443 | |
444 // video opts | |
445 | |
446 if (!video_driver_list) { | |
447 int i = 0; | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27393
diff
changeset
|
448 |
32984 | 449 while (video_out_drivers[i++]) { |
450 if (video_out_drivers[i - 1]->control(VOCTRL_GUISUPPORT, NULL) == VO_TRUE) { | |
451 gaddlist(&video_driver_list, (char *)video_out_drivers[i - 1]->info->short_name); | |
452 break; | |
453 } | |
454 } | |
455 } | |
456 | |
457 if (!video_driver_list && !video_driver_list[0]) { | |
33024 | 458 gmp_msg(MSGT_GPLAYER, MSGL_FATAL, MSGTR_IDFGCVD); |
33768 | 459 mplayer(MPLAYER_EXIT_GUI, EXIT_ERROR, 0); |
32984 | 460 } |
461 | |
462 { | |
463 int i = 0; | |
464 | |
33901 | 465 guiInfo.VideoWindow = True; |
32984 | 466 |
467 while (video_out_drivers[i++]) { | |
468 if (video_out_drivers[i - 1]->control(VOCTRL_GUISUPPORT, NULL) == VO_TRUE) { | |
469 if ((video_driver_list && !gstrcmp(video_driver_list[0], (char *)video_out_drivers[i - 1]->info->short_name)) && (video_out_drivers[i - 1]->control(VOCTRL_GUI_NOWINDOW, NULL) == VO_TRUE)) { | |
33901 | 470 guiInfo.VideoWindow = False; |
32984 | 471 break; |
472 } | |
473 } | |
474 } | |
475 } | |
476 | |
477 #ifdef CONFIG_DXR3 | |
478 if (video_driver_list && !gstrcmp(video_driver_list[0], "dxr3")) | |
33555 | 479 if (guiInfo.StreamType != STREAMTYPE_DVD && guiInfo.StreamType != STREAMTYPE_VCD) |
32984 | 480 if (gtkVfLAVC) |
481 add_vf("lavc"); | |
482 #endif | |
483 | |
484 if (gtkVfPP) | |
485 add_vf("pp"); | |
486 | |
487 // audio opts | |
488 | |
489 // if ( ao_plugin_cfg.plugin_list ) { free( ao_plugin_cfg.plugin_list ); ao_plugin_cfg.plugin_list=NULL; } | |
490 if (gtkAONorm) | |
491 greplace(&af_cfg.list, "volnorm", "volnorm"); | |
492 | |
493 if (gtkEnableAudioEqualizer) | |
494 greplace(&af_cfg.list, "equalizer", "equalizer"); | |
495 | |
496 if (gtkAOExtraStereo) { | |
497 char *name; | |
498 | |
499 name = malloc(12 + 20 + 1); | |
500 snprintf(name, 12 + 20, "extrastereo=%f", gtkAOExtraStereoMul); | |
501 name[12 + 20] = 0; | |
502 greplace(&af_cfg.list, "extrastereo", name); | |
503 free(name); | |
504 } | |
505 | |
27341
e7c989f7a7c9
Start unifying names of internal preprocessor directives.
diego
parents:
26458
diff
changeset
|
506 #ifdef CONFIG_OSS_AUDIO |
32984 | 507 if (audio_driver_list && !gstrncmp(audio_driver_list[0], "oss", 3)) { |
508 char *tmp; | |
509 | |
510 mixer_device = gtkAOOSSMixer; | |
511 mixer_channel = gtkAOOSSMixerChannel; | |
512 | |
513 if (gtkAOOSSDevice) { | |
514 tmp = calloc(1, strlen(gtkAOOSSDevice) + 7); | |
515 sprintf(tmp, "oss:%s", gtkAOOSSDevice); | |
516 } else | |
517 tmp = strdup("oss"); | |
518 | |
519 gaddlist(&audio_driver_list, tmp); | |
520 free(tmp); | |
521 } | |
23077 | 522 #endif |
32984 | 523 |
27390
9d95dc936e66
Introduce CONFIG_ALSA preprocessor directive for ALSA 0.9 and 1.x.
diego
parents:
27387
diff
changeset
|
524 #ifdef CONFIG_ALSA |
32984 | 525 if (audio_driver_list && !gstrncmp(audio_driver_list[0], "alsa", 4)) { |
526 char *tmp; | |
527 | |
528 mixer_device = gtkAOALSAMixer; | |
529 mixer_channel = gtkAOALSAMixerChannel; | |
530 | |
531 if (gtkAOALSADevice) { | |
532 tmp = calloc(1, strlen(gtkAOALSADevice) + 14); | |
533 sprintf(tmp, "alsa:device=%s", gtkAOALSADevice); | |
534 } else | |
535 tmp = strdup("alsa"); | |
536 | |
537 gaddlist(&audio_driver_list, tmp); | |
538 free(tmp); | |
539 } | |
23077 | 540 #endif |
32984 | 541 |
27370
14c5017f40d2
Change a bunch of video/audio-output-specific preprocessor directives from
diego
parents:
27359
diff
changeset
|
542 #ifdef CONFIG_SDL |
32984 | 543 if (audio_driver_list && !gstrncmp(audio_driver_list[0], "sdl", 3)) { |
544 char *tmp; | |
545 | |
546 if (gtkAOSDLDriver) { | |
547 tmp = calloc(1, strlen(gtkAOSDLDriver) + 10); | |
548 sprintf(tmp, "sdl:%s", gtkAOSDLDriver); | |
549 } else | |
550 tmp = strdup("sdl"); | |
551 | |
552 gaddlist(&audio_driver_list, tmp); | |
553 free(tmp); | |
554 } | |
23077 | 555 #endif |
32984 | 556 |
27341
e7c989f7a7c9
Start unifying names of internal preprocessor directives.
diego
parents:
26458
diff
changeset
|
557 #ifdef CONFIG_ESD |
32984 | 558 if (audio_driver_list && !gstrncmp(audio_driver_list[0], "esd", 3)) { |
559 char *tmp; | |
560 | |
561 if (gtkAOESDDevice) { | |
562 tmp = calloc(1, strlen(gtkAOESDDevice) + 10); | |
563 sprintf(tmp, "esd:%s", gtkAOESDDevice); | |
564 } else | |
565 tmp = strdup("esd"); | |
566 | |
567 gaddlist(&audio_driver_list, tmp); | |
568 free(tmp); | |
569 } | |
23077 | 570 #endif |
32984 | 571 |
572 // subtitle | |
573 | |
33897 | 574 // subdata->filename=gstrdup( guiInfo.SubtitleFilename ); |
32984 | 575 stream_dump_type = 0; |
576 | |
577 if (gtkSubDumpMPSub) | |
578 stream_dump_type = 4; | |
579 | |
580 if (gtkSubDumpSrt) | |
581 stream_dump_type = 6; | |
582 | |
583 gtkSubDumpMPSub = gtkSubDumpSrt = 0; | |
33763 | 584 mplayerLoadFont(); |
23077 | 585 |
32984 | 586 // misc |
587 | |
588 if (gtkCacheOn) | |
589 stream_cache_size = gtkCacheSize; | |
590 | |
591 if (gtkAutoSyncOn) | |
592 autosync = gtkAutoSync; | |
23077 | 593 |
33897 | 594 if (guiInfo.AudioFilename) |
595 audio_stream = gstrdup(guiInfo.AudioFilename); | |
33894 | 596 else if (guiInfo.NewPlay == GUI_FILE_NEW) |
33739 | 597 nfree(audio_stream); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27393
diff
changeset
|
598 |
32984 | 599 // audio_stream = NULL; |
600 | |
33555 | 601 guiInfo.NewPlay = 0; |
23077 | 602 |
27341
e7c989f7a7c9
Start unifying names of internal preprocessor directives.
diego
parents:
26458
diff
changeset
|
603 #ifdef CONFIG_ASS |
32984 | 604 ass_enabled = gtkASS.enabled; |
605 ass_use_margins = gtkASS.use_margins; | |
606 ass_top_margin = gtkASS.top_margin; | |
23077 | 607 ass_bottom_margin = gtkASS.bottom_margin; |
608 #endif | |
609 | |
32984 | 610 break; |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
611 |
33731
81f71d910333
Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents:
33730
diff
changeset
|
612 case GUI_SET_STREAM: |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
613 |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
614 stream = data; |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
615 guiInfo.StreamType = stream->type; |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
616 |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
617 switch (guiInfo.StreamType) { |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
618 #ifdef CONFIG_DVDREAD |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
619 case STREAMTYPE_DVD: |
33730 | 620 dvd = stream->priv; |
33903 | 621 guiInfo.Tracks = dvd->vmg_file->tt_srpt->nr_of_srpts; |
622 guiInfo.Chapters = dvd->vmg_file->tt_srpt->title[dvd_title].nr_of_ptts; | |
623 guiInfo.Angles = dvd->vmg_file->tt_srpt->title[dvd_title].nr_of_angles; | |
33902 | 624 guiInfo.AudioStreams = dvd->nr_of_channels; |
625 memcpy(guiInfo.AudioStream, dvd->audio_streams, sizeof(dvd->audio_streams)); | |
626 guiInfo.Subtitles = dvd->nr_of_subtitles; | |
627 memcpy(guiInfo.Subtitle, dvd->subtitles, sizeof(dvd->subtitles)); | |
33876
4789b8eed97e
Get rid of a bunch of needless or redundant guiInfo members.
ib
parents:
33874
diff
changeset
|
628 guiInfo.Track = dvd_title + 1; |
4789b8eed97e
Get rid of a bunch of needless or redundant guiInfo members.
ib
parents:
33874
diff
changeset
|
629 guiInfo.Chapter = dvd_chapter + 1; |
4789b8eed97e
Get rid of a bunch of needless or redundant guiInfo members.
ib
parents:
33874
diff
changeset
|
630 guiInfo.Angle = dvd_angle + 1; |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
631 break; |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
632 #endif |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
633 |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
634 #ifdef CONFIG_VCD |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
635 case STREAMTYPE_VCD: |
33876
4789b8eed97e
Get rid of a bunch of needless or redundant guiInfo members.
ib
parents:
33874
diff
changeset
|
636 guiInfo.Tracks = 0; |
4789b8eed97e
Get rid of a bunch of needless or redundant guiInfo members.
ib
parents:
33874
diff
changeset
|
637 stream_control(stream, STREAM_CTRL_GET_NUM_CHAPTERS, &guiInfo.Tracks); |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
638 break; |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
639 #endif |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
640 |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
641 default: |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
642 break; |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
643 } |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
644 |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
645 break; |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
646 |
33731
81f71d910333
Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents:
33730
diff
changeset
|
647 case GUI_SET_AFILTER: |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
648 guiInfo.afilter = data; |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
649 break; |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
650 |
33731
81f71d910333
Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents:
33730
diff
changeset
|
651 case GUI_SET_VIDEO: |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
652 |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
653 // video |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
654 |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
655 guiInfo.sh_video = data; |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
656 |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
657 if (guiInfo.StreamType == STREAMTYPE_STREAM) |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
658 btnSet(evSetMoviePosition, btnDisabled); |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
659 else |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
660 btnSet(evSetMoviePosition, btnReleased); |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
661 |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
662 #ifdef CONFIG_DXR3 |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
663 if (video_driver_list && !gstrcmp(video_driver_list[0], "dxr3") && (((demuxer_t *)mpctx_get_demuxer(guiInfo.mpcontext))->file_format != DEMUXER_TYPE_MPEG_PS) && !gtkVfLAVC) { |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
664 gtkMessageBox(GTK_MB_FATAL, MSGTR_NEEDLAVC); |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
665 return False; |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
666 } |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
667 #endif |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
668 |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
669 break; |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
670 |
33731
81f71d910333
Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents:
33730
diff
changeset
|
671 case GUI_SET_AUDIO: |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
672 |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
673 guiInfo.AudioChannels = data ? ((sh_audio_t *)data)->channels : 0; |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
674 |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
675 if (data && !guiInfo.sh_video) |
33901 | 676 guiInfo.VideoWindow = False; |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
677 |
33731
81f71d910333
Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents:
33730
diff
changeset
|
678 gui(GUI_SET_MIXER, 0); |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
679 |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
680 if (gtkEnableAudioEqualizer) { |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
681 equalizer_t eq; |
33693
006a2db8bd55
Use unsigned index variable for comparison with array size.
ib
parents:
33692
diff
changeset
|
682 unsigned int i, j; |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
683 |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
684 for (i = 0; i < FF_ARRAY_ELEMS(gtkEquChannels); i++) { |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
685 for (j = 0; j < FF_ARRAY_ELEMS(*gtkEquChannels); j++) { |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
686 eq.channel = i; |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
687 eq.band = j; |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
688 eq.gain = gtkEquChannels[i][j]; |
33766 | 689 mplayer(MPLAYER_SET_EQUALIZER, 0, &eq); |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
690 } |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
691 } |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
692 } |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
693 |
33960 | 694 // These must be done here (in the last call from MPlayer before |
695 // playback starts) and not in GUI_SETUP_VIDEO_WINDOW, because... | |
696 | |
697 // ...without video there will be no call to GUI_SETUP_VIDEO_WINDOW | |
698 if (!guiInfo.VideoWindow) { | |
699 wsVisibleWindow(&guiApp.subWindow, wsHideWindow); | |
700 btnModify(evFullScreen, gtkLoadFullscreen ? btnPressed : btnReleased); | |
701 } | |
702 | |
703 // ...option variable fullscreen determines whether MPlayer will handle | |
704 // the window given by WinID as fullscreen window (and will do aspect | |
705 // scaling then) or not - quite rubbish | |
706 fullscreen = gtkLoadFullscreen; | |
707 | |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
708 break; |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
709 |
33731
81f71d910333
Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents:
33730
diff
changeset
|
710 case GUI_SET_MIXER: |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
711 if (mixer) { |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
712 float l, r; |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
713 static float last_balance = -1; |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
714 |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
715 mixer_getvolume(mixer, &l, &r); |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
716 |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
717 guiInfo.Volume = FFMAX(l, r); |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
718 btnModify(evSetVolume, guiInfo.Volume); |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
719 |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
720 if (guiInfo.Balance != last_balance) { |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
721 if (guiInfo.Volume) |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
722 guiInfo.Balance = ((r - l) / guiInfo.Volume + 1.0) * 50.0; |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
723 else |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
724 guiInfo.Balance = 50.0f; |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
725 |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
726 last_balance = guiInfo.Balance; |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
727 btnModify(evSetBalance, guiInfo.Balance); |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
728 } |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
729 } |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
730 break; |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
731 |
33731
81f71d910333
Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents:
33730
diff
changeset
|
732 case GUI_REDRAW: |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
733 uiEventHandling(evRedraw, 0); |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
734 break; |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
735 |
33731
81f71d910333
Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents:
33730
diff
changeset
|
736 case GUI_SETUP_VIDEO_WINDOW: |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
737 |
33901 | 738 guiInfo.VideoWidth = vo_dwidth; |
739 guiInfo.VideoHeight = vo_dheight; | |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
740 |
33960 | 741 if (!guiApp.subWindow.isFullScreen || !guiApp.subWindow.Mapped) { |
742 if (!guiApp.subWindow.isFullScreen) | |
743 wsResizeWindow(&guiApp.subWindow, guiInfo.VideoWidth, guiInfo.VideoHeight); | |
744 | |
745 wsMoveWindow(&guiApp.subWindow, True, guiApp.sub.x, guiApp.sub.y); | |
746 | |
747 if (!guiApp.subWindow.Mapped) | |
748 wsVisibleWindow(&guiApp.subWindow, wsShowWindow); | |
749 } | |
750 | |
751 if (gtkLoadFullscreen ^ guiApp.subWindow.isFullScreen) | |
752 uiEventHandling(evFullScreen, 0); | |
753 | |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
754 if (guiWinID >= 0) |
33960 | 755 wsMoveWindow(&guiApp.mainWindow, False, 0, guiInfo.VideoHeight); |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
756 |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
757 break; |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
758 |
33733 | 759 case GUI_HANDLE_X_EVENT: |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
760 wsEvents(wsDisplay, data); |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
761 gtkEventHandling(); |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
762 break; |
33694
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
763 |
33731
81f71d910333
Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents:
33730
diff
changeset
|
764 case GUI_END_FILE: |
33694
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
765 |
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
766 if (!uiGotoTheNext && guiInfo.Playing) { |
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
767 uiGotoTheNext = 1; |
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
768 break; |
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
769 } |
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
770 |
33742
e1539e14d60f
Move purely list related parts of gtkSet() from interface.c to list.c.
ib
parents:
33741
diff
changeset
|
771 if (guiInfo.Playing && (next = listSet(gtkGetNextPlItem, NULL)) && (plLastPlayed != next)) { |
33694
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
772 plLastPlayed = next; |
33740
2c02269701bd
Remove macros guiSetFilename() and guiSetDF() from interface.h.
ib
parents:
33739
diff
changeset
|
773 setddup(&guiInfo.Filename, next->path, next->name); |
33895 | 774 guiInfo.StreamType = STREAMTYPE_FILE; |
775 guiInfo.NewPlay = GUI_FILE_NEW; | |
33897 | 776 nfree(guiInfo.AudioFilename); |
777 nfree(guiInfo.SubtitleFilename); | |
33898 | 778 guiInfo.Track++; |
33694
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
779 } else { |
33894 | 780 if (guiInfo.NewPlay == GUI_FILE_NEW) |
33694
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
781 break; |
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
782 |
33897 | 783 guiInfo.ElapsedTime = 0; |
33694
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
784 guiInfo.Position = 0; |
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
785 guiInfo.AudioChannels = 0; |
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
786 |
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
787 #ifdef CONFIG_DVDREAD |
33876
4789b8eed97e
Get rid of a bunch of needless or redundant guiInfo members.
ib
parents:
33874
diff
changeset
|
788 guiInfo.Track = 1; |
4789b8eed97e
Get rid of a bunch of needless or redundant guiInfo members.
ib
parents:
33874
diff
changeset
|
789 guiInfo.Chapter = 1; |
4789b8eed97e
Get rid of a bunch of needless or redundant guiInfo members.
ib
parents:
33874
diff
changeset
|
790 guiInfo.Angle = 1; |
33694
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
791 #endif |
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
792 |
33960 | 793 if (gtkShowVideoWindow) { |
794 guiInfo.VideoWindow = True; | |
795 guiInfo.VideoWidth = guiApp.sub.width; | |
796 guiInfo.VideoHeight = guiApp.sub.height; | |
797 | |
798 if (!guiApp.subWindow.isFullScreen) { | |
799 wsResizeWindow(&guiApp.subWindow, guiInfo.VideoWidth, guiInfo.VideoHeight); | |
800 wsMoveWindow(&guiApp.subWindow, True, guiApp.sub.x, guiApp.sub.y); | |
801 } | |
802 | |
803 if (!guiApp.subWindow.Mapped) | |
804 wsVisibleWindow(&guiApp.subWindow, wsShowWindow); | |
805 | |
806 if (gtkLoadFullscreen ^ guiApp.subWindow.isFullScreen) | |
807 uiEventHandling(evFullScreen, 0); | |
808 } else { | |
33694
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
809 wsVisibleWindow(&guiApp.subWindow, wsHideWindow); |
33960 | 810 guiInfo.VideoWindow = False; |
811 btnModify(evFullScreen, gtkLoadFullscreen ? btnPressed : btnReleased); | |
812 } | |
33694
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
813 |
33731
81f71d910333
Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents:
33730
diff
changeset
|
814 gui(GUI_SET_STATE, (void *)GUI_STOP); |
33959 | 815 |
816 wsHandleEvents(); | |
33694
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
817 uiSubRender = 1; |
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
818 wsSetBackgroundRGB(&guiApp.subWindow, guiApp.sub.R, guiApp.sub.G, guiApp.sub.B); |
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
819 wsClearWindow(guiApp.subWindow); |
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
820 wsPostRedisplay(&guiApp.subWindow); |
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
821 } |
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
822 |
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
823 break; |
32984 | 824 } |
825 | |
33666
0f592e8530f1
Change return code of guiGetEvent() to indicate success.
ib
parents:
33664
diff
changeset
|
826 return True; |
23077 | 827 } |
828 | |
33746 | 829 // This function adds/inserts one file into the gui playlist. |
830 static int import_file_into_gui(char *temp, int insert) | |
831 { | |
832 char *filename, *pathname; | |
833 plItem *item; | |
834 | |
835 filename = strdup(mp_basename(temp)); | |
836 pathname = strdup(temp); | |
837 | |
838 if (strlen(pathname) - strlen(filename) > 0) | |
839 pathname[strlen(pathname) - strlen(filename) - 1] = 0; // we have some path, so remove / at end | |
840 else | |
841 pathname[strlen(pathname) - strlen(filename)] = 0; | |
842 | |
843 mp_dbg(MSGT_GPLAYER, MSGL_DBG2, "[interface] playtree, add: %s/%s\n", pathname, filename); | |
844 | |
845 item = calloc(1, sizeof(plItem)); | |
846 | |
847 if (!item) | |
848 return 0; | |
849 | |
850 item->name = filename; | |
851 item->path = pathname; | |
852 | |
853 if (insert) | |
854 listSet(gtkInsertPlItem, item); // inserts the item after current, and makes current=item | |
855 else | |
856 listSet(gtkAddPlItem, item); | |
857 | |
858 return 1; | |
859 } | |
860 | |
861 // This function imports the initial playtree (based on cmd-line files) | |
862 // into the gui playlist by either: | |
863 // - overwriting gui pl (enqueue=0) | |
864 // - appending it to gui pl (enqueue=1) | |
33752 | 865 int guiPlaylistInitialize(play_tree_t *my_playtree, m_config_t *config, int enqueue) |
33746 | 866 { |
867 play_tree_iter_t *my_pt_iter = NULL; | |
868 int result = 0; | |
869 | |
870 if (!enqueue) | |
871 listSet(gtkDelPl, NULL); // delete playlist before "appending" | |
872 | |
873 if ((my_pt_iter = pt_iter_create(&my_playtree, config))) { | |
874 while ((filename = pt_iter_get_next_file(my_pt_iter)) != NULL) | |
875 // add it to end of list | |
876 if (import_file_into_gui(filename, 0)) | |
877 result = 1; | |
878 } | |
879 | |
880 uiCurr(); // update filename | |
881 uiGotoTheNext = 1; | |
882 | |
883 if (!enqueue) | |
884 filename = guiInfo.Filename; // Backward compatibility; if file is specified on commandline, | |
885 // gmplayer does directly start in Play-Mode. | |
886 else | |
887 filename = NULL; | |
888 | |
889 return result; | |
890 } | |
891 | |
892 // This function imports and inserts an playtree, that is created "on the fly", | |
893 // for example by parsing some MOV-Reference-File; or by loading an playlist | |
894 // with "File Open". | |
895 // The file which contained the playlist is thereby replaced with it's contents. | |
33752 | 896 int guiPlaylistAdd(play_tree_t *my_playtree, m_config_t *config) |
33746 | 897 { |
898 play_tree_iter_t *my_pt_iter = NULL; | |
899 int result = 0; | |
900 plItem *save; | |
901 | |
902 save = (plItem *)listSet(gtkGetCurrPlItem, NULL); // save current item | |
903 | |
904 if ((my_pt_iter = pt_iter_create(&my_playtree, config))) { | |
905 while ((filename = pt_iter_get_next_file(my_pt_iter)) != NULL) | |
906 // insert it into the list and set plCurrent=new item | |
907 if (import_file_into_gui(filename, 1)) | |
908 result = 1; | |
909 | |
910 pt_iter_destroy(&my_pt_iter); | |
911 } | |
912 | |
913 if (save) | |
914 listSet(gtkSetCurrPlItem, save); | |
915 else | |
916 listSet(gtkSetCurrPlItem, plList); // go to head, if plList was empty before | |
917 | |
918 if (save && result) | |
919 listSet(gtkDelCurrPlItem, NULL); | |
920 | |
921 uiCurr(); // update filename | |
922 filename = NULL; | |
923 | |
924 return result; | |
925 } | |
926 | |
927 /* GUI -> MPlayer */ | |
928 | |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
929 void mplayer(int what, float value, void *data) |
23077 | 930 { |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
931 equalizer_t *eq = (equalizer_t *)data; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27393
diff
changeset
|
932 |
33765 | 933 switch (what) { |
32984 | 934 // subtitle |
935 | |
27393 | 936 #ifndef CONFIG_FREETYPE |
33766 | 937 case MPLAYER_SET_FONT_FACTOR: |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
938 font_factor = value; |
33763 | 939 mplayerLoadFont(); |
33744 | 940 break; |
23077 | 941 #else |
33766 | 942 case MPLAYER_SET_FONT_OUTLINE: |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
943 subtitle_font_thickness = (8.0f / 100.0f) * value; |
33763 | 944 mplayerLoadFont(); |
33744 | 945 break; |
32984 | 946 |
33766 | 947 case MPLAYER_SET_FONT_BLUR: |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
948 subtitle_font_radius = (8.0f / 100.0f) * value; |
33763 | 949 mplayerLoadFont(); |
33744 | 950 break; |
32984 | 951 |
33766 | 952 case MPLAYER_SET_FONT_TEXTSCALE: |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
953 text_font_scale_factor = value; |
33763 | 954 mplayerLoadFont(); |
33744 | 955 break; |
32984 | 956 |
33766 | 957 case MPLAYER_SET_FONT_OSDSCALE: |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
958 osd_font_scale_factor = value; |
33763 | 959 mplayerLoadFont(); |
33744 | 960 break; |
32984 | 961 |
33766 | 962 case MPLAYER_SET_FONT_ENCODING: |
33739 | 963 nfree(subtitle_font_encoding); |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
964 subtitle_font_encoding = gstrdup((char *)data); |
33763 | 965 mplayerLoadFont(); |
33744 | 966 break; |
32984 | 967 |
33766 | 968 case MPLAYER_SET_FONT_AUTOSCALE: |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
969 subtitle_autoscale = (int)value; |
33763 | 970 mplayerLoadFont(); |
33744 | 971 break; |
23077 | 972 #endif |
32984 | 973 |
27393 | 974 #ifdef CONFIG_ICONV |
33766 | 975 case MPLAYER_SET_SUB_ENCODING: |
33739 | 976 nfree(sub_cp); |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
977 sub_cp = gstrdup((char *)data); |
32984 | 978 break; |
23077 | 979 #endif |
32984 | 980 |
33766 | 981 case MPLAYER_SET_EXTRA_STEREO: |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
982 gtkAOExtraStereoMul = value; |
33555 | 983 if (guiInfo.afilter) |
984 af_control_any_rev(guiInfo.afilter, AF_CONTROL_ES_MUL | AF_CONTROL_SET, >kAOExtraStereoMul); | |
33744 | 985 break; |
32984 | 986 |
33766 | 987 case MPLAYER_SET_PANSCAN: |
32984 | 988 { |
989 mp_cmd_t *mp_cmd; | |
990 | |
991 mp_cmd = calloc(1, sizeof(*mp_cmd)); | |
992 mp_cmd->id = MP_CMD_PANSCAN; | |
993 mp_cmd->name = strdup("panscan"); | |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
994 mp_cmd->args[0].v.f = value; |
32984 | 995 mp_cmd->args[1].v.i = 1; |
996 mp_input_queue_cmd(mp_cmd); | |
997 } | |
33744 | 998 break; |
32984 | 999 |
33766 | 1000 case MPLAYER_SET_AUTO_QUALITY: |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
1001 auto_quality = (int)value; |
33744 | 1002 break; |
32984 | 1003 |
1004 // set equalizers | |
1005 | |
33766 | 1006 case MPLAYER_SET_CONTRAST: |
33555 | 1007 if (guiInfo.sh_video) |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
1008 set_video_colors(guiInfo.sh_video, "contrast", (int)value); |
33744 | 1009 break; |
32984 | 1010 |
33766 | 1011 case MPLAYER_SET_BRIGHTNESS: |
33555 | 1012 if (guiInfo.sh_video) |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
1013 set_video_colors(guiInfo.sh_video, "brightness", (int)value); |
33744 | 1014 break; |
32984 | 1015 |
33766 | 1016 case MPLAYER_SET_HUE: |
33555 | 1017 if (guiInfo.sh_video) |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
1018 set_video_colors(guiInfo.sh_video, "hue", (int)value); |
33744 | 1019 break; |
32984 | 1020 |
33766 | 1021 case MPLAYER_SET_SATURATION: |
33555 | 1022 if (guiInfo.sh_video) |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
1023 set_video_colors(guiInfo.sh_video, "saturation", (int)value); |
33744 | 1024 break; |
32984 | 1025 |
33766 | 1026 case MPLAYER_SET_EQUALIZER: |
32984 | 1027 { |
23077 | 1028 af_control_ext_t tmp; |
32984 | 1029 |
1030 if (eq) { | |
1031 gtkEquChannels[eq->channel][eq->band] = eq->gain; | |
1032 tmp.ch = eq->channel; | |
1033 tmp.arg = gtkEquChannels[eq->channel]; | |
1034 | |
33555 | 1035 if (guiInfo.afilter) |
1036 af_control_any_rev(guiInfo.afilter, AF_CONTROL_EQUALIZER_GAIN | AF_CONTROL_SET, &tmp); | |
32984 | 1037 } else { |
33693
006a2db8bd55
Use unsigned index variable for comparison with array size.
ib
parents:
33692
diff
changeset
|
1038 unsigned int i; |
32984 | 1039 |
1040 memset(gtkEquChannels, 0, sizeof(gtkEquChannels)); | |
1041 | |
33555 | 1042 if (guiInfo.afilter) { |
33689
8d0290220239
Replace numeric constants for gtkEquChannels array size.
ib
parents:
33688
diff
changeset
|
1043 for (i = 0; i < FF_ARRAY_ELEMS(gtkEquChannels); i++) { |
32984 | 1044 tmp.ch = i; |
1045 tmp.arg = gtkEquChannels[i]; | |
33555 | 1046 af_control_any_rev(guiInfo.afilter, AF_CONTROL_EQUALIZER_GAIN | AF_CONTROL_SET, &tmp); |
32984 | 1047 } |
1048 } | |
1049 } | |
1050 | |
33744 | 1051 break; |
32984 | 1052 } |
33768 | 1053 |
1054 case MPLAYER_EXIT_GUI: | |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
1055 exit_player_with_rc((enum exit_reason)value, (enum exit_reason)value >= EXIT_ERROR); |
33768 | 1056 break; |
32984 | 1057 } |
23077 | 1058 } |
1059 | |
33763 | 1060 void mplayerLoadFont(void) |
33745 | 1061 { |
1062 #ifdef CONFIG_FREETYPE | |
1063 load_font_ft(vo_image_width, vo_image_height, &vo_font, font_name, osd_font_scale_factor); | |
1064 #else | |
1065 if (vo_font) { | |
1066 int i; | |
1067 | |
1068 free(vo_font->name); | |
1069 free(vo_font->fpath); | |
1070 | |
1071 for (i = 0; i < 16; i++) { | |
1072 if (vo_font->pic_a[i]) { | |
1073 free(vo_font->pic_a[i]->bmp); | |
1074 free(vo_font->pic_a[i]->pal); | |
1075 } | |
1076 } | |
1077 | |
1078 for (i = 0; i < 16; i++) { | |
1079 if (vo_font->pic_b[i]) { | |
1080 free(vo_font->pic_b[i]->bmp); | |
1081 free(vo_font->pic_b[i]->pal); | |
1082 } | |
1083 } | |
1084 | |
1085 free(vo_font); | |
1086 vo_font = NULL; | |
1087 } | |
1088 | |
1089 if (font_name) { | |
1090 vo_font = read_font_desc(font_name, font_factor, 0); | |
1091 | |
1092 if (!vo_font) | |
1093 gmp_msg(MSGT_GPLAYER, MSGL_ERR, MSGTR_CantLoadFont, font_name); | |
1094 } else { | |
1095 font_name = gstrdup(get_path("font/font.desc")); | |
1096 vo_font = read_font_desc(font_name, font_factor, 0); | |
1097 | |
1098 if (!vo_font) { | |
1099 nfree(font_name); | |
1100 font_name = gstrdup(MPLAYER_DATADIR "/font/font.desc"); | |
1101 vo_font = read_font_desc(font_name, font_factor, 0); | |
1102 } | |
1103 } | |
1104 #endif | |
1105 } | |
1106 | |
33790
ab6d06f5b98b
Add const to some string pointer arguments that will not be modified.
ib
parents:
33775
diff
changeset
|
1107 void mplayerLoadSubtitle(const char *name) |
33745 | 1108 { |
33773 | 1109 if (guiInfo.Playing == 0) |
33745 | 1110 return; |
1111 | |
1112 if (subdata) { | |
1113 mp_msg(MSGT_GPLAYER, MSGL_INFO, MSGTR_DeletingSubtitles); | |
1114 | |
1115 sub_free(subdata); | |
1116 subdata = NULL; | |
1117 vo_sub = NULL; | |
1118 | |
1119 if (vo_osd_list) { | |
1120 int len; | |
1121 mp_osd_obj_t *osd; | |
1122 | |
1123 osd = vo_osd_list; | |
1124 | |
1125 while (osd) { | |
1126 if (osd->type == OSDTYPE_SUBTITLE) | |
1127 break; | |
1128 | |
1129 osd = osd->next; | |
1130 } | |
1131 | |
1132 if (osd && (osd->flags & OSDFLAG_VISIBLE)) { | |
1133 len = osd->stride * (osd->bbox.y2 - osd->bbox.y1); | |
1134 memset(osd->bitmap_buffer, 0, len); | |
1135 memset(osd->alpha_buffer, 0, len); | |
1136 } | |
1137 } | |
1138 } | |
1139 | |
1140 if (name) { | |
1141 mp_msg(MSGT_GPLAYER, MSGL_INFO, MSGTR_LoadingSubtitles, name); | |
1142 | |
33775 | 1143 subdata = sub_read_file(name, (guiInfo.sh_video ? guiInfo.sh_video->fps : 0)); |
33745 | 1144 |
1145 if (!subdata) | |
1146 gmp_msg(MSGT_GPLAYER, MSGL_ERR, MSGTR_CantLoadSub, name); | |
1147 | |
1148 sub_name = (malloc(2 * sizeof(char *))); // when mplayer will be restarted | |
1149 sub_name[0] = strdup(name); // sub_name[0] will be read | |
1150 sub_name[1] = NULL; | |
1151 } | |
1152 | |
1153 update_set_of_subtitles(); | |
1154 } | |
1155 | |
33023 | 1156 // NOTE TO MYSELF: This function is nonsense. |
33289 | 1157 // MPlayer should pass messages to the GUI |
1158 // which must decide then which message has | |
1159 // to be shown (MSGL_FATAL, for example). | |
1160 // But with this function it is at least | |
1161 // possible to show GUI's very critical or | |
1162 // abort messages. | |
33023 | 1163 void gmp_msg(int mod, int lev, const char *format, ...) |
1164 { | |
1165 char msg[512]; | |
1166 va_list va; | |
1167 | |
1168 va_start(va, format); | |
1169 vsnprintf(msg, sizeof(msg), format, va); | |
1170 va_end(va); | |
1171 | |
1172 mp_msg(mod, lev, msg); | |
1173 | |
1174 if (mp_msg_test(mod, lev)) | |
1175 gtkMessageBox(GTK_MB_FATAL, msg); | |
1176 } |