Mercurial > mplayer.hg
annotate gui/interface.c @ 36295:0bd0297b073a
Handle special argument -1 to switch_ratio as intended.
Reset to the original aspect ratio that would have been used for
the very first rescaling rather than to the display size ratio.
This will now handle anamorphic videos correctly as well.
author | ib |
---|---|
date | Thu, 01 Aug 2013 21:18:14 +0000 |
parents | a73127c786e8 |
children | 28ea255e40ce |
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" |
35525 | 25 #include "app/app.h" |
26 #include "app/gui.h" | |
35529 | 27 #include "dialog/dialog.h" |
32984 | 28 #include "skin/skin.h" |
35772 | 29 #include "ui/actions.h" |
35528 | 30 #include "ui/ui.h" |
33741 | 31 #include "util/list.h" |
33739 | 32 #include "util/mem.h" |
33737 | 33 #include "util/string.h" |
23077 | 34 #include "wm/ws.h" |
35 #include "wm/wsxdnd.h" | |
36 | |
37 #include "access_mpcontext.h" | |
35462 | 38 #include "codec-cfg.h" |
32984 | 39 #include "config.h" |
23077 | 40 #include "help_mp.h" |
36032 | 41 #include "mixer.h" |
42 #include "mp_msg.h" | |
43 #include "mpcommon.h" | |
44 #include "mplayer.h" | |
45 #include "path.h" | |
32984 | 46 #include "input/input.h" |
47 #include "libaf/equalizer.h" | |
33689
8d0290220239
Replace numeric constants for gtkEquChannels array size.
ib
parents:
33688
diff
changeset
|
48 #include "libavutil/common.h" |
32984 | 49 #include "libmpcodecs/dec_audio.h" |
50 #include "libmpcodecs/dec_video.h" | |
51 #include "libmpcodecs/vd.h" | |
52 #include "libmpcodecs/vf.h" | |
33398 | 53 #include "libvo/video_out.h" |
32984 | 54 #include "libvo/x11_common.h" |
36292 | 55 #include "osdep/timer.h" |
27341
e7c989f7a7c9
Start unifying names of internal preprocessor directives.
diego
parents:
26458
diff
changeset
|
56 #ifdef CONFIG_DVDREAD |
23077 | 57 #include "stream/stream_dvd.h" |
58 #endif | |
35523 | 59 #include "sub/font_load.h" |
60 #include "sub/sub.h" | |
61 #include "sub/subreader.h" | |
23077 | 62 |
35524 | 63 /** |
64 * @brief Initialize interface data. | |
65 */ | |
33662 | 66 guiInterface_t guiInfo = { |
35430
2d55540614a9
Move uiProcessNextInPlaylist to the guiInfo structure.
ib
parents:
35429
diff
changeset
|
67 .StreamType = STREAMTYPE_DUMMY, |
2d55540614a9
Move uiProcessNextInPlaylist to the guiInfo structure.
ib
parents:
35429
diff
changeset
|
68 .Balance = 50.0f, |
35493 | 69 .PlaylistNext = True |
33662 | 70 }; |
23077 | 71 |
36049 | 72 static int guiInitialized; |
33265 | 73 |
33745 | 74 /* MPlayer -> GUI */ |
75 | |
35524 | 76 /** |
77 * @brief Initialize and start the GUI. | |
78 */ | |
32984 | 79 void guiInit(void) |
23077 | 80 { |
35794 | 81 int ret; |
34664
4df4d842d5fb
Remove global variable pointing to current playlist item.
ib
parents:
34663
diff
changeset
|
82 plItem *playlist; |
23077 | 83 |
33530 | 84 mp_msg(MSGT_GPLAYER, MSGL_V, "GUI init.\n"); |
85 | |
35627 | 86 /* check options */ |
87 | |
34403 | 88 if (!cdrom_device) |
89 cdrom_device = strdup(DEFAULT_CDROM_DEVICE); | |
90 if (!dvd_device) | |
91 dvd_device = strdup(DEFAULT_DVD_DEVICE); | |
35625 | 92 #ifdef CONFIG_DXR3 |
32984 | 93 if (!gtkDXR3Device) |
94 gtkDXR3Device = strdup("/dev/em8300-0"); | |
35625 | 95 #endif |
32927 | 96 |
32984 | 97 if (stream_cache_size > 0) { |
35493 | 98 gtkCacheOn = True; |
32984 | 99 gtkCacheSize = stream_cache_size; |
100 } else if (stream_cache_size == 0) | |
35493 | 101 gtkCacheOn = False; |
32984 | 102 |
103 if (autosync && (autosync != gtkAutoSync)) { | |
35493 | 104 gtkAutoSyncOn = True; |
32984 | 105 gtkAutoSync = autosync; |
106 } | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27393
diff
changeset
|
107 |
32984 | 108 gtkASS.enabled = ass_enabled; |
109 gtkASS.use_margins = ass_use_margins; | |
110 gtkASS.top_margin = ass_top_margin; | |
111 gtkASS.bottom_margin = ass_bottom_margin; | |
23077 | 112 |
35627 | 113 /* initialize graphical user interfaces */ |
114 | |
35681
80c5c89f77d6
Cosmetic: Rename ws functions for the sake of consistency.
ib
parents:
35678
diff
changeset
|
115 wsInit(mDisplay); |
35629 | 116 gtkInit(mDisplayName); |
32984 | 117 |
34684 | 118 /* load skin */ |
32984 | 119 |
36043 | 120 skinDirInHome = get_path("skins"); |
121 skinDirInData = MPLAYER_DATADIR "/skins"; | |
32984 | 122 |
33985 | 123 mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[interface] skin directory #1: %s\n", skinDirInHome); |
36043 | 124 mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[interface] skin directory #2: %s\n", skinDirInData); |
32984 | 125 |
126 if (!skinName) | |
127 skinName = strdup("default"); | |
128 | |
35794 | 129 ret = skinRead(skinName); |
32984 | 130 |
35794 | 131 if (ret == -1 && strcmp(skinName, "default") != 0) { |
32984 | 132 mp_msg(MSGT_GPLAYER, MSGL_WARN, MSGTR_SKIN_SKINCFG_SelectedSkinNotFound, skinName); |
133 | |
134 skinName = strdup("default"); | |
35794 | 135 ret = skinRead(skinName); |
32984 | 136 } |
137 | |
35794 | 138 switch (ret) { |
32984 | 139 case -1: |
33024 | 140 gmp_msg(MSGT_GPLAYER, MSGL_FATAL, MSGTR_SKIN_SKINCFG_SkinNotFound, skinName); |
33768 | 141 mplayer(MPLAYER_EXIT_GUI, EXIT_ERROR, 0); |
23077 | 142 |
32984 | 143 case -2: |
33025 | 144 gmp_msg(MSGT_GPLAYER, MSGL_FATAL, MSGTR_SKIN_SKINCFG_SkinCfgError, skinName); |
33768 | 145 mplayer(MPLAYER_EXIT_GUI, EXIT_ERROR, 0); |
32984 | 146 } |
147 | |
34684 | 148 /* initialize windows */ |
32984 | 149 |
150 if (gui_save_pos) { | |
33218
f0c2a62e3e89
Position windows initially at coordinates given in skin file.
ib
parents:
33053
diff
changeset
|
151 if (gui_main_pos_x != -3) |
33555 | 152 guiApp.main.x = gui_main_pos_x; |
33218
f0c2a62e3e89
Position windows initially at coordinates given in skin file.
ib
parents:
33053
diff
changeset
|
153 if (gui_main_pos_y != -3) |
33555 | 154 guiApp.main.y = gui_main_pos_y; |
34697 | 155 if (gui_video_pos_x != -3) |
156 guiApp.video.x = gui_video_pos_x; | |
157 if (gui_video_pos_y != -3) | |
158 guiApp.video.y = gui_video_pos_y; | |
32984 | 159 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27393
diff
changeset
|
160 |
32984 | 161 if (WinID > 0) { |
34697 | 162 guiApp.videoWindow.Parent = WinID; |
163 guiApp.video.x = 0; | |
164 guiApp.video.y = 0; | |
32984 | 165 } |
23077 | 166 |
32984 | 167 if (guiWinID >= 0) |
33555 | 168 guiApp.mainWindow.Parent = guiWinID; |
23077 | 169 |
35780 | 170 uiMainInit(); // main window must be first! |
35781 | 171 uiVideoInit(); // video window must be second! |
35780 | 172 uiPlaybarInit(); |
173 uiMenuInit(); | |
23077 | 174 |
35788
e3dcd5854344
Move video window initialization code to uiVideoInit().
ib
parents:
35781
diff
changeset
|
175 WinID = guiApp.videoWindow.WindowID; |
32984 | 176 |
33555 | 177 btnModify(evSetVolume, guiInfo.Volume); |
178 btnModify(evSetBalance, guiInfo.Balance); | |
179 btnModify(evSetMoviePosition, guiInfo.Position); | |
23077 | 180 |
35681
80c5c89f77d6
Cosmetic: Rename ws functions for the sake of consistency.
ib
parents:
35678
diff
changeset
|
181 wsWindowVisibility(&guiApp.mainWindow, wsShowWindow); |
23077 | 182 |
32984 | 183 if (gtkShowVideoWindow) { |
35681
80c5c89f77d6
Cosmetic: Rename ws functions for the sake of consistency.
ib
parents:
35678
diff
changeset
|
184 wsWindowVisibility(&guiApp.videoWindow, wsShowWindow); |
33960 | 185 |
35654 | 186 guiInfo.VideoWindow = True; |
23077 | 187 |
33960 | 188 if (gtkLoadFullscreen) |
33555 | 189 uiFullScreen(); |
33960 | 190 } else |
35681
80c5c89f77d6
Cosmetic: Rename ws functions for the sake of consistency.
ib
parents:
35678
diff
changeset
|
191 wsWindowBackground(&guiApp.videoWindow, 0, 0, 0); |
32984 | 192 |
33960 | 193 if (gtkLoadFullscreen) |
33978 | 194 btnSet(evFullScreen, btnPressed); |
32984 | 195 |
33615
1f9a31d4f114
Replace all playback integer constants by their symbolic constants.
ib
parents:
33614
diff
changeset
|
196 guiInfo.Playing = GUI_STOP; |
33609 | 197 |
34664
4df4d842d5fb
Remove global variable pointing to current playlist item.
ib
parents:
34663
diff
changeset
|
198 playlist = listMgr(PLAYLIST_ITEM_GET_CURR, 0); |
4df4d842d5fb
Remove global variable pointing to current playlist item.
ib
parents:
34663
diff
changeset
|
199 |
4df4d842d5fb
Remove global variable pointing to current playlist item.
ib
parents:
34663
diff
changeset
|
200 if (playlist && !filename) { |
35452 | 201 uiSetFile(playlist->path, playlist->name, STREAMTYPE_FILE); |
35488
9ef9131adfe5
Provide a number of tracks information for files in playlists.
ib
parents:
35484
diff
changeset
|
202 guiInfo.Tracks = (int)listMgr(PLAYLIST_ITEM_GET_POS, 0); |
35489 | 203 guiInfo.Track = 1; |
204 filename = NULL; // don't start playing | |
34064 | 205 } |
32984 | 206 |
207 if (subdata) | |
33897 | 208 setdup(&guiInfo.SubtitleFilename, subdata->filename); |
32984 | 209 |
33763 | 210 mplayerLoadFont(); |
33265 | 211 |
36049 | 212 guiInitialized = True; |
23077 | 213 } |
214 | |
35524 | 215 /** |
216 * @brief Stop and finalize the GUI. | |
217 */ | |
32984 | 218 void guiDone(void) |
23077 | 219 { |
36049 | 220 if (guiInitialized) { |
33308 | 221 if (gui_save_pos) { |
34698 | 222 gui_main_pos_x = guiApp.mainWindow.X; |
223 gui_main_pos_y = guiApp.mainWindow.Y; | |
35664 | 224 gui_video_pos_x = guiApp.videoWindow.X; |
225 gui_video_pos_y = guiApp.videoWindow.Y; | |
33308 | 226 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27393
diff
changeset
|
227 |
33308 | 228 ass_enabled = gtkASS.enabled; |
229 ass_use_margins = gtkASS.use_margins; | |
230 ass_top_margin = gtkASS.top_margin; | |
231 ass_bottom_margin = gtkASS.bottom_margin; | |
23077 | 232 |
33308 | 233 cfg_write(); |
35746 | 234 |
35796
497a1c45a597
Add uiMainDone(), uiVideoDone(), uiPlaybarDone() and uiMenuDone().
ib
parents:
35794
diff
changeset
|
235 if (guiApp.menuIsPresent) |
497a1c45a597
Add uiMainDone(), uiVideoDone(), uiPlaybarDone() and uiMenuDone().
ib
parents:
35794
diff
changeset
|
236 uiMenuDone(); |
497a1c45a597
Add uiMainDone(), uiVideoDone(), uiPlaybarDone() and uiMenuDone().
ib
parents:
35794
diff
changeset
|
237 if (guiApp.playbarIsPresent) |
497a1c45a597
Add uiMainDone(), uiVideoDone(), uiPlaybarDone() and uiMenuDone().
ib
parents:
35794
diff
changeset
|
238 uiPlaybarDone(); |
497a1c45a597
Add uiMainDone(), uiVideoDone(), uiPlaybarDone() and uiMenuDone().
ib
parents:
35794
diff
changeset
|
239 |
497a1c45a597
Add uiMainDone(), uiVideoDone(), uiPlaybarDone() and uiMenuDone().
ib
parents:
35794
diff
changeset
|
240 uiVideoDone(); |
497a1c45a597
Add uiMainDone(), uiVideoDone(), uiPlaybarDone() and uiMenuDone().
ib
parents:
35794
diff
changeset
|
241 uiMainDone(); |
35746 | 242 |
35681
80c5c89f77d6
Cosmetic: Rename ws functions for the sake of consistency.
ib
parents:
35678
diff
changeset
|
243 wsDone(); |
33307 | 244 } |
33263 | 245 |
35549 | 246 uiUnsetFile(); |
34663 | 247 listMgr(PLAYLIST_DELETE, 0); |
248 listMgr(URLLIST_DELETE, 0); | |
35550 | 249 appFreeStruct(); |
33542 | 250 free(guiIcon.collection); |
33307 | 251 |
252 if (gui_conf) { | |
253 m_config_free(gui_conf); | |
254 gui_conf = NULL; | |
255 } | |
33530 | 256 |
257 mp_msg(MSGT_GPLAYER, MSGL_V, "GUI done.\n"); | |
33263 | 258 } |
259 | |
32984 | 260 static void add_vf(char *str) |
23077 | 261 { |
32984 | 262 void *p; |
263 | |
264 if (vf_settings) { | |
265 int i = 0; | |
266 | |
267 while (vf_settings[i].name) { | |
268 if (!gstrcmp(vf_settings[i++].name, str)) { | |
269 i = -1; | |
270 break; | |
271 } | |
272 } | |
273 | |
274 if (i != -1) { | |
275 p = realloc(vf_settings, (i + 2) * sizeof(m_obj_settings_t)); | |
32712 | 276 |
32984 | 277 if (!p) |
278 return; | |
279 | |
280 vf_settings = p; | |
281 vf_settings[i].name = strdup(str); | |
282 vf_settings[i].attribs = NULL; | |
283 vf_settings[i + 1].name = NULL; | |
284 } | |
285 } else { | |
286 vf_settings = malloc(2 * sizeof(m_obj_settings_t)); | |
287 vf_settings[0].name = strdup(str); | |
288 vf_settings[0].attribs = NULL; | |
289 vf_settings[1].name = NULL; | |
32712 | 290 } |
291 | |
33530 | 292 mp_msg(MSGT_GPLAYER, MSGL_INFO, MSGTR_AddingVideoFilter, str); |
23077 | 293 } |
294 | |
35524 | 295 /** |
296 * @brief Issue a command to the GUI. | |
297 * | |
298 * @note The GUI is controlled by giving it commands. | |
299 * | |
300 * @param what command to be performed | |
301 * @param data pointer to data needed for the command | |
302 * | |
303 * @return #True (ok) or #False (error) | |
304 */ | |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
305 int gui(int what, void *data) |
23077 | 306 { |
33685
ca6c9a80a062
Make assignments to variables in guiGetEvent() only if needed.
ib
parents:
33683
diff
changeset
|
307 stream_t *stream; |
27341
e7c989f7a7c9
Start unifying names of internal preprocessor directives.
diego
parents:
26458
diff
changeset
|
308 #ifdef CONFIG_DVDREAD |
33687 | 309 dvd_priv_t *dvd; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27393
diff
changeset
|
310 #endif |
34339 | 311 int msg, state; |
35540 | 312 mixer_t *mixer = NULL; |
313 plItem *next = NULL; | |
23077 | 314 |
33726 | 315 switch (what) { |
33731
81f71d910333
Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents:
33730
diff
changeset
|
316 case GUI_SET_CONTEXT: |
35541 | 317 |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
318 guiInfo.mpcontext = data; |
23077 | 319 break; |
32984 | 320 |
33731
81f71d910333
Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents:
33730
diff
changeset
|
321 case GUI_SET_STATE: |
32984 | 322 |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
323 switch ((int)data) { |
33631 | 324 case GUI_STOP: |
33614 | 325 case GUI_PLAY: |
35681
80c5c89f77d6
Cosmetic: Rename ws functions for the sake of consistency.
ib
parents:
35678
diff
changeset
|
326 // if ( !gtkShowVideoWindow ) wsWindowVisibility( &guiApp.videoWindow,wsHideWindow ); |
33614 | 327 case GUI_PAUSE: |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
328 guiInfo.Playing = (int)data; |
32984 | 329 break; |
330 } | |
331 | |
33555 | 332 uiState(); |
23077 | 333 break; |
32984 | 334 |
36294 | 335 case GUI_REDRAW: |
336 | |
337 uiEvent(ivRedraw, 0); | |
35541 | 338 |
33901 | 339 if (!guiInfo.Playing || !guiInfo.VideoWindow) |
35681
80c5c89f77d6
Cosmetic: Rename ws functions for the sake of consistency.
ib
parents:
35678
diff
changeset
|
340 wsEvents(); |
36068 | 341 /* else it's handled by the vo driver calling GUI_HANDLE_X_EVENT */ |
35541 | 342 |
35681
80c5c89f77d6
Cosmetic: Rename ws functions for the sake of consistency.
ib
parents:
35678
diff
changeset
|
343 wsMouseAutohide(); |
36070 | 344 gtkEvents(); |
35541 | 345 |
33732 | 346 break; |
347 | |
33731
81f71d910333
Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents:
33730
diff
changeset
|
348 case GUI_RUN_COMMAND: |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
349 |
33985 | 350 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
|
351 |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
352 switch ((int)data) { |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
353 case MP_CMD_VO_FULLSCREEN: |
35773 | 354 uiEvent(evFullScreen, True); |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
355 break; |
33696
24d919fb6778
Don't let MPlayer directly call user interface functions.
ib
parents:
33695
diff
changeset
|
356 |
24d919fb6778
Don't let MPlayer directly call user interface functions.
ib
parents:
33695
diff
changeset
|
357 case MP_CMD_PLAY_TREE_STEP: |
35773 | 358 uiEvent(evNext, 0); |
33696
24d919fb6778
Don't let MPlayer directly call user interface functions.
ib
parents:
33695
diff
changeset
|
359 break; |
24d919fb6778
Don't let MPlayer directly call user interface functions.
ib
parents:
33695
diff
changeset
|
360 |
24d919fb6778
Don't let MPlayer directly call user interface functions.
ib
parents:
33695
diff
changeset
|
361 case -MP_CMD_PLAY_TREE_STEP: |
35773 | 362 uiEvent(evPrev, 0); |
33696
24d919fb6778
Don't let MPlayer directly call user interface functions.
ib
parents:
33695
diff
changeset
|
363 break; |
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_STOP: |
35773 | 366 uiEvent(evStop, 0); |
33696
24d919fb6778
Don't let MPlayer directly call user interface functions.
ib
parents:
33695
diff
changeset
|
367 break; |
33697 | 368 |
369 case MP_CMD_QUIT: | |
35773 | 370 uiEvent(evExit, 0); |
33697 | 371 break; |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
372 } |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
373 |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
374 break; |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
375 |
34339 | 376 case GUI_RUN_MESSAGE: |
35541 | 377 |
34339 | 378 mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[interface] GUI_RUN_MESSAGE: %s\n", (const char *)data); |
379 msg = appFindMessage((const char *)data); | |
35541 | 380 |
34458 | 381 if ((msg == evMenu) || appFindItem(msg)) |
35773 | 382 uiEvent(msg, 0); |
35541 | 383 |
34339 | 384 break; |
385 | |
33731
81f71d910333
Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents:
33730
diff
changeset
|
386 case GUI_PREPARE: |
32984 | 387 |
36292 | 388 uiEvent(ivRedraw, True); |
35681
80c5c89f77d6
Cosmetic: Rename ws functions for the sake of consistency.
ib
parents:
35678
diff
changeset
|
389 wsMouseVisibility(&guiApp.videoWindow, wsHideMouseCursor); |
36292 | 390 usec_sleep(20000); |
391 wsEvents(); | |
32984 | 392 |
34052 | 393 if (guiInfo.NewPlay == GUI_FILE_NEW) { |
394 audio_id = -1; | |
395 video_id = -1; | |
396 dvdsub_id = -1; | |
397 vobsub_id = -1; | |
398 | |
399 stream_cache_size = -1; | |
400 autosync = 0; | |
401 force_fps = 0; | |
402 } | |
34032 | 403 |
33555 | 404 switch (guiInfo.StreamType) { |
34073 | 405 case STREAMTYPE_FILE: |
406 case STREAMTYPE_STREAM: | |
35484 | 407 filename = guiInfo.Filename; |
32984 | 408 break; |
409 | |
34387 | 410 case STREAMTYPE_CDDA: |
411 { | |
412 char tmp[512]; | |
413 | |
414 sprintf(tmp, "cdda://%d", guiInfo.Track); | |
35452 | 415 uiSetFile(NULL, tmp, SAME_STREAMTYPE); |
34387 | 416 } |
417 break; | |
418 | |
32984 | 419 case STREAMTYPE_VCD: |
420 { | |
421 char tmp[512]; | |
422 | |
33874 | 423 sprintf(tmp, "vcd://%d", guiInfo.Track); |
35452 | 424 uiSetFile(NULL, tmp, SAME_STREAMTYPE); |
32984 | 425 } |
426 break; | |
427 | |
428 case STREAMTYPE_DVD: | |
429 { | |
430 char tmp[512]; | |
431 | |
33876
4789b8eed97e
Get rid of a bunch of needless or redundant guiInfo members.
ib
parents:
33874
diff
changeset
|
432 sprintf(tmp, "dvd://%d", guiInfo.Track); |
35452 | 433 uiSetFile(NULL, tmp, SAME_STREAMTYPE); |
32984 | 434 } |
35168 | 435 #ifdef CONFIG_DVDREAD |
33555 | 436 dvd_chapter = guiInfo.Chapter; |
437 dvd_angle = guiInfo.Angle; | |
35168 | 438 #endif |
32984 | 439 break; |
440 } | |
441 | |
34684 | 442 /* video opts */ |
32984 | 443 |
444 if (!video_driver_list) { | |
445 int i = 0; | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27393
diff
changeset
|
446 |
32984 | 447 while (video_out_drivers[i++]) { |
448 if (video_out_drivers[i - 1]->control(VOCTRL_GUISUPPORT, NULL) == VO_TRUE) { | |
34610 | 449 listSet(&video_driver_list, (char *)video_out_drivers[i - 1]->info->short_name); |
32984 | 450 break; |
451 } | |
452 } | |
453 } | |
454 | |
455 if (!video_driver_list && !video_driver_list[0]) { | |
33024 | 456 gmp_msg(MSGT_GPLAYER, MSGL_FATAL, MSGTR_IDFGCVD); |
33768 | 457 mplayer(MPLAYER_EXIT_GUI, EXIT_ERROR, 0); |
32984 | 458 } |
459 | |
460 { | |
461 int i = 0; | |
462 | |
33901 | 463 guiInfo.VideoWindow = True; |
32984 | 464 |
465 while (video_out_drivers[i++]) { | |
466 if (video_out_drivers[i - 1]->control(VOCTRL_GUISUPPORT, NULL) == VO_TRUE) { | |
467 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 | 468 guiInfo.VideoWindow = False; |
32984 | 469 break; |
470 } | |
471 } | |
472 } | |
473 } | |
474 | |
475 if (video_driver_list && !gstrcmp(video_driver_list[0], "dxr3")) | |
33555 | 476 if (guiInfo.StreamType != STREAMTYPE_DVD && guiInfo.StreamType != STREAMTYPE_VCD) |
32984 | 477 if (gtkVfLAVC) |
478 add_vf("lavc"); | |
479 | |
480 if (gtkVfPP) | |
481 add_vf("pp"); | |
482 | |
34684 | 483 /* audio opts */ |
32984 | 484 |
485 // if ( ao_plugin_cfg.plugin_list ) { free( ao_plugin_cfg.plugin_list ); ao_plugin_cfg.plugin_list=NULL; } | |
486 if (gtkAONorm) | |
34610 | 487 listRepl(&af_cfg.list, "volnorm", "volnorm"); |
32984 | 488 |
489 if (gtkEnableAudioEqualizer) | |
34610 | 490 listRepl(&af_cfg.list, "equalizer", "equalizer"); |
32984 | 491 |
492 if (gtkAOExtraStereo) { | |
493 char *name; | |
494 | |
495 name = malloc(12 + 20 + 1); | |
496 snprintf(name, 12 + 20, "extrastereo=%f", gtkAOExtraStereoMul); | |
497 name[12 + 20] = 0; | |
34610 | 498 listRepl(&af_cfg.list, "extrastereo", name); |
32984 | 499 free(name); |
500 } | |
501 | |
502 if (audio_driver_list && !gstrncmp(audio_driver_list[0], "oss", 3)) { | |
503 mixer_device = gtkAOOSSMixer; | |
504 mixer_channel = gtkAOOSSMixerChannel; | |
505 | |
506 if (gtkAOOSSDevice) { | |
34625 | 507 char *tmp; |
34624 | 508 |
32984 | 509 tmp = calloc(1, strlen(gtkAOOSSDevice) + 7); |
510 sprintf(tmp, "oss:%s", gtkAOOSSDevice); | |
34625 | 511 listSet(&audio_driver_list, tmp); |
512 free(tmp); | |
34624 | 513 } |
32984 | 514 } |
515 | |
516 if (audio_driver_list && !gstrncmp(audio_driver_list[0], "alsa", 4)) { | |
517 mixer_device = gtkAOALSAMixer; | |
518 mixer_channel = gtkAOALSAMixerChannel; | |
519 | |
520 if (gtkAOALSADevice) { | |
34625 | 521 char *tmp; |
34624 | 522 |
32984 | 523 tmp = calloc(1, strlen(gtkAOALSADevice) + 14); |
524 sprintf(tmp, "alsa:device=%s", gtkAOALSADevice); | |
34625 | 525 listSet(&audio_driver_list, tmp); |
526 free(tmp); | |
34624 | 527 } |
32984 | 528 } |
529 | |
530 if (audio_driver_list && !gstrncmp(audio_driver_list[0], "sdl", 3)) { | |
34624 | 531 if (gtkAOSDLDriver) { |
34625 | 532 char *tmp; |
32984 | 533 |
534 tmp = calloc(1, strlen(gtkAOSDLDriver) + 10); | |
535 sprintf(tmp, "sdl:%s", gtkAOSDLDriver); | |
34625 | 536 listSet(&audio_driver_list, tmp); |
537 free(tmp); | |
34624 | 538 } |
32984 | 539 } |
540 | |
541 if (audio_driver_list && !gstrncmp(audio_driver_list[0], "esd", 3)) { | |
34624 | 542 if (gtkAOESDDevice) { |
34625 | 543 char *tmp; |
32984 | 544 |
545 tmp = calloc(1, strlen(gtkAOESDDevice) + 10); | |
546 sprintf(tmp, "esd:%s", gtkAOESDDevice); | |
34625 | 547 listSet(&audio_driver_list, tmp); |
548 free(tmp); | |
34624 | 549 } |
32984 | 550 } |
551 | |
34684 | 552 /* subtitle */ |
32984 | 553 |
33897 | 554 // subdata->filename=gstrdup( guiInfo.SubtitleFilename ); |
32984 | 555 stream_dump_type = 0; |
556 | |
557 if (gtkSubDumpMPSub) | |
558 stream_dump_type = 4; | |
559 | |
560 if (gtkSubDumpSrt) | |
561 stream_dump_type = 6; | |
562 | |
35493 | 563 gtkSubDumpMPSub = gtkSubDumpSrt = False; |
33763 | 564 mplayerLoadFont(); |
23077 | 565 |
34684 | 566 /* misc */ |
32984 | 567 |
568 if (gtkCacheOn) | |
569 stream_cache_size = gtkCacheSize; | |
570 | |
571 if (gtkAutoSyncOn) | |
572 autosync = gtkAutoSync; | |
23077 | 573 |
33897 | 574 if (guiInfo.AudioFilename) |
575 audio_stream = gstrdup(guiInfo.AudioFilename); | |
33894 | 576 else if (guiInfo.NewPlay == GUI_FILE_NEW) |
33739 | 577 nfree(audio_stream); |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27393
diff
changeset
|
578 |
32984 | 579 // audio_stream = NULL; |
580 | |
33555 | 581 guiInfo.NewPlay = 0; |
23077 | 582 |
32984 | 583 ass_enabled = gtkASS.enabled; |
584 ass_use_margins = gtkASS.use_margins; | |
585 ass_top_margin = gtkASS.top_margin; | |
23077 | 586 ass_bottom_margin = gtkASS.bottom_margin; |
587 | |
32984 | 588 break; |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
589 |
33731
81f71d910333
Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents:
33730
diff
changeset
|
590 case GUI_SET_STREAM: |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
591 |
34859 | 592 if (guiInfo.StreamType == STREAMTYPE_PLAYLIST) |
593 guiInfo.mpcontext->file_format = DEMUXER_TYPE_PLAYLIST; | |
594 | |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
595 stream = data; |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
596 guiInfo.StreamType = stream->type; |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
597 |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
598 switch (guiInfo.StreamType) { |
34424 | 599 case STREAMTYPE_FILE: |
600 case STREAMTYPE_STREAM: | |
35488
9ef9131adfe5
Provide a number of tracks information for files in playlists.
ib
parents:
35484
diff
changeset
|
601 guiInfo.Tracks = (int)listMgr(PLAYLIST_ITEM_GET_POS, 0); |
34424 | 602 break; |
603 | |
34387 | 604 case STREAMTYPE_CDDA: |
605 guiInfo.Tracks = 0; | |
606 stream_control(stream, STREAM_CTRL_GET_NUM_TITLES, &guiInfo.Tracks); | |
607 break; | |
608 | |
34077 | 609 case STREAMTYPE_VCD: |
610 guiInfo.Tracks = 0; | |
34388
9ee95c78e85f
Replace VCD's STREAM_CTRL_GET_NUM_CHAPTERS by STREAM_CTRL_GET_NUM_TITLES.
ib
parents:
34387
diff
changeset
|
611 stream_control(stream, STREAM_CTRL_GET_NUM_TITLES, &guiInfo.Tracks); |
34077 | 612 break; |
613 | |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
614 case STREAMTYPE_DVD: |
34389
b2d661762e90
Retrieve DVD's titles, chapters and angles by stream control commands.
ib
parents:
34388
diff
changeset
|
615 guiInfo.Tracks = 0; |
b2d661762e90
Retrieve DVD's titles, chapters and angles by stream control commands.
ib
parents:
34388
diff
changeset
|
616 stream_control(stream, STREAM_CTRL_GET_NUM_TITLES, &guiInfo.Tracks); |
b2d661762e90
Retrieve DVD's titles, chapters and angles by stream control commands.
ib
parents:
34388
diff
changeset
|
617 guiInfo.Chapters = 0; |
b2d661762e90
Retrieve DVD's titles, chapters and angles by stream control commands.
ib
parents:
34388
diff
changeset
|
618 stream_control(stream, STREAM_CTRL_GET_NUM_CHAPTERS, &guiInfo.Chapters); |
b2d661762e90
Retrieve DVD's titles, chapters and angles by stream control commands.
ib
parents:
34388
diff
changeset
|
619 guiInfo.Angles = 0; |
b2d661762e90
Retrieve DVD's titles, chapters and angles by stream control commands.
ib
parents:
34388
diff
changeset
|
620 stream_control(stream, STREAM_CTRL_GET_NUM_ANGLES, &guiInfo.Angles); |
35170 | 621 guiInfo.Track = 0; |
622 stream_control(stream, STREAM_CTRL_GET_CURRENT_TITLE, &guiInfo.Track); | |
623 guiInfo.Track++; | |
35168 | 624 // guiInfo.Chapter will be set by mplayer |
625 guiInfo.Angle = 1; | |
626 stream_control(stream, STREAM_CTRL_GET_ANGLE, &guiInfo.Angle); | |
34454 | 627 #ifdef CONFIG_DVDREAD |
33730 | 628 dvd = stream->priv; |
33902 | 629 guiInfo.AudioStreams = dvd->nr_of_channels; |
630 memcpy(guiInfo.AudioStream, dvd->audio_streams, sizeof(dvd->audio_streams)); | |
631 guiInfo.Subtitles = dvd->nr_of_subtitles; | |
632 memcpy(guiInfo.Subtitle, dvd->subtitles, sizeof(dvd->subtitles)); | |
34454 | 633 #endif |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
634 break; |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
635 } |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
636 |
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_AFILTER: |
35541 | 640 |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
641 guiInfo.afilter = data; |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
642 break; |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
643 |
33731
81f71d910333
Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents:
33730
diff
changeset
|
644 case GUI_SET_VIDEO: |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
645 |
34684 | 646 /* video */ |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
647 |
36265 | 648 guiInfo.sh_video = data; |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
649 |
35462 | 650 nfree(guiInfo.CodecName); |
651 | |
652 if (guiInfo.sh_video) | |
653 guiInfo.CodecName = strdup(guiInfo.sh_video->codec->name); | |
654 | |
34074
360ed500a6e9
Set all buttons related to seek operations according to stream type.
ib
parents:
34073
diff
changeset
|
655 state = (guiInfo.StreamType == STREAMTYPE_STREAM ? btnDisabled : btnReleased); |
360ed500a6e9
Set all buttons related to seek operations according to stream type.
ib
parents:
34073
diff
changeset
|
656 btnSet(evForward10sec, state); |
360ed500a6e9
Set all buttons related to seek operations according to stream type.
ib
parents:
34073
diff
changeset
|
657 btnSet(evBackward10sec, state); |
360ed500a6e9
Set all buttons related to seek operations according to stream type.
ib
parents:
34073
diff
changeset
|
658 btnSet(evForward1min, state); |
360ed500a6e9
Set all buttons related to seek operations according to stream type.
ib
parents:
34073
diff
changeset
|
659 btnSet(evBackward1min, state); |
360ed500a6e9
Set all buttons related to seek operations according to stream type.
ib
parents:
34073
diff
changeset
|
660 btnSet(evForward10min, state); |
360ed500a6e9
Set all buttons related to seek operations according to stream type.
ib
parents:
34073
diff
changeset
|
661 btnSet(evBackward10min, state); |
360ed500a6e9
Set all buttons related to seek operations according to stream type.
ib
parents:
34073
diff
changeset
|
662 btnSet(evSetMoviePosition, state); |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
663 |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
664 if (video_driver_list && !gstrcmp(video_driver_list[0], "dxr3") && (((demuxer_t *)mpctx_get_demuxer(guiInfo.mpcontext))->file_format != DEMUXER_TYPE_MPEG_PS) && !gtkVfLAVC) { |
36036 | 665 gtkMessageBox(MSGBOX_FATAL, MSGTR_NEEDLAVC); |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
666 return False; |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
667 } |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
668 |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
669 break; |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
670 |
33731
81f71d910333
Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents:
33730
diff
changeset
|
671 case GUI_SET_AUDIO: |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
672 |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
673 guiInfo.AudioChannels = data ? ((sh_audio_t *)data)->channels : 0; |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
674 |
35454 | 675 if (data && !guiInfo.sh_video) { |
33901 | 676 guiInfo.VideoWindow = False; |
35454 | 677 guiInfo.VideoWidth = 0; |
678 guiInfo.VideoHeight = 0; | |
679 } | |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
680 |
33731
81f71d910333
Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents:
33730
diff
changeset
|
681 gui(GUI_SET_MIXER, 0); |
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 if (gtkEnableAudioEqualizer) { |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
684 equalizer_t eq; |
33693
006a2db8bd55
Use unsigned index variable for comparison with array size.
ib
parents:
33692
diff
changeset
|
685 unsigned int i, j; |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
686 |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
687 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
|
688 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
|
689 eq.channel = i; |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
690 eq.band = j; |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
691 eq.gain = gtkEquChannels[i][j]; |
33766 | 692 mplayer(MPLAYER_SET_EQUALIZER, 0, &eq); |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
693 } |
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 } |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
696 |
33960 | 697 // These must be done here (in the last call from MPlayer before |
698 // playback starts) and not in GUI_SETUP_VIDEO_WINDOW, because... | |
699 | |
700 // ...without video there will be no call to GUI_SETUP_VIDEO_WINDOW | |
701 if (!guiInfo.VideoWindow) { | |
35681
80c5c89f77d6
Cosmetic: Rename ws functions for the sake of consistency.
ib
parents:
35678
diff
changeset
|
702 wsWindowVisibility(&guiApp.videoWindow, wsHideWindow); |
33978 | 703 btnSet(evFullScreen, (gtkLoadFullscreen ? btnPressed : btnReleased)); |
33960 | 704 } |
705 | |
706 // ...option variable fullscreen determines whether MPlayer will handle | |
707 // the window given by WinID as fullscreen window (and will do aspect | |
708 // scaling then) or not - quite rubbish | |
709 fullscreen = gtkLoadFullscreen; | |
710 | |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
711 break; |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
712 |
33731
81f71d910333
Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents:
33730
diff
changeset
|
713 case GUI_SET_MIXER: |
35535 | 714 |
715 if (guiInfo.mpcontext) | |
716 mixer = mpctx_get_mixer(guiInfo.mpcontext); | |
717 | |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
718 if (mixer) { |
35537 | 719 float l, r, b; |
35542 | 720 static float last_balance = 50.0f; |
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 mixer_getvolume(mixer, &l, &r); |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
723 guiInfo.Volume = FFMAX(l, r); |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
724 btnModify(evSetVolume, guiInfo.Volume); |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
725 |
35537 | 726 mixer_getbalance(mixer, &b); |
35544 | 727 guiInfo.Balance = (b + 1.0) * 50.0; // transform -1..1 to 0..100 |
35542 | 728 |
729 if (guiInfo.Balance != last_balance) { | |
730 l = guiInfo.Volume * (100.0 - guiInfo.Balance) / 50.0; | |
731 r = guiInfo.Volume * guiInfo.Balance / 50.0; | |
732 mixer_setvolume(mixer, FFMIN(l, guiInfo.Volume), FFMIN(r, guiInfo.Volume)); | |
733 btnModify(evSetBalance, guiInfo.Balance); | |
734 last_balance = guiInfo.Balance; | |
735 } | |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
736 } |
35541 | 737 |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
738 break; |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
739 |
33731
81f71d910333
Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents:
33730
diff
changeset
|
740 case GUI_SETUP_VIDEO_WINDOW: |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
741 |
33901 | 742 guiInfo.VideoWidth = vo_dwidth; |
743 guiInfo.VideoHeight = vo_dheight; | |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
744 |
34697 | 745 if (!guiApp.videoWindow.isFullScreen || !guiApp.videoWindow.Mapped) { |
746 if (!guiApp.videoWindow.isFullScreen) | |
35681
80c5c89f77d6
Cosmetic: Rename ws functions for the sake of consistency.
ib
parents:
35678
diff
changeset
|
747 wsWindowResize(&guiApp.videoWindow, guiInfo.VideoWidth, guiInfo.VideoHeight); |
34697 | 748 if (!guiApp.videoWindow.Mapped) |
35681
80c5c89f77d6
Cosmetic: Rename ws functions for the sake of consistency.
ib
parents:
35678
diff
changeset
|
749 wsWindowVisibility(&guiApp.videoWindow, wsShowWindow); |
33960 | 750 } |
751 | |
34697 | 752 if (gtkLoadFullscreen ^ guiApp.videoWindow.isFullScreen) |
35773 | 753 uiEvent(evFullScreen, True); |
33960 | 754 |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
755 if (guiWinID >= 0) |
35681
80c5c89f77d6
Cosmetic: Rename ws functions for the sake of consistency.
ib
parents:
35678
diff
changeset
|
756 wsWindowMove(&guiApp.mainWindow, True, 0, guiInfo.VideoHeight); |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
757 |
35755
589cf8a5f165
Realize a smooth and flicker-free video when resizing during playback.
ib
parents:
35748
diff
changeset
|
758 wsWindowBackground(&guiApp.videoWindow, -1, -1, -1); |
589cf8a5f165
Realize a smooth and flicker-free video when resizing during playback.
ib
parents:
35748
diff
changeset
|
759 |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
760 break; |
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
761 |
33733 | 762 case GUI_HANDLE_X_EVENT: |
35541 | 763 |
35681
80c5c89f77d6
Cosmetic: Rename ws functions for the sake of consistency.
ib
parents:
35678
diff
changeset
|
764 wsEvent(data); |
33692
0e9a5c0194ed
Cosmetic: Arrange guiGetEvent() types in the sequence they are called.
ib
parents:
33691
diff
changeset
|
765 break; |
33694
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
766 |
33731
81f71d910333
Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents:
33730
diff
changeset
|
767 case GUI_END_FILE: |
33694
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
768 |
35330 | 769 guiInfo.sh_video = NULL; |
34035 | 770 |
35773 | 771 uiEvent(ivRedraw, True); |
34052 | 772 |
35565
5f7a983fc838
Embrace several individual "if (guiInfo.Playing)" conditions.
ib
parents:
35564
diff
changeset
|
773 if (guiInfo.Playing) { |
35566 | 774 if (!guiInfo.PlaylistNext) { |
775 guiInfo.PlaylistNext = True; | |
776 break; | |
777 } | |
33694
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
778 |
35566 | 779 if (guiInfo.StreamType == STREAMTYPE_CDDA && guiInfo.Track < guiInfo.Tracks) { |
780 uiNext(); | |
781 break; | |
782 } | |
34387 | 783 |
35468
047fc4746236
Cosmetic: Adjust indent and move guiInfo member CodecName in structure.
ib
parents:
35467
diff
changeset
|
784 next = listMgr(PLAYLIST_ITEM_GET_NEXT, 0); |
35565
5f7a983fc838
Embrace several individual "if (guiInfo.Playing)" conditions.
ib
parents:
35564
diff
changeset
|
785 } |
34669
697aaedfe59e
Remove global variable pointing to playlist item last played.
ib
parents:
34667
diff
changeset
|
786 |
35565
5f7a983fc838
Embrace several individual "if (guiInfo.Playing)" conditions.
ib
parents:
35564
diff
changeset
|
787 if (next) { |
35452 | 788 uiSetFile(next->path, next->name, STREAMTYPE_FILE); |
34066 | 789 guiInfo.NewPlay = GUI_FILE_NEW; |
35458 | 790 guiInfo.Track = (int)listMgr(PLAYLIST_ITEM_GET_POS, next); |
33694
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
791 } else { |
33894 | 792 if (guiInfo.NewPlay == GUI_FILE_NEW) |
33694
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
793 break; |
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
794 |
34113 | 795 filename = NULL; |
796 | |
35546
cd2c85083fdd
Reset playlist to first item after playback has stopped.
ib
parents:
35544
diff
changeset
|
797 if (isPlaylistStreamtype) { |
35555 | 798 plItem *curr = listMgr(PLAYLIST_ITEM_GET_CURR, 0); |
799 | |
800 if (!curr) | |
35547 | 801 uiUnsetFile(); |
35558 | 802 else if ((curr != listMgr(PLAYLIST_GET, 0)) && guiInfo.Playing) { |
35555 | 803 curr = listMgr(PLAYLIST_ITEM_SET_CURR, listMgr(PLAYLIST_GET, 0)); |
35546
cd2c85083fdd
Reset playlist to first item after playback has stopped.
ib
parents:
35544
diff
changeset
|
804 uiSetFile(curr->path, curr->name, STREAMTYPE_FILE); |
35551
99a11b051705
Set track number after resetting playlist to first item.
ib
parents:
35550
diff
changeset
|
805 guiInfo.Track = 1; |
35546
cd2c85083fdd
Reset playlist to first item after playback has stopped.
ib
parents:
35544
diff
changeset
|
806 } |
35559
14e36699a6e7
Relocate code to set Track, Chapter and Angle start values.
ib
parents:
35558
diff
changeset
|
807 } else if (guiInfo.Playing) { |
35563
d4a84f674401
Reset media information for CD/VCD/DVD after playback.
ib
parents:
35559
diff
changeset
|
808 int first = (guiInfo.StreamType == STREAMTYPE_VCD ? 2 : 1); |
35559
14e36699a6e7
Relocate code to set Track, Chapter and Angle start values.
ib
parents:
35558
diff
changeset
|
809 |
35563
d4a84f674401
Reset media information for CD/VCD/DVD after playback.
ib
parents:
35559
diff
changeset
|
810 if (guiInfo.Track != first) { |
35568 | 811 uiUnsetMedia(True); |
35563
d4a84f674401
Reset media information for CD/VCD/DVD after playback.
ib
parents:
35559
diff
changeset
|
812 guiInfo.Track = first; |
d4a84f674401
Reset media information for CD/VCD/DVD after playback.
ib
parents:
35559
diff
changeset
|
813 } |
35564
8d4a7387d592
Relocate and change code to set Chapter and Angle start values.
ib
parents:
35563
diff
changeset
|
814 |
8d4a7387d592
Relocate and change code to set Chapter and Angle start values.
ib
parents:
35563
diff
changeset
|
815 if (guiInfo.StreamType == STREAMTYPE_DVD) { |
8d4a7387d592
Relocate and change code to set Chapter and Angle start values.
ib
parents:
35563
diff
changeset
|
816 guiInfo.Chapter = 1; |
8d4a7387d592
Relocate and change code to set Chapter and Angle start values.
ib
parents:
35563
diff
changeset
|
817 guiInfo.Angle = 1; |
8d4a7387d592
Relocate and change code to set Chapter and Angle start values.
ib
parents:
35563
diff
changeset
|
818 } |
35546
cd2c85083fdd
Reset playlist to first item after playback has stopped.
ib
parents:
35544
diff
changeset
|
819 } |
35381
746e2e0577b2
Without current playlist item, reset guiInfo's Filename and StreamType.
ib
parents:
35376
diff
changeset
|
820 |
35413 | 821 guiInfo.ElapsedTime = 0; |
36279 | 822 guiInfo.Position = 0.0f; |
33694
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
823 |
33960 | 824 if (gtkShowVideoWindow) { |
825 guiInfo.VideoWindow = True; | |
826 | |
35663
d1f84b219340
Don't unnecessarily and annoyingly move the video window.
ib
parents:
35658
diff
changeset
|
827 if (!guiApp.videoWindow.isFullScreen) |
35681
80c5c89f77d6
Cosmetic: Rename ws functions for the sake of consistency.
ib
parents:
35678
diff
changeset
|
828 wsWindowResize(&guiApp.videoWindow, guiApp.video.width, guiApp.video.height); |
33960 | 829 |
34697 | 830 if (!guiApp.videoWindow.Mapped) |
35681
80c5c89f77d6
Cosmetic: Rename ws functions for the sake of consistency.
ib
parents:
35678
diff
changeset
|
831 wsWindowVisibility(&guiApp.videoWindow, wsShowWindow); |
33960 | 832 |
34697 | 833 if (gtkLoadFullscreen ^ guiApp.videoWindow.isFullScreen) |
35773 | 834 uiEvent(evFullScreen, False); |
33960 | 835 } else { |
35681
80c5c89f77d6
Cosmetic: Rename ws functions for the sake of consistency.
ib
parents:
35678
diff
changeset
|
836 wsWindowVisibility(&guiApp.videoWindow, wsHideWindow); |
33960 | 837 guiInfo.VideoWindow = False; |
33978 | 838 btnSet(evFullScreen, (gtkLoadFullscreen ? btnPressed : btnReleased)); |
33960 | 839 } |
33694
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
840 |
33731
81f71d910333
Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents:
33730
diff
changeset
|
841 gui(GUI_SET_STATE, (void *)GUI_STOP); |
33959 | 842 |
35681
80c5c89f77d6
Cosmetic: Rename ws functions for the sake of consistency.
ib
parents:
35678
diff
changeset
|
843 wsWindowRedraw(&guiApp.videoWindow); |
80c5c89f77d6
Cosmetic: Rename ws functions for the sake of consistency.
ib
parents:
35678
diff
changeset
|
844 wsMouseVisibility(&guiApp.videoWindow, wsShowMouseCursor); |
36293 | 845 wsEvents(); |
33694
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
846 } |
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
847 |
45553d0f65c6
Don't let MPlayer directly call user interface functions.
ib
parents:
33693
diff
changeset
|
848 break; |
32984 | 849 } |
850 | |
33666
0f592e8530f1
Change return code of guiGetEvent() to indicate success.
ib
parents:
33664
diff
changeset
|
851 return True; |
23077 | 852 } |
853 | |
35517 | 854 /** |
855 * @brief Initialize the GUI playlist (i.e. import files that had been given | |
856 * on the command line) or add files "on the fly" (i.e. replace the | |
857 * current one (a playlist file) by other ones (its content)). | |
858 * | |
859 * @param what command (#GUI_PLAYLIST_INIT or #GUI_PLAYLIST_ADD) to be performed | |
860 * @param playtree MPlayer playtree to read from | |
861 * @param config MPlayer config context | |
862 * @param enqueue whether to overwrite GUI playlist (#False) or to append to it (#True) | |
863 * | |
864 * @return #True (ok) or #False (error) | |
865 */ | |
35512 | 866 int guiPlaylist(int what, play_tree_t *playtree, m_config_t *config, int enqueue) |
35510 | 867 { |
35513 | 868 play_tree_iter_t *pt_iter; |
35519
7f1be403a640
Don't unnecessarily use global MPlayer variable filename.
ib
parents:
35518
diff
changeset
|
869 const char *file; |
35510 | 870 int added = False; |
35512 | 871 plItem *curr; |
35510 | 872 |
35513 | 873 pt_iter = pt_iter_create(&playtree, config); |
874 | |
875 if (!pt_iter) | |
876 return False; | |
877 | |
35510 | 878 switch (what) { |
879 case GUI_PLAYLIST_INIT: | |
33746 | 880 |
35511 | 881 if (!enqueue) |
35517 | 882 listMgr(PLAYLIST_DELETE, 0); |
33746 | 883 |
35519
7f1be403a640
Don't unnecessarily use global MPlayer variable filename.
ib
parents:
35518
diff
changeset
|
884 while ((file = pt_iter_get_next_file(pt_iter))) |
7f1be403a640
Don't unnecessarily use global MPlayer variable filename.
ib
parents:
35518
diff
changeset
|
885 if (add_to_gui_playlist(file, PLAYLIST_ITEM_APPEND)) |
35514 | 886 added = True; |
33746 | 887 |
35511 | 888 uiCurr(); // update filename |
889 guiInfo.PlaylistNext = True; | |
33746 | 890 |
35518 | 891 if (added) |
892 guiInfo.Track = 1; | |
893 | |
35511 | 894 if (enqueue) |
895 filename = NULL; // don't start playing | |
33746 | 896 |
35510 | 897 break; |
33746 | 898 |
35510 | 899 case GUI_PLAYLIST_ADD: |
33746 | 900 |
35516 | 901 curr = listMgr(PLAYLIST_ITEM_GET_CURR, 0); |
33746 | 902 |
35519
7f1be403a640
Don't unnecessarily use global MPlayer variable filename.
ib
parents:
35518
diff
changeset
|
903 while ((file = pt_iter_get_next_file(pt_iter))) |
7f1be403a640
Don't unnecessarily use global MPlayer variable filename.
ib
parents:
35518
diff
changeset
|
904 if (add_to_gui_playlist(file, PLAYLIST_ITEM_INSERT)) |
35514 | 905 added = True; |
33746 | 906 |
35512 | 907 if (curr) |
908 listMgr(PLAYLIST_ITEM_SET_CURR, curr); | |
35511 | 909 else |
35517 | 910 listMgr(PLAYLIST_ITEM_SET_CURR, listMgr(PLAYLIST_GET, 0)); |
33746 | 911 |
35512 | 912 if (curr && added) |
35511 | 913 listMgr(PLAYLIST_ITEM_DEL_CURR, 0); |
33746 | 914 |
35511 | 915 uiCurr(); // update filename |
33746 | 916 |
35510 | 917 break; |
918 } | |
919 | |
35513 | 920 pt_iter_destroy(&pt_iter); |
921 | |
35494 | 922 return added; |
33746 | 923 } |
924 | |
925 /* GUI -> MPlayer */ | |
926 | |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
927 void mplayer(int what, float value, void *data) |
23077 | 928 { |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
929 equalizer_t *eq = (equalizer_t *)data; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
27393
diff
changeset
|
930 |
33765 | 931 switch (what) { |
34684 | 932 /* subtitle */ |
32984 | 933 |
33766 | 934 case MPLAYER_SET_FONT_FACTOR: |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
935 font_factor = value; |
33763 | 936 mplayerLoadFont(); |
33744 | 937 break; |
34454 | 938 |
33766 | 939 case MPLAYER_SET_FONT_OUTLINE: |
36282
872298702c15
Increase precision of calculation by using constants of type double.
ib
parents:
36279
diff
changeset
|
940 subtitle_font_thickness = 8.0 * value / 100.0; // transform 0..100 to 0..8 |
33763 | 941 mplayerLoadFont(); |
33744 | 942 break; |
32984 | 943 |
33766 | 944 case MPLAYER_SET_FONT_BLUR: |
36282
872298702c15
Increase precision of calculation by using constants of type double.
ib
parents:
36279
diff
changeset
|
945 subtitle_font_radius = 8.0 * value / 100.0; // transform 0..100 to 0..8 |
33763 | 946 mplayerLoadFont(); |
33744 | 947 break; |
32984 | 948 |
33766 | 949 case MPLAYER_SET_FONT_TEXTSCALE: |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
950 text_font_scale_factor = value; |
33763 | 951 mplayerLoadFont(); |
33744 | 952 break; |
32984 | 953 |
33766 | 954 case MPLAYER_SET_FONT_OSDSCALE: |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
955 osd_font_scale_factor = value; |
33763 | 956 mplayerLoadFont(); |
33744 | 957 break; |
32984 | 958 |
33766 | 959 case MPLAYER_SET_FONT_ENCODING: |
33739 | 960 nfree(subtitle_font_encoding); |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
961 subtitle_font_encoding = gstrdup((char *)data); |
33763 | 962 mplayerLoadFont(); |
33744 | 963 break; |
32984 | 964 |
33766 | 965 case MPLAYER_SET_FONT_AUTOSCALE: |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
966 subtitle_autoscale = (int)value; |
33763 | 967 mplayerLoadFont(); |
33744 | 968 break; |
32984 | 969 |
33766 | 970 case MPLAYER_SET_SUB_ENCODING: |
33739 | 971 nfree(sub_cp); |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
972 sub_cp = gstrdup((char *)data); |
32984 | 973 break; |
974 | |
33766 | 975 case MPLAYER_SET_EXTRA_STEREO: |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
976 gtkAOExtraStereoMul = value; |
33555 | 977 if (guiInfo.afilter) |
978 af_control_any_rev(guiInfo.afilter, AF_CONTROL_ES_MUL | AF_CONTROL_SET, >kAOExtraStereoMul); | |
33744 | 979 break; |
32984 | 980 |
33766 | 981 case MPLAYER_SET_PANSCAN: |
32984 | 982 { |
983 mp_cmd_t *mp_cmd; | |
984 | |
985 mp_cmd = calloc(1, sizeof(*mp_cmd)); | |
986 mp_cmd->id = MP_CMD_PANSCAN; | |
987 mp_cmd->name = strdup("panscan"); | |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
988 mp_cmd->args[0].v.f = value; |
32984 | 989 mp_cmd->args[1].v.i = 1; |
990 mp_input_queue_cmd(mp_cmd); | |
991 } | |
33744 | 992 break; |
32984 | 993 |
33766 | 994 case MPLAYER_SET_AUTO_QUALITY: |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
995 auto_quality = (int)value; |
33744 | 996 break; |
32984 | 997 |
34684 | 998 /* set equalizers */ |
32984 | 999 |
33766 | 1000 case MPLAYER_SET_CONTRAST: |
33555 | 1001 if (guiInfo.sh_video) |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
1002 set_video_colors(guiInfo.sh_video, "contrast", (int)value); |
33744 | 1003 break; |
32984 | 1004 |
33766 | 1005 case MPLAYER_SET_BRIGHTNESS: |
33555 | 1006 if (guiInfo.sh_video) |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
1007 set_video_colors(guiInfo.sh_video, "brightness", (int)value); |
33744 | 1008 break; |
32984 | 1009 |
33766 | 1010 case MPLAYER_SET_HUE: |
33555 | 1011 if (guiInfo.sh_video) |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
1012 set_video_colors(guiInfo.sh_video, "hue", (int)value); |
33744 | 1013 break; |
32984 | 1014 |
33766 | 1015 case MPLAYER_SET_SATURATION: |
33555 | 1016 if (guiInfo.sh_video) |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
1017 set_video_colors(guiInfo.sh_video, "saturation", (int)value); |
33744 | 1018 break; |
32984 | 1019 |
33766 | 1020 case MPLAYER_SET_EQUALIZER: |
32984 | 1021 { |
23077 | 1022 af_control_ext_t tmp; |
32984 | 1023 |
1024 if (eq) { | |
1025 gtkEquChannels[eq->channel][eq->band] = eq->gain; | |
1026 tmp.ch = eq->channel; | |
1027 tmp.arg = gtkEquChannels[eq->channel]; | |
1028 | |
33555 | 1029 if (guiInfo.afilter) |
1030 af_control_any_rev(guiInfo.afilter, AF_CONTROL_EQUALIZER_GAIN | AF_CONTROL_SET, &tmp); | |
32984 | 1031 } else { |
33693
006a2db8bd55
Use unsigned index variable for comparison with array size.
ib
parents:
33692
diff
changeset
|
1032 unsigned int i; |
32984 | 1033 |
1034 memset(gtkEquChannels, 0, sizeof(gtkEquChannels)); | |
1035 | |
33555 | 1036 if (guiInfo.afilter) { |
33689
8d0290220239
Replace numeric constants for gtkEquChannels array size.
ib
parents:
33688
diff
changeset
|
1037 for (i = 0; i < FF_ARRAY_ELEMS(gtkEquChannels); i++) { |
32984 | 1038 tmp.ch = i; |
1039 tmp.arg = gtkEquChannels[i]; | |
33555 | 1040 af_control_any_rev(guiInfo.afilter, AF_CONTROL_EQUALIZER_GAIN | AF_CONTROL_SET, &tmp); |
32984 | 1041 } |
1042 } | |
1043 } | |
1044 | |
33744 | 1045 break; |
32984 | 1046 } |
33768 | 1047 |
1048 case MPLAYER_EXIT_GUI: | |
33791
8b0c78a85a8c
Cosmetic: Change parameter names of gui() and mplayer().
ib
parents:
33790
diff
changeset
|
1049 exit_player_with_rc((enum exit_reason)value, (enum exit_reason)value >= EXIT_ERROR); |
33768 | 1050 break; |
32984 | 1051 } |
23077 | 1052 } |
1053 | |
33763 | 1054 void mplayerLoadFont(void) |
33745 | 1055 { |
1056 #ifdef CONFIG_FREETYPE | |
1057 load_font_ft(vo_image_width, vo_image_height, &vo_font, font_name, osd_font_scale_factor); | |
1058 #else | |
1059 if (vo_font) { | |
1060 int i; | |
1061 | |
1062 free(vo_font->name); | |
1063 free(vo_font->fpath); | |
1064 | |
1065 for (i = 0; i < 16; i++) { | |
1066 if (vo_font->pic_a[i]) { | |
1067 free(vo_font->pic_a[i]->bmp); | |
1068 free(vo_font->pic_a[i]->pal); | |
1069 } | |
1070 } | |
1071 | |
1072 for (i = 0; i < 16; i++) { | |
1073 if (vo_font->pic_b[i]) { | |
1074 free(vo_font->pic_b[i]->bmp); | |
1075 free(vo_font->pic_b[i]->pal); | |
1076 } | |
1077 } | |
1078 | |
1079 free(vo_font); | |
1080 vo_font = NULL; | |
1081 } | |
1082 | |
1083 if (font_name) { | |
1084 vo_font = read_font_desc(font_name, font_factor, 0); | |
1085 | |
1086 if (!vo_font) | |
1087 gmp_msg(MSGT_GPLAYER, MSGL_ERR, MSGTR_CantLoadFont, font_name); | |
1088 } else { | |
1089 font_name = gstrdup(get_path("font/font.desc")); | |
1090 vo_font = read_font_desc(font_name, font_factor, 0); | |
1091 | |
1092 if (!vo_font) { | |
1093 nfree(font_name); | |
1094 font_name = gstrdup(MPLAYER_DATADIR "/font/font.desc"); | |
1095 vo_font = read_font_desc(font_name, font_factor, 0); | |
1096 } | |
1097 } | |
1098 #endif | |
1099 } | |
1100 | |
33790
ab6d06f5b98b
Add const to some string pointer arguments that will not be modified.
ib
parents:
33775
diff
changeset
|
1101 void mplayerLoadSubtitle(const char *name) |
33745 | 1102 { |
35495 | 1103 if (guiInfo.Playing == GUI_STOP) |
33745 | 1104 return; |
1105 | |
1106 if (subdata) { | |
1107 mp_msg(MSGT_GPLAYER, MSGL_INFO, MSGTR_DeletingSubtitles); | |
1108 | |
1109 sub_free(subdata); | |
1110 subdata = NULL; | |
1111 vo_sub = NULL; | |
1112 | |
1113 if (vo_osd_list) { | |
1114 int len; | |
1115 mp_osd_obj_t *osd; | |
1116 | |
1117 osd = vo_osd_list; | |
1118 | |
1119 while (osd) { | |
1120 if (osd->type == OSDTYPE_SUBTITLE) | |
1121 break; | |
1122 | |
1123 osd = osd->next; | |
1124 } | |
1125 | |
1126 if (osd && (osd->flags & OSDFLAG_VISIBLE)) { | |
1127 len = osd->stride * (osd->bbox.y2 - osd->bbox.y1); | |
1128 memset(osd->bitmap_buffer, 0, len); | |
1129 memset(osd->alpha_buffer, 0, len); | |
1130 } | |
1131 } | |
1132 } | |
1133 | |
1134 if (name) { | |
1135 mp_msg(MSGT_GPLAYER, MSGL_INFO, MSGTR_LoadingSubtitles, name); | |
1136 | |
33775 | 1137 subdata = sub_read_file(name, (guiInfo.sh_video ? guiInfo.sh_video->fps : 0)); |
33745 | 1138 |
1139 if (!subdata) | |
1140 gmp_msg(MSGT_GPLAYER, MSGL_ERR, MSGTR_CantLoadSub, name); | |
1141 | |
1142 sub_name = (malloc(2 * sizeof(char *))); // when mplayer will be restarted | |
1143 sub_name[0] = strdup(name); // sub_name[0] will be read | |
1144 sub_name[1] = NULL; | |
1145 } | |
1146 | |
1147 update_set_of_subtitles(); | |
1148 } | |
1149 | |
33023 | 1150 // NOTE TO MYSELF: This function is nonsense. |
33289 | 1151 // MPlayer should pass messages to the GUI |
1152 // which must decide then which message has | |
1153 // to be shown (MSGL_FATAL, for example). | |
1154 // But with this function it is at least | |
1155 // possible to show GUI's very critical or | |
1156 // abort messages. | |
33023 | 1157 void gmp_msg(int mod, int lev, const char *format, ...) |
1158 { | |
1159 char msg[512]; | |
1160 va_list va; | |
1161 | |
1162 va_start(va, format); | |
1163 vsnprintf(msg, sizeof(msg), format, va); | |
1164 va_end(va); | |
1165 | |
1166 mp_msg(mod, lev, msg); | |
1167 | |
1168 if (mp_msg_test(mod, lev)) | |
36036 | 1169 gtkMessageBox(MSGBOX_FATAL, msg); |
33023 | 1170 } |