Mercurial > mplayer.hg
annotate gui/interface.c @ 34074:360ed500a6e9
Set all buttons related to seek operations according to stream type.
Setting just evSetMoviePosition isn't enough.
The check in uiAbsSeek() isn't necessary, because the related button
and event are disabled anyway.
author | ib |
---|---|
date | Fri, 30 Sep 2011 14:33:13 +0000 |
parents | ac52c68c17f5 |
children | deff81b57903 |
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 = { |
33961 | 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 | |
33985 | 107 mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[interface] skin directory #1: %s\n", skinDirInHome); |
108 mp_msg(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 |
33985 | 178 mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[interface] screen depth: %d\n", wsDepthOnScreen); |
179 mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[interface] mainWindow ID: 0x%x\n", (int)guiApp.mainWindow.WindowID); | |
180 mp_msg(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) |
33978 | 230 btnSet(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 |
34064 | 236 if (plCurrent && !filename) { |
33555 | 237 uiSetFileName(plCurrent->path, plCurrent->name, STREAMTYPE_FILE); |
34064 | 238 filename = NULL; // don't start playing |
239 } | |
32984 | 240 |
241 if (subdata) | |
33897 | 242 setdup(&guiInfo.SubtitleFilename, subdata->filename); |
32984 | 243 |
33763 | 244 mplayerLoadFont(); |
33265 | 245 |
246 initialized = 1; | |
23077 | 247 } |
248 | |
32984 | 249 void guiDone(void) |
23077 | 250 { |
33307 | 251 if (initialized) { |
33555 | 252 uiMainRender = 0; |
32984 | 253 |
33308 | 254 if (gui_save_pos) { |
33555 | 255 gui_main_pos_x = guiApp.mainWindow.X; |
256 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
|
257 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
|
258 gui_sub_pos_y = guiApp.sub.y; |
33308 | 259 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27393
diff
changeset
|
260 |
27341
e7c989f7a7c9
Start unifying names of internal preprocessor directives.
diego
parents:
26458
diff
changeset
|
261 #ifdef CONFIG_ASS |
33308 | 262 ass_enabled = gtkASS.enabled; |
263 ass_use_margins = gtkASS.use_margins; | |
264 ass_top_margin = gtkASS.top_margin; | |
265 ass_bottom_margin = gtkASS.bottom_margin; | |
23077 | 266 #endif |
267 | |
33308 | 268 cfg_write(); |
269 wsXDone(); | |
33307 | 270 } |
33263 | 271 |
33307 | 272 appFreeStruct(); |
33542 | 273 free(guiIcon.collection); |
33307 | 274 |
275 if (gui_conf) { | |
276 m_config_free(gui_conf); | |
277 gui_conf = NULL; | |
278 } | |
33530 | 279 |
280 mp_msg(MSGT_GPLAYER, MSGL_V, "GUI done.\n"); | |
33263 | 281 } |
282 | |
32984 | 283 static void add_vf(char *str) |
23077 | 284 { |
32984 | 285 void *p; |
286 | |
287 if (vf_settings) { | |
288 int i = 0; | |
289 | |
290 while (vf_settings[i].name) { | |
291 if (!gstrcmp(vf_settings[i++].name, str)) { | |
292 i = -1; | |
293 break; | |
294 } | |
295 } | |
296 | |
297 if (i != -1) { | |
298 p = realloc(vf_settings, (i + 2) * sizeof(m_obj_settings_t)); | |
32712 | 299 |
32984 | 300 if (!p) |
301 return; | |
302 | |
303 vf_settings = p; | |
304 vf_settings[i].name = strdup(str); | |
305 vf_settings[i].attribs = NULL; | |
306 vf_settings[i + 1].name = NULL; | |
307 } | |
308 } else { | |
309 vf_settings = malloc(2 * sizeof(m_obj_settings_t)); | |
310 vf_settings[0].name = strdup(str); | |
311 vf_settings[0].attribs = NULL; | |
312 vf_settings[1].name = NULL; | |
32712 | 313 } |
314 | |
33530 | 315 mp_msg(MSGT_GPLAYER, MSGL_INFO, MSGTR_AddingVideoFilter, str); |
23077 | 316 } |
317 | |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
318 int gui(int what, void *data) |
23077 | 319 { |
32984 | 320 mixer_t *mixer = NULL; |
33685
ca6c9a80a062
Make assignments to variables in guiGetEvent() only if needed.
ib
parents:
33683
diff
changeset
|
321 stream_t *stream; |
27341
e7c989f7a7c9
Start unifying names of internal preprocessor directives.
diego
parents:
26458
diff
changeset
|
322 #ifdef CONFIG_DVDREAD |
33687 | 323 dvd_priv_t *dvd; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27393
diff
changeset
|
324 #endif |
33694
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
325 plItem *next; |
34074
360ed500a6e9
Set all buttons related to seek operations according to stream type.
ib
parents:
34073
diff
changeset
|
326 int state; |
23077 | 327 |
33555 | 328 if (guiInfo.mpcontext) |
329 mixer = mpctx_get_mixer(guiInfo.mpcontext); | |
23077 | 330 |
33726 | 331 switch (what) { |
33731
81f71d910333
Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents:
33730
diff
changeset
|
332 case GUI_SET_CONTEXT: |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
333 guiInfo.mpcontext = data; |
23077 | 334 break; |
32984 | 335 |
33731
81f71d910333
Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents:
33730
diff
changeset
|
336 case GUI_SET_STATE: |
32984 | 337 |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
338 switch ((int)data) { |
33631 | 339 case GUI_STOP: |
33614 | 340 case GUI_PLAY: |
33555 | 341 // if ( !gtkShowVideoWindow ) wsVisibleWindow( &guiApp.subWindow,wsHideWindow ); |
33614 | 342 case GUI_PAUSE: |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
343 guiInfo.Playing = (int)data; |
32984 | 344 break; |
345 } | |
346 | |
33555 | 347 uiState(); |
23077 | 348 break; |
32984 | 349 |
33732 | 350 case GUI_HANDLE_EVENTS: |
33901 | 351 if (!guiInfo.Playing || !guiInfo.VideoWindow) |
33732 | 352 wsHandleEvents(); |
353 gtkEventHandling(); | |
354 break; | |
355 | |
33731
81f71d910333
Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents:
33730
diff
changeset
|
356 case GUI_RUN_COMMAND: |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
357 |
33985 | 358 mp_msg(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
|
359 |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
360 switch ((int)data) { |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
361 case MP_CMD_VO_FULLSCREEN: |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
362 uiEventHandling(evFullScreen, 0); |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
363 break; |
33696
24d919fb6778
Don't let MPlayer directly call user interface functions.
ib
parents:
33695
diff
changeset
|
364 |
24d919fb6778
Don't let MPlayer directly call user interface functions.
ib
parents:
33695
diff
changeset
|
365 case MP_CMD_PLAY_TREE_STEP: |
24d919fb6778
Don't let MPlayer directly call user interface functions.
ib
parents:
33695
diff
changeset
|
366 uiEventHandling(evNext, 0); |
24d919fb6778
Don't let MPlayer directly call user interface functions.
ib
parents:
33695
diff
changeset
|
367 break; |
24d919fb6778
Don't let MPlayer directly call user interface functions.
ib
parents:
33695
diff
changeset
|
368 |
24d919fb6778
Don't let MPlayer directly call user interface functions.
ib
parents:
33695
diff
changeset
|
369 case -MP_CMD_PLAY_TREE_STEP: |
24d919fb6778
Don't let MPlayer directly call user interface functions.
ib
parents:
33695
diff
changeset
|
370 uiEventHandling(evPrev, 0); |
24d919fb6778
Don't let MPlayer directly call user interface functions.
ib
parents:
33695
diff
changeset
|
371 break; |
24d919fb6778
Don't let MPlayer directly call user interface functions.
ib
parents:
33695
diff
changeset
|
372 |
24d919fb6778
Don't let MPlayer directly call user interface functions.
ib
parents:
33695
diff
changeset
|
373 case MP_CMD_STOP: |
24d919fb6778
Don't let MPlayer directly call user interface functions.
ib
parents:
33695
diff
changeset
|
374 uiEventHandling(evStop, 0); |
24d919fb6778
Don't let MPlayer directly call user interface functions.
ib
parents:
33695
diff
changeset
|
375 break; |
33697 | 376 |
377 case MP_CMD_QUIT: | |
378 uiEventHandling(evExit, 0); | |
379 break; | |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
380 } |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
381 |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
382 break; |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
383 |
33731
81f71d910333
Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents:
33730
diff
changeset
|
384 case GUI_PREPARE: |
32984 | 385 |
34052 | 386 wsVisibleMouse(&guiApp.subWindow, wsHideMouseCursor); |
32984 | 387 |
34052 | 388 if (guiInfo.NewPlay == GUI_FILE_NEW) { |
389 dvd_title = 0; | |
390 audio_id = -1; | |
391 video_id = -1; | |
392 dvdsub_id = -1; | |
393 vobsub_id = -1; | |
394 | |
395 stream_cache_size = -1; | |
396 autosync = 0; | |
397 force_fps = 0; | |
398 } | |
34032 | 399 |
33555 | 400 switch (guiInfo.StreamType) { |
34073 | 401 case STREAMTYPE_FILE: |
402 case STREAMTYPE_STREAM: | |
32984 | 403 break; |
404 | |
405 #ifdef CONFIG_VCD | |
406 case STREAMTYPE_VCD: | |
407 { | |
408 char tmp[512]; | |
409 | |
33874 | 410 sprintf(tmp, "vcd://%d", guiInfo.Track); |
34065
8a7056729022
Change guiInfo.Filename by using uiSetFileName() only.
ib
parents:
34064
diff
changeset
|
411 uiSetFileName(NULL, tmp, STREAMTYPE_VCD); |
32984 | 412 } |
413 break; | |
414 #endif | |
415 | |
416 #ifdef CONFIG_DVDREAD | |
417 case STREAMTYPE_DVD: | |
418 { | |
419 char tmp[512]; | |
420 | |
33876
4789b8eed97e
Get rid of a bunch of needless or redundant guiInfo members.
ib
parents:
33874
diff
changeset
|
421 sprintf(tmp, "dvd://%d", guiInfo.Track); |
34065
8a7056729022
Change guiInfo.Filename by using uiSetFileName() only.
ib
parents:
34064
diff
changeset
|
422 uiSetFileName(NULL, tmp, STREAMTYPE_DVD); |
32984 | 423 } |
424 | |
33555 | 425 dvd_chapter = guiInfo.Chapter; |
426 dvd_angle = guiInfo.Angle; | |
32984 | 427 |
428 break; | |
429 #endif | |
430 } | |
431 | |
432 // video opts | |
433 | |
434 if (!video_driver_list) { | |
435 int i = 0; | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27393
diff
changeset
|
436 |
32984 | 437 while (video_out_drivers[i++]) { |
438 if (video_out_drivers[i - 1]->control(VOCTRL_GUISUPPORT, NULL) == VO_TRUE) { | |
439 gaddlist(&video_driver_list, (char *)video_out_drivers[i - 1]->info->short_name); | |
440 break; | |
441 } | |
442 } | |
443 } | |
444 | |
445 if (!video_driver_list && !video_driver_list[0]) { | |
33024 | 446 gmp_msg(MSGT_GPLAYER, MSGL_FATAL, MSGTR_IDFGCVD); |
33768 | 447 mplayer(MPLAYER_EXIT_GUI, EXIT_ERROR, 0); |
32984 | 448 } |
449 | |
450 { | |
451 int i = 0; | |
452 | |
33901 | 453 guiInfo.VideoWindow = True; |
32984 | 454 |
455 while (video_out_drivers[i++]) { | |
456 if (video_out_drivers[i - 1]->control(VOCTRL_GUISUPPORT, NULL) == VO_TRUE) { | |
457 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 | 458 guiInfo.VideoWindow = False; |
32984 | 459 break; |
460 } | |
461 } | |
462 } | |
463 } | |
464 | |
465 #ifdef CONFIG_DXR3 | |
466 if (video_driver_list && !gstrcmp(video_driver_list[0], "dxr3")) | |
33555 | 467 if (guiInfo.StreamType != STREAMTYPE_DVD && guiInfo.StreamType != STREAMTYPE_VCD) |
32984 | 468 if (gtkVfLAVC) |
469 add_vf("lavc"); | |
470 #endif | |
471 | |
472 if (gtkVfPP) | |
473 add_vf("pp"); | |
474 | |
475 // audio opts | |
476 | |
477 // if ( ao_plugin_cfg.plugin_list ) { free( ao_plugin_cfg.plugin_list ); ao_plugin_cfg.plugin_list=NULL; } | |
478 if (gtkAONorm) | |
479 greplace(&af_cfg.list, "volnorm", "volnorm"); | |
480 | |
481 if (gtkEnableAudioEqualizer) | |
482 greplace(&af_cfg.list, "equalizer", "equalizer"); | |
483 | |
484 if (gtkAOExtraStereo) { | |
485 char *name; | |
486 | |
487 name = malloc(12 + 20 + 1); | |
488 snprintf(name, 12 + 20, "extrastereo=%f", gtkAOExtraStereoMul); | |
489 name[12 + 20] = 0; | |
490 greplace(&af_cfg.list, "extrastereo", name); | |
491 free(name); | |
492 } | |
493 | |
27341
e7c989f7a7c9
Start unifying names of internal preprocessor directives.
diego
parents:
26458
diff
changeset
|
494 #ifdef CONFIG_OSS_AUDIO |
32984 | 495 if (audio_driver_list && !gstrncmp(audio_driver_list[0], "oss", 3)) { |
496 char *tmp; | |
497 | |
498 mixer_device = gtkAOOSSMixer; | |
499 mixer_channel = gtkAOOSSMixerChannel; | |
500 | |
501 if (gtkAOOSSDevice) { | |
502 tmp = calloc(1, strlen(gtkAOOSSDevice) + 7); | |
503 sprintf(tmp, "oss:%s", gtkAOOSSDevice); | |
504 } else | |
505 tmp = strdup("oss"); | |
506 | |
507 gaddlist(&audio_driver_list, tmp); | |
508 free(tmp); | |
509 } | |
23077 | 510 #endif |
32984 | 511 |
27390
9d95dc936e66
Introduce CONFIG_ALSA preprocessor directive for ALSA 0.9 and 1.x.
diego
parents:
27387
diff
changeset
|
512 #ifdef CONFIG_ALSA |
32984 | 513 if (audio_driver_list && !gstrncmp(audio_driver_list[0], "alsa", 4)) { |
514 char *tmp; | |
515 | |
516 mixer_device = gtkAOALSAMixer; | |
517 mixer_channel = gtkAOALSAMixerChannel; | |
518 | |
519 if (gtkAOALSADevice) { | |
520 tmp = calloc(1, strlen(gtkAOALSADevice) + 14); | |
521 sprintf(tmp, "alsa:device=%s", gtkAOALSADevice); | |
522 } else | |
523 tmp = strdup("alsa"); | |
524 | |
525 gaddlist(&audio_driver_list, tmp); | |
526 free(tmp); | |
527 } | |
23077 | 528 #endif |
32984 | 529 |
27370
14c5017f40d2
Change a bunch of video/audio-output-specific preprocessor directives from
diego
parents:
27359
diff
changeset
|
530 #ifdef CONFIG_SDL |
32984 | 531 if (audio_driver_list && !gstrncmp(audio_driver_list[0], "sdl", 3)) { |
532 char *tmp; | |
533 | |
534 if (gtkAOSDLDriver) { | |
535 tmp = calloc(1, strlen(gtkAOSDLDriver) + 10); | |
536 sprintf(tmp, "sdl:%s", gtkAOSDLDriver); | |
537 } else | |
538 tmp = strdup("sdl"); | |
539 | |
540 gaddlist(&audio_driver_list, tmp); | |
541 free(tmp); | |
542 } | |
23077 | 543 #endif |
32984 | 544 |
27341
e7c989f7a7c9
Start unifying names of internal preprocessor directives.
diego
parents:
26458
diff
changeset
|
545 #ifdef CONFIG_ESD |
32984 | 546 if (audio_driver_list && !gstrncmp(audio_driver_list[0], "esd", 3)) { |
547 char *tmp; | |
548 | |
549 if (gtkAOESDDevice) { | |
550 tmp = calloc(1, strlen(gtkAOESDDevice) + 10); | |
551 sprintf(tmp, "esd:%s", gtkAOESDDevice); | |
552 } else | |
553 tmp = strdup("esd"); | |
554 | |
555 gaddlist(&audio_driver_list, tmp); | |
556 free(tmp); | |
557 } | |
23077 | 558 #endif |
32984 | 559 |
560 // subtitle | |
561 | |
33897 | 562 // subdata->filename=gstrdup( guiInfo.SubtitleFilename ); |
32984 | 563 stream_dump_type = 0; |
564 | |
565 if (gtkSubDumpMPSub) | |
566 stream_dump_type = 4; | |
567 | |
568 if (gtkSubDumpSrt) | |
569 stream_dump_type = 6; | |
570 | |
571 gtkSubDumpMPSub = gtkSubDumpSrt = 0; | |
33763 | 572 mplayerLoadFont(); |
23077 | 573 |
32984 | 574 // misc |
575 | |
576 if (gtkCacheOn) | |
577 stream_cache_size = gtkCacheSize; | |
578 | |
579 if (gtkAutoSyncOn) | |
580 autosync = gtkAutoSync; | |
23077 | 581 |
33897 | 582 if (guiInfo.AudioFilename) |
583 audio_stream = gstrdup(guiInfo.AudioFilename); | |
33894 | 584 else if (guiInfo.NewPlay == GUI_FILE_NEW) |
33739 | 585 nfree(audio_stream); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27393
diff
changeset
|
586 |
32984 | 587 // audio_stream = NULL; |
588 | |
33555 | 589 guiInfo.NewPlay = 0; |
23077 | 590 |
27341
e7c989f7a7c9
Start unifying names of internal preprocessor directives.
diego
parents:
26458
diff
changeset
|
591 #ifdef CONFIG_ASS |
32984 | 592 ass_enabled = gtkASS.enabled; |
593 ass_use_margins = gtkASS.use_margins; | |
594 ass_top_margin = gtkASS.top_margin; | |
23077 | 595 ass_bottom_margin = gtkASS.bottom_margin; |
596 #endif | |
597 | |
32984 | 598 break; |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
599 |
33731
81f71d910333
Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents:
33730
diff
changeset
|
600 case GUI_SET_STREAM: |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
601 |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
602 stream = data; |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
603 guiInfo.StreamType = stream->type; |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
604 |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
605 switch (guiInfo.StreamType) { |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
606 #ifdef CONFIG_DVDREAD |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
607 case STREAMTYPE_DVD: |
33730 | 608 dvd = stream->priv; |
33903 | 609 guiInfo.Tracks = dvd->vmg_file->tt_srpt->nr_of_srpts; |
610 guiInfo.Chapters = dvd->vmg_file->tt_srpt->title[dvd_title].nr_of_ptts; | |
611 guiInfo.Angles = dvd->vmg_file->tt_srpt->title[dvd_title].nr_of_angles; | |
33902 | 612 guiInfo.AudioStreams = dvd->nr_of_channels; |
613 memcpy(guiInfo.AudioStream, dvd->audio_streams, sizeof(dvd->audio_streams)); | |
614 guiInfo.Subtitles = dvd->nr_of_subtitles; | |
615 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
|
616 guiInfo.Track = dvd_title + 1; |
4789b8eed97e
Get rid of a bunch of needless or redundant guiInfo members.
ib
parents:
33874
diff
changeset
|
617 guiInfo.Chapter = dvd_chapter + 1; |
4789b8eed97e
Get rid of a bunch of needless or redundant guiInfo members.
ib
parents:
33874
diff
changeset
|
618 guiInfo.Angle = dvd_angle + 1; |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
619 break; |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
620 #endif |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
621 |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
622 #ifdef CONFIG_VCD |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
623 case STREAMTYPE_VCD: |
33876
4789b8eed97e
Get rid of a bunch of needless or redundant guiInfo members.
ib
parents:
33874
diff
changeset
|
624 guiInfo.Tracks = 0; |
4789b8eed97e
Get rid of a bunch of needless or redundant guiInfo members.
ib
parents:
33874
diff
changeset
|
625 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
|
626 break; |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
627 #endif |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
628 |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
629 default: |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
630 break; |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
631 } |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
632 |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
633 break; |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
634 |
33731
81f71d910333
Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents:
33730
diff
changeset
|
635 case GUI_SET_AFILTER: |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
636 guiInfo.afilter = data; |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
637 break; |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
638 |
33731
81f71d910333
Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents:
33730
diff
changeset
|
639 case GUI_SET_VIDEO: |
33692
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 // video |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
642 |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
643 guiInfo.sh_video = data; |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
644 |
34074
360ed500a6e9
Set all buttons related to seek operations according to stream type.
ib
parents:
34073
diff
changeset
|
645 state = (guiInfo.StreamType == STREAMTYPE_STREAM ? btnDisabled : btnReleased); |
360ed500a6e9
Set all buttons related to seek operations according to stream type.
ib
parents:
34073
diff
changeset
|
646 btnSet(evForward10sec, state); |
360ed500a6e9
Set all buttons related to seek operations according to stream type.
ib
parents:
34073
diff
changeset
|
647 btnSet(evBackward10sec, state); |
360ed500a6e9
Set all buttons related to seek operations according to stream type.
ib
parents:
34073
diff
changeset
|
648 btnSet(evForward1min, state); |
360ed500a6e9
Set all buttons related to seek operations according to stream type.
ib
parents:
34073
diff
changeset
|
649 btnSet(evBackward1min, state); |
360ed500a6e9
Set all buttons related to seek operations according to stream type.
ib
parents:
34073
diff
changeset
|
650 btnSet(evForward10min, state); |
360ed500a6e9
Set all buttons related to seek operations according to stream type.
ib
parents:
34073
diff
changeset
|
651 btnSet(evBackward10min, state); |
360ed500a6e9
Set all buttons related to seek operations according to stream type.
ib
parents:
34073
diff
changeset
|
652 btnSet(evSetMoviePosition, state); |
33692
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 #ifdef CONFIG_DXR3 |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
655 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
|
656 gtkMessageBox(GTK_MB_FATAL, MSGTR_NEEDLAVC); |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
657 return False; |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
658 } |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
659 #endif |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
660 |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
661 break; |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
662 |
33731
81f71d910333
Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents:
33730
diff
changeset
|
663 case GUI_SET_AUDIO: |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
664 |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
665 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
|
666 |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
667 if (data && !guiInfo.sh_video) |
33901 | 668 guiInfo.VideoWindow = False; |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
669 |
33731
81f71d910333
Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents:
33730
diff
changeset
|
670 gui(GUI_SET_MIXER, 0); |
33692
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 if (gtkEnableAudioEqualizer) { |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
673 equalizer_t eq; |
33693
006a2db8bd55
Use unsigned index variable for comparison with array size.
ib
parents:
33692
diff
changeset
|
674 unsigned int i, j; |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
675 |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
676 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
|
677 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
|
678 eq.channel = i; |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
679 eq.band = j; |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
680 eq.gain = gtkEquChannels[i][j]; |
33766 | 681 mplayer(MPLAYER_SET_EQUALIZER, 0, &eq); |
33692
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 } |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
684 } |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
685 |
33960 | 686 // These must be done here (in the last call from MPlayer before |
687 // playback starts) and not in GUI_SETUP_VIDEO_WINDOW, because... | |
688 | |
689 // ...without video there will be no call to GUI_SETUP_VIDEO_WINDOW | |
690 if (!guiInfo.VideoWindow) { | |
691 wsVisibleWindow(&guiApp.subWindow, wsHideWindow); | |
33978 | 692 btnSet(evFullScreen, (gtkLoadFullscreen ? btnPressed : btnReleased)); |
33960 | 693 } |
694 | |
695 // ...option variable fullscreen determines whether MPlayer will handle | |
696 // the window given by WinID as fullscreen window (and will do aspect | |
697 // scaling then) or not - quite rubbish | |
698 fullscreen = gtkLoadFullscreen; | |
699 | |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
700 break; |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
701 |
33731
81f71d910333
Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents:
33730
diff
changeset
|
702 case GUI_SET_MIXER: |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
703 if (mixer) { |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
704 float l, r; |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
705 static float last_balance = -1; |
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 mixer_getvolume(mixer, &l, &r); |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
708 |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
709 guiInfo.Volume = FFMAX(l, r); |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
710 btnModify(evSetVolume, guiInfo.Volume); |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
711 |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
712 if (guiInfo.Balance != last_balance) { |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
713 if (guiInfo.Volume) |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
714 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
|
715 else |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
716 guiInfo.Balance = 50.0f; |
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 last_balance = guiInfo.Balance; |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
719 btnModify(evSetBalance, guiInfo.Balance); |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
720 } |
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 break; |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
723 |
33731
81f71d910333
Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents:
33730
diff
changeset
|
724 case GUI_REDRAW: |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
725 uiEventHandling(evRedraw, 0); |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
726 break; |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
727 |
33731
81f71d910333
Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents:
33730
diff
changeset
|
728 case GUI_SETUP_VIDEO_WINDOW: |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
729 |
33901 | 730 guiInfo.VideoWidth = vo_dwidth; |
731 guiInfo.VideoHeight = vo_dheight; | |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
732 |
33960 | 733 if (!guiApp.subWindow.isFullScreen || !guiApp.subWindow.Mapped) { |
734 if (!guiApp.subWindow.isFullScreen) | |
735 wsResizeWindow(&guiApp.subWindow, guiInfo.VideoWidth, guiInfo.VideoHeight); | |
736 | |
33993 | 737 wsMoveWindow(&guiApp.subWindow, False, guiApp.sub.x, guiApp.sub.y); |
33960 | 738 |
739 if (!guiApp.subWindow.Mapped) | |
740 wsVisibleWindow(&guiApp.subWindow, wsShowWindow); | |
741 } | |
742 | |
743 if (gtkLoadFullscreen ^ guiApp.subWindow.isFullScreen) | |
744 uiEventHandling(evFullScreen, 0); | |
745 | |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
746 if (guiWinID >= 0) |
33993 | 747 wsMoveWindow(&guiApp.mainWindow, True, 0, guiInfo.VideoHeight); |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
748 |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
749 break; |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
750 |
33733 | 751 case GUI_HANDLE_X_EVENT: |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
752 wsEvents(wsDisplay, data); |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
753 gtkEventHandling(); |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
754 break; |
33694
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
755 |
33731
81f71d910333
Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents:
33730
diff
changeset
|
756 case GUI_END_FILE: |
33694
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
757 |
34035 | 758 uiEventHandling(evRedraw, 1); |
759 | |
34052 | 760 guiInfo.sh_video = NULL; |
761 | |
33694
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
762 if (!uiGotoTheNext && guiInfo.Playing) { |
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
763 uiGotoTheNext = 1; |
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
764 break; |
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 |
33742
e1539e14d60f
Move purely list related parts of gtkSet() from interface.c to list.c.
ib
parents:
33741
diff
changeset
|
767 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
|
768 plLastPlayed = next; |
34065
8a7056729022
Change guiInfo.Filename by using uiSetFileName() only.
ib
parents:
34064
diff
changeset
|
769 uiSetFileName(next->path, next->name, STREAMTYPE_FILE); |
34066 | 770 guiInfo.NewPlay = GUI_FILE_NEW; |
33898 | 771 guiInfo.Track++; |
33694
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
772 } else { |
33894 | 773 if (guiInfo.NewPlay == GUI_FILE_NEW) |
33694
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
774 break; |
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
775 |
33897 | 776 guiInfo.ElapsedTime = 0; |
33694
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
777 guiInfo.Position = 0; |
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
778 guiInfo.AudioChannels = 0; |
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
779 |
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
780 #ifdef CONFIG_DVDREAD |
33876
4789b8eed97e
Get rid of a bunch of needless or redundant guiInfo members.
ib
parents:
33874
diff
changeset
|
781 guiInfo.Track = 1; |
4789b8eed97e
Get rid of a bunch of needless or redundant guiInfo members.
ib
parents:
33874
diff
changeset
|
782 guiInfo.Chapter = 1; |
4789b8eed97e
Get rid of a bunch of needless or redundant guiInfo members.
ib
parents:
33874
diff
changeset
|
783 guiInfo.Angle = 1; |
33694
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
784 #endif |
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
785 |
33960 | 786 if (gtkShowVideoWindow) { |
787 guiInfo.VideoWindow = True; | |
788 guiInfo.VideoWidth = guiApp.sub.width; | |
789 guiInfo.VideoHeight = guiApp.sub.height; | |
790 | |
791 if (!guiApp.subWindow.isFullScreen) { | |
792 wsResizeWindow(&guiApp.subWindow, guiInfo.VideoWidth, guiInfo.VideoHeight); | |
33993 | 793 wsMoveWindow(&guiApp.subWindow, False, guiApp.sub.x, guiApp.sub.y); |
33960 | 794 } |
795 | |
796 if (!guiApp.subWindow.Mapped) | |
797 wsVisibleWindow(&guiApp.subWindow, wsShowWindow); | |
798 | |
799 if (gtkLoadFullscreen ^ guiApp.subWindow.isFullScreen) | |
800 uiEventHandling(evFullScreen, 0); | |
801 } else { | |
33694
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
802 wsVisibleWindow(&guiApp.subWindow, wsHideWindow); |
33960 | 803 guiInfo.VideoWindow = False; |
33978 | 804 btnSet(evFullScreen, (gtkLoadFullscreen ? btnPressed : btnReleased)); |
33960 | 805 } |
33694
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
806 |
33731
81f71d910333
Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents:
33730
diff
changeset
|
807 gui(GUI_SET_STATE, (void *)GUI_STOP); |
33959 | 808 |
809 wsHandleEvents(); | |
33694
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
810 uiSubRender = 1; |
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
811 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
|
812 wsClearWindow(guiApp.subWindow); |
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
813 wsPostRedisplay(&guiApp.subWindow); |
34032 | 814 wsVisibleMouse(&guiApp.subWindow, wsShowMouseCursor); |
33694
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
815 } |
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
816 |
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
817 break; |
32984 | 818 } |
819 | |
33666
0f592e8530f1
Change return code of guiGetEvent() to indicate success.
ib
parents:
33664
diff
changeset
|
820 return True; |
23077 | 821 } |
822 | |
33746 | 823 // This function adds/inserts one file into the gui playlist. |
824 static int import_file_into_gui(char *temp, int insert) | |
825 { | |
826 char *filename, *pathname; | |
827 plItem *item; | |
828 | |
829 filename = strdup(mp_basename(temp)); | |
830 pathname = strdup(temp); | |
831 | |
832 if (strlen(pathname) - strlen(filename) > 0) | |
833 pathname[strlen(pathname) - strlen(filename) - 1] = 0; // we have some path, so remove / at end | |
834 else | |
835 pathname[strlen(pathname) - strlen(filename)] = 0; | |
836 | |
33985 | 837 mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[interface] playtree, add: %s/%s\n", pathname, filename); |
33746 | 838 |
839 item = calloc(1, sizeof(plItem)); | |
840 | |
841 if (!item) | |
842 return 0; | |
843 | |
844 item->name = filename; | |
845 item->path = pathname; | |
846 | |
847 if (insert) | |
848 listSet(gtkInsertPlItem, item); // inserts the item after current, and makes current=item | |
849 else | |
850 listSet(gtkAddPlItem, item); | |
851 | |
852 return 1; | |
853 } | |
854 | |
855 // This function imports the initial playtree (based on cmd-line files) | |
856 // into the gui playlist by either: | |
857 // - overwriting gui pl (enqueue=0) | |
858 // - appending it to gui pl (enqueue=1) | |
33752 | 859 int guiPlaylistInitialize(play_tree_t *my_playtree, m_config_t *config, int enqueue) |
33746 | 860 { |
861 play_tree_iter_t *my_pt_iter = NULL; | |
862 int result = 0; | |
863 | |
864 if (!enqueue) | |
865 listSet(gtkDelPl, NULL); // delete playlist before "appending" | |
866 | |
867 if ((my_pt_iter = pt_iter_create(&my_playtree, config))) { | |
868 while ((filename = pt_iter_get_next_file(my_pt_iter)) != NULL) | |
869 // add it to end of list | |
870 if (import_file_into_gui(filename, 0)) | |
871 result = 1; | |
872 } | |
873 | |
874 uiCurr(); // update filename | |
875 uiGotoTheNext = 1; | |
876 | |
34069
5c505f79932d
Change handling for option "enqueue" in guiPlaylistInitialize().
ib
parents:
34068
diff
changeset
|
877 if (enqueue) |
5c505f79932d
Change handling for option "enqueue" in guiPlaylistInitialize().
ib
parents:
34068
diff
changeset
|
878 filename = NULL; // don't start playing |
33746 | 879 |
880 return result; | |
881 } | |
882 | |
883 // This function imports and inserts an playtree, that is created "on the fly", | |
884 // for example by parsing some MOV-Reference-File; or by loading an playlist | |
34070
2a95a82ea083
Revise part of the comment on guiPlaylistInitialize().
ib
parents:
34069
diff
changeset
|
885 // with "File Open". (The latter, actually, isn't allowed in MPlayer and thus |
2a95a82ea083
Revise part of the comment on guiPlaylistInitialize().
ib
parents:
34069
diff
changeset
|
886 // not working which is why this function won't get called for that reason.) |
33746 | 887 // The file which contained the playlist is thereby replaced with it's contents. |
33752 | 888 int guiPlaylistAdd(play_tree_t *my_playtree, m_config_t *config) |
33746 | 889 { |
890 play_tree_iter_t *my_pt_iter = NULL; | |
891 int result = 0; | |
892 plItem *save; | |
893 | |
894 save = (plItem *)listSet(gtkGetCurrPlItem, NULL); // save current item | |
895 | |
896 if ((my_pt_iter = pt_iter_create(&my_playtree, config))) { | |
897 while ((filename = pt_iter_get_next_file(my_pt_iter)) != NULL) | |
898 // insert it into the list and set plCurrent=new item | |
899 if (import_file_into_gui(filename, 1)) | |
900 result = 1; | |
901 | |
902 pt_iter_destroy(&my_pt_iter); | |
903 } | |
904 | |
905 if (save) | |
906 listSet(gtkSetCurrPlItem, save); | |
907 else | |
908 listSet(gtkSetCurrPlItem, plList); // go to head, if plList was empty before | |
909 | |
910 if (save && result) | |
911 listSet(gtkDelCurrPlItem, NULL); | |
912 | |
913 uiCurr(); // update filename | |
914 | |
915 return result; | |
916 } | |
917 | |
918 /* GUI -> MPlayer */ | |
919 | |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
920 void mplayer(int what, float value, void *data) |
23077 | 921 { |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
922 equalizer_t *eq = (equalizer_t *)data; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27393
diff
changeset
|
923 |
33765 | 924 switch (what) { |
32984 | 925 // subtitle |
926 | |
27393 | 927 #ifndef CONFIG_FREETYPE |
33766 | 928 case MPLAYER_SET_FONT_FACTOR: |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
929 font_factor = value; |
33763 | 930 mplayerLoadFont(); |
33744 | 931 break; |
23077 | 932 #else |
33766 | 933 case MPLAYER_SET_FONT_OUTLINE: |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
934 subtitle_font_thickness = (8.0f / 100.0f) * value; |
33763 | 935 mplayerLoadFont(); |
33744 | 936 break; |
32984 | 937 |
33766 | 938 case MPLAYER_SET_FONT_BLUR: |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
939 subtitle_font_radius = (8.0f / 100.0f) * value; |
33763 | 940 mplayerLoadFont(); |
33744 | 941 break; |
32984 | 942 |
33766 | 943 case MPLAYER_SET_FONT_TEXTSCALE: |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
944 text_font_scale_factor = value; |
33763 | 945 mplayerLoadFont(); |
33744 | 946 break; |
32984 | 947 |
33766 | 948 case MPLAYER_SET_FONT_OSDSCALE: |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
949 osd_font_scale_factor = value; |
33763 | 950 mplayerLoadFont(); |
33744 | 951 break; |
32984 | 952 |
33766 | 953 case MPLAYER_SET_FONT_ENCODING: |
33739 | 954 nfree(subtitle_font_encoding); |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
955 subtitle_font_encoding = gstrdup((char *)data); |
33763 | 956 mplayerLoadFont(); |
33744 | 957 break; |
32984 | 958 |
33766 | 959 case MPLAYER_SET_FONT_AUTOSCALE: |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
960 subtitle_autoscale = (int)value; |
33763 | 961 mplayerLoadFont(); |
33744 | 962 break; |
23077 | 963 #endif |
32984 | 964 |
27393 | 965 #ifdef CONFIG_ICONV |
33766 | 966 case MPLAYER_SET_SUB_ENCODING: |
33739 | 967 nfree(sub_cp); |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
968 sub_cp = gstrdup((char *)data); |
32984 | 969 break; |
23077 | 970 #endif |
32984 | 971 |
33766 | 972 case MPLAYER_SET_EXTRA_STEREO: |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
973 gtkAOExtraStereoMul = value; |
33555 | 974 if (guiInfo.afilter) |
975 af_control_any_rev(guiInfo.afilter, AF_CONTROL_ES_MUL | AF_CONTROL_SET, >kAOExtraStereoMul); | |
33744 | 976 break; |
32984 | 977 |
33766 | 978 case MPLAYER_SET_PANSCAN: |
32984 | 979 { |
980 mp_cmd_t *mp_cmd; | |
981 | |
982 mp_cmd = calloc(1, sizeof(*mp_cmd)); | |
983 mp_cmd->id = MP_CMD_PANSCAN; | |
984 mp_cmd->name = strdup("panscan"); | |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
985 mp_cmd->args[0].v.f = value; |
32984 | 986 mp_cmd->args[1].v.i = 1; |
987 mp_input_queue_cmd(mp_cmd); | |
988 } | |
33744 | 989 break; |
32984 | 990 |
33766 | 991 case MPLAYER_SET_AUTO_QUALITY: |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
992 auto_quality = (int)value; |
33744 | 993 break; |
32984 | 994 |
995 // set equalizers | |
996 | |
33766 | 997 case MPLAYER_SET_CONTRAST: |
33555 | 998 if (guiInfo.sh_video) |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
999 set_video_colors(guiInfo.sh_video, "contrast", (int)value); |
33744 | 1000 break; |
32984 | 1001 |
33766 | 1002 case MPLAYER_SET_BRIGHTNESS: |
33555 | 1003 if (guiInfo.sh_video) |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
1004 set_video_colors(guiInfo.sh_video, "brightness", (int)value); |
33744 | 1005 break; |
32984 | 1006 |
33766 | 1007 case MPLAYER_SET_HUE: |
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, "hue", (int)value); |
33744 | 1010 break; |
32984 | 1011 |
33766 | 1012 case MPLAYER_SET_SATURATION: |
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, "saturation", (int)value); |
33744 | 1015 break; |
32984 | 1016 |
33766 | 1017 case MPLAYER_SET_EQUALIZER: |
32984 | 1018 { |
23077 | 1019 af_control_ext_t tmp; |
32984 | 1020 |
1021 if (eq) { | |
1022 gtkEquChannels[eq->channel][eq->band] = eq->gain; | |
1023 tmp.ch = eq->channel; | |
1024 tmp.arg = gtkEquChannels[eq->channel]; | |
1025 | |
33555 | 1026 if (guiInfo.afilter) |
1027 af_control_any_rev(guiInfo.afilter, AF_CONTROL_EQUALIZER_GAIN | AF_CONTROL_SET, &tmp); | |
32984 | 1028 } else { |
33693
006a2db8bd55
Use unsigned index variable for comparison with array size.
ib
parents:
33692
diff
changeset
|
1029 unsigned int i; |
32984 | 1030 |
1031 memset(gtkEquChannels, 0, sizeof(gtkEquChannels)); | |
1032 | |
33555 | 1033 if (guiInfo.afilter) { |
33689
8d0290220239
Replace numeric constants for gtkEquChannels array size.
ib
parents:
33688
diff
changeset
|
1034 for (i = 0; i < FF_ARRAY_ELEMS(gtkEquChannels); i++) { |
32984 | 1035 tmp.ch = i; |
1036 tmp.arg = gtkEquChannels[i]; | |
33555 | 1037 af_control_any_rev(guiInfo.afilter, AF_CONTROL_EQUALIZER_GAIN | AF_CONTROL_SET, &tmp); |
32984 | 1038 } |
1039 } | |
1040 } | |
1041 | |
33744 | 1042 break; |
32984 | 1043 } |
33768 | 1044 |
1045 case MPLAYER_EXIT_GUI: | |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
1046 exit_player_with_rc((enum exit_reason)value, (enum exit_reason)value >= EXIT_ERROR); |
33768 | 1047 break; |
32984 | 1048 } |
23077 | 1049 } |
1050 | |
33763 | 1051 void mplayerLoadFont(void) |
33745 | 1052 { |
1053 #ifdef CONFIG_FREETYPE | |
1054 load_font_ft(vo_image_width, vo_image_height, &vo_font, font_name, osd_font_scale_factor); | |
1055 #else | |
1056 if (vo_font) { | |
1057 int i; | |
1058 | |
1059 free(vo_font->name); | |
1060 free(vo_font->fpath); | |
1061 | |
1062 for (i = 0; i < 16; i++) { | |
1063 if (vo_font->pic_a[i]) { | |
1064 free(vo_font->pic_a[i]->bmp); | |
1065 free(vo_font->pic_a[i]->pal); | |
1066 } | |
1067 } | |
1068 | |
1069 for (i = 0; i < 16; i++) { | |
1070 if (vo_font->pic_b[i]) { | |
1071 free(vo_font->pic_b[i]->bmp); | |
1072 free(vo_font->pic_b[i]->pal); | |
1073 } | |
1074 } | |
1075 | |
1076 free(vo_font); | |
1077 vo_font = NULL; | |
1078 } | |
1079 | |
1080 if (font_name) { | |
1081 vo_font = read_font_desc(font_name, font_factor, 0); | |
1082 | |
1083 if (!vo_font) | |
1084 gmp_msg(MSGT_GPLAYER, MSGL_ERR, MSGTR_CantLoadFont, font_name); | |
1085 } else { | |
1086 font_name = gstrdup(get_path("font/font.desc")); | |
1087 vo_font = read_font_desc(font_name, font_factor, 0); | |
1088 | |
1089 if (!vo_font) { | |
1090 nfree(font_name); | |
1091 font_name = gstrdup(MPLAYER_DATADIR "/font/font.desc"); | |
1092 vo_font = read_font_desc(font_name, font_factor, 0); | |
1093 } | |
1094 } | |
1095 #endif | |
1096 } | |
1097 | |
33790
ab6d06f5b98b
Add const to some string pointer arguments that will not be modified.
ib
parents:
33775
diff
changeset
|
1098 void mplayerLoadSubtitle(const char *name) |
33745 | 1099 { |
33773 | 1100 if (guiInfo.Playing == 0) |
33745 | 1101 return; |
1102 | |
1103 if (subdata) { | |
1104 mp_msg(MSGT_GPLAYER, MSGL_INFO, MSGTR_DeletingSubtitles); | |
1105 | |
1106 sub_free(subdata); | |
1107 subdata = NULL; | |
1108 vo_sub = NULL; | |
1109 | |
1110 if (vo_osd_list) { | |
1111 int len; | |
1112 mp_osd_obj_t *osd; | |
1113 | |
1114 osd = vo_osd_list; | |
1115 | |
1116 while (osd) { | |
1117 if (osd->type == OSDTYPE_SUBTITLE) | |
1118 break; | |
1119 | |
1120 osd = osd->next; | |
1121 } | |
1122 | |
1123 if (osd && (osd->flags & OSDFLAG_VISIBLE)) { | |
1124 len = osd->stride * (osd->bbox.y2 - osd->bbox.y1); | |
1125 memset(osd->bitmap_buffer, 0, len); | |
1126 memset(osd->alpha_buffer, 0, len); | |
1127 } | |
1128 } | |
1129 } | |
1130 | |
1131 if (name) { | |
1132 mp_msg(MSGT_GPLAYER, MSGL_INFO, MSGTR_LoadingSubtitles, name); | |
1133 | |
33775 | 1134 subdata = sub_read_file(name, (guiInfo.sh_video ? guiInfo.sh_video->fps : 0)); |
33745 | 1135 |
1136 if (!subdata) | |
1137 gmp_msg(MSGT_GPLAYER, MSGL_ERR, MSGTR_CantLoadSub, name); | |
1138 | |
1139 sub_name = (malloc(2 * sizeof(char *))); // when mplayer will be restarted | |
1140 sub_name[0] = strdup(name); // sub_name[0] will be read | |
1141 sub_name[1] = NULL; | |
1142 } | |
1143 | |
1144 update_set_of_subtitles(); | |
1145 } | |
1146 | |
33023 | 1147 // NOTE TO MYSELF: This function is nonsense. |
33289 | 1148 // MPlayer should pass messages to the GUI |
1149 // which must decide then which message has | |
1150 // to be shown (MSGL_FATAL, for example). | |
1151 // But with this function it is at least | |
1152 // possible to show GUI's very critical or | |
1153 // abort messages. | |
33023 | 1154 void gmp_msg(int mod, int lev, const char *format, ...) |
1155 { | |
1156 char msg[512]; | |
1157 va_list va; | |
1158 | |
1159 va_start(va, format); | |
1160 vsnprintf(msg, sizeof(msg), format, va); | |
1161 va_end(va); | |
1162 | |
1163 mp_msg(mod, lev, msg); | |
1164 | |
1165 if (mp_msg_test(mod, lev)) | |
1166 gtkMessageBox(GTK_MB_FATAL, msg); | |
1167 } |