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