annotate gui/win32/interface.c @ 33740:2c02269701bd

Remove macros guiSetFilename() and guiSetDF() from interface.h. Rename guiSetFilename() setdup() and guiSetDF() setddup() and define them in string.c as functions. Adjust malloc size to necessary size and check pointer returned by malloc() to prevent segmentation fault.
author ib
date Thu, 07 Jul 2011 10:16:22 +0000
parents 71c29e8ec68f
children 6cea6d268f97
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1 /*
23079
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
2 * MPlayer GUI for Win32
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
3 * Copyright (C) 2003 Sascha Sommer <saschasommer@freenet.de>
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
4 * Copyright (C) 2006 Erik Augustson <erik_27can@yahoo.com>
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
5 * Copyright (C) 2006 Gianluigi Tiesi <sherpya@netfarm.it>
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
6 *
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
7 * This file is part of MPlayer.
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
8 *
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
9 * MPlayer is free software; you can redistribute it and/or modify
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
10 * it under the terms of the GNU General Public License as published by
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
11 * the Free Software Foundation; either version 2 of the License, or
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
12 * (at your option) any later version.
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
13 *
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
14 * MPlayer is distributed in the hope that it will be useful,
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
17 * GNU General Public License for more details.
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
18 *
26457
9ba6d4487292 Use standard GPL header.
diego
parents: 26372
diff changeset
19 * You should have received a copy of the GNU General Public License along
9ba6d4487292 Use standard GPL header.
diego
parents: 26372
diff changeset
20 * with MPlayer; if not, write to the Free Software Foundation, Inc.,
9ba6d4487292 Use standard GPL header.
diego
parents: 26372
diff changeset
21 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
23079
8e9b11648f40 Use proper GPL header.
diego
parents: 23078
diff changeset
22 */
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
23
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
24 #include <windows.h>
33358
c9c9f015619b Don't use CreateThread() unconditionally.
ib
parents: 33303
diff changeset
25
c9c9f015619b Don't use CreateThread() unconditionally.
ib
parents: 33303
diff changeset
26 #if defined(__CYGWIN__)
c9c9f015619b Don't use CreateThread() unconditionally.
ib
parents: 33303
diff changeset
27 #define _beginthreadex CreateThread
c9c9f015619b Don't use CreateThread() unconditionally.
ib
parents: 33303
diff changeset
28 #else
c9c9f015619b Don't use CreateThread() unconditionally.
ib
parents: 33303
diff changeset
29 #include <process.h>
c9c9f015619b Don't use CreateThread() unconditionally.
ib
parents: 33303
diff changeset
30 #endif
c9c9f015619b Don't use CreateThread() unconditionally.
ib
parents: 33303
diff changeset
31
30901
76a13038105e Rename get_path.[ch] --> path.[ch].
diego
parents: 30722
diff changeset
32 #include "path.h"
26372
76413880bfad Update include paths to account for build system changes.
diego
parents: 26193
diff changeset
33 #include "gui/interface.h"
23091
52488bb09d90 Consistently use quotes instead of angled brackets in #include
diego
parents: 23079
diff changeset
34 #include "m_option.h"
52488bb09d90 Consistently use quotes instead of angled brackets in #include
diego
parents: 23079
diff changeset
35 #include "mixer.h"
52488bb09d90 Consistently use quotes instead of angled brackets in #include
diego
parents: 23079
diff changeset
36 #include "mp_msg.h"
52488bb09d90 Consistently use quotes instead of angled brackets in #include
diego
parents: 23079
diff changeset
37 #include "help_mp.h"
52488bb09d90 Consistently use quotes instead of angled brackets in #include
diego
parents: 23079
diff changeset
38 #include "codec-cfg.h"
52488bb09d90 Consistently use quotes instead of angled brackets in #include
diego
parents: 23079
diff changeset
39 #include "stream/stream.h"
52488bb09d90 Consistently use quotes instead of angled brackets in #include
diego
parents: 23079
diff changeset
40 #include "libmpdemux/demuxer.h"
52488bb09d90 Consistently use quotes instead of angled brackets in #include
diego
parents: 23079
diff changeset
41 #include "libmpdemux/stheader.h"
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 26457
diff changeset
42 #ifdef CONFIG_DVDREAD
23091
52488bb09d90 Consistently use quotes instead of angled brackets in #include
diego
parents: 23079
diff changeset
43 #include "stream/stream_dvd.h"
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
44 #endif
23091
52488bb09d90 Consistently use quotes instead of angled brackets in #include
diego
parents: 23079
diff changeset
45 #include "input/input.h"
52488bb09d90 Consistently use quotes instead of angled brackets in #include
diego
parents: 23079
diff changeset
46 #include "libvo/video_out.h"
52488bb09d90 Consistently use quotes instead of angled brackets in #include
diego
parents: 23079
diff changeset
47 #include "libao2/audio_out.h"
52488bb09d90 Consistently use quotes instead of angled brackets in #include
diego
parents: 23079
diff changeset
48 #include "access_mpcontext.h"
30558
71acebef19ec Fix win32 gui compilation.
reimar
parents: 27391
diff changeset
49 #include "libmpcodecs/vd.h"
31425
2392ad3cec9c Move af_cfg extern variable declaration to dec_audio.h.
diego
parents: 31312
diff changeset
50 #include "libmpcodecs/dec_audio.h"
33557
71ec25d1da10 Fix compilation after r33644.
ib
parents: 33555
diff changeset
51 #include "gui/ui/gmplayer.h"
30558
71acebef19ec Fix win32 gui compilation.
reimar
parents: 27391
diff changeset
52 #include "mp_core.h"
32093
e34226e0a890 Fix win32 gui compilation
reimar
parents: 31426
diff changeset
53 #include "mpcommon.h"
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
54 #include "gui.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
55 #include "dialogs.h"
27391
1d2faa1020fb Rename a bunch of miscellaneous preprocessor directives.
diego
parents: 27341
diff changeset
56 #ifdef CONFIG_LIBCDIO
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
57 #include <cdio/cdio.h>
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
58 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
59
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
60 int guiWinID = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
61
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
62 char *skinName = NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
63 char *codecname = NULL;
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
64 int uiGotoTheNext = 1;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
65 static gui_t *mygui = NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
66 static int update_subwindow(void);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
67 static RECT old_rect;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
68 static DWORD style;
24992
5701e23ebcb4 Better handling of win32 GUI thread:
zuxy
parents: 23148
diff changeset
69 static HANDLE hThread;
5701e23ebcb4 Better handling of win32 GUI thread:
zuxy
parents: 23148
diff changeset
70 static unsigned threadId;
25765
304fc0bbefe1 audio_out / video_out structs should be treated as const
reimar
parents: 24992
diff changeset
71 const ao_functions_t *audio_out = NULL;
304fc0bbefe1 audio_out / video_out structs should be treated as const
reimar
parents: 24992
diff changeset
72 const vo_functions_t *video_out = NULL;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
73 mixer_t *mixer = NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
74
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
75 /* test for playlist files, no need to specify -playlist on the commandline.
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
76 * add any conceivable playlist extensions here.
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
77 * - Erik
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
78 */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
79 int parse_filename(char *file, play_tree_t *playtree, m_config_t *mconfig, int clear)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
80 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
81 if(clear)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
82 mygui->playlist->clear_playlist(mygui->playlist);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
83
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
84 if(strstr(file, ".m3u") || strstr(file, ".pls"))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
85 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
86 playtree = parse_playlist_file(file);
33734
1fbe7adc4eaf Rename GUI playtree import functions.
ib
parents: 33732
diff changeset
87 guiAddPlaylist(playtree, mconfig);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
88 return 1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
89 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
90 return 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
91 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
92
33737
71c29e8ec68f Move string functions from interface.c to string.c.
ib
parents: 33734
diff changeset
93 char *gstrdup(const char *str)
71c29e8ec68f Move string functions from interface.c to string.c.
ib
parents: 33734
diff changeset
94 {
71c29e8ec68f Move string functions from interface.c to string.c.
ib
parents: 33734
diff changeset
95 if (!str) return NULL;
71c29e8ec68f Move string functions from interface.c to string.c.
ib
parents: 33734
diff changeset
96 return strdup(str);
71c29e8ec68f Move string functions from interface.c to string.c.
ib
parents: 33734
diff changeset
97 }
71c29e8ec68f Move string functions from interface.c to string.c.
ib
parents: 33734
diff changeset
98
33740
2c02269701bd Remove macros guiSetFilename() and guiSetDF() from interface.h.
ib
parents: 33737
diff changeset
99 static void setdup (char **old, const char *str)
2c02269701bd Remove macros guiSetFilename() and guiSetDF() from interface.h.
ib
parents: 33737
diff changeset
100 {
2c02269701bd Remove macros guiSetFilename() and guiSetDF() from interface.h.
ib
parents: 33737
diff changeset
101 free(*old);
2c02269701bd Remove macros guiSetFilename() and guiSetDF() from interface.h.
ib
parents: 33737
diff changeset
102 *old = gstrdup(str);
2c02269701bd Remove macros guiSetFilename() and guiSetDF() from interface.h.
ib
parents: 33737
diff changeset
103 }
2c02269701bd Remove macros guiSetFilename() and guiSetDF() from interface.h.
ib
parents: 33737
diff changeset
104
2c02269701bd Remove macros guiSetFilename() and guiSetDF() from interface.h.
ib
parents: 33737
diff changeset
105 static void setddup (char **old, const char *dir, const char *name)
2c02269701bd Remove macros guiSetFilename() and guiSetDF() from interface.h.
ib
parents: 33737
diff changeset
106 {
2c02269701bd Remove macros guiSetFilename() and guiSetDF() from interface.h.
ib
parents: 33737
diff changeset
107 free(*old);
2c02269701bd Remove macros guiSetFilename() and guiSetDF() from interface.h.
ib
parents: 33737
diff changeset
108 *old = malloc(strlen(dir) + strlen(name) + 2);
2c02269701bd Remove macros guiSetFilename() and guiSetDF() from interface.h.
ib
parents: 33737
diff changeset
109 if (*old) sprintf(*old, "%s/%s", dir, name);
2c02269701bd Remove macros guiSetFilename() and guiSetDF() from interface.h.
ib
parents: 33737
diff changeset
110 }
2c02269701bd Remove macros guiSetFilename() and guiSetDF() from interface.h.
ib
parents: 33737
diff changeset
111
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
112 /**
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
113 * \brief this actually creates a new list containing only one element...
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
114 */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
115 void gaddlist( char ***list, const char *entry)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
116 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
117 int i;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
118
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
119 if (*list)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
120 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
121 for (i=0; (*list)[i]; i++) free((*list)[i]);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
122 free(*list);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
123 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
124
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
125 *list = malloc(2 * sizeof(char **));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
126 (*list)[0] = gstrdup(entry);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
127 (*list)[1] = NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
128 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
129
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
130 /**
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
131 * \brief this replaces a string starting with search by replace.
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
132 * If not found, replace is appended.
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
133 */
33579
cd855f2f1024 win32 gui: Mark some functions as static.
diego
parents: 33578
diff changeset
134 static void greplace(char ***list, char *search, char *replace)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
135 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
136 int i = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
137 int len = (search) ? strlen(search) : 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
138
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
139 if (*list)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
140 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
141 for (i = 0; (*list)[i]; i++)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
142 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
143 if (search && (!strncmp((*list)[i], search, len)))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
144 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
145 free((*list)[i]);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
146 (*list)[i] = gstrdup(replace);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
147 return;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
148 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
149 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
150 *list = realloc(*list, (i + 2) * sizeof(char *));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
151 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
152 else
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
153 *list = malloc(2 * sizeof(char *));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
154
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
155 (*list)[i] = gstrdup(replace);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
156 (*list)[i + 1] = NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
157 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
158
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
159 /* this function gets called by the gui to update mplayer */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
160 static void guiSetEvent(int event)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
161 {
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
162 if(guiInfo.mpcontext)
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
163 mixer = mpctx_get_mixer(guiInfo.mpcontext);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
164
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
165 switch(event)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
166 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
167 case evPlay:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
168 case evPlaySwitchToPause:
23148
71efd1fc20c8 add missing case value, fixes functionality when using some skins.
vayne
parents: 23147
diff changeset
169 case evPauseSwitchToPlay:
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
170 uiPlay();
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
171 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
172 case evPause:
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
173 uiPause();
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
174 break;
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 26457
diff changeset
175 #ifdef CONFIG_DVDREAD
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
176 case evPlayDVD:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
177 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
178 static char dvdname[MAX_PATH];
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
179 guiInfo.DVD.current_title = dvd_title;
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
180 guiInfo.DVD.current_chapter = dvd_chapter;
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
181 guiInfo.DVD.current_angle = dvd_angle;
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
182 guiInfo.DiskChanged = 1;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
183
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
184 uiSetFileName(NULL, dvd_device, STREAMTYPE_DVD);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
185 dvdname[0] = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
186 strcat(dvdname, "DVD Movie");
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
187 GetVolumeInformation(dvd_device, dvdname, MAX_PATH, NULL, NULL, NULL, NULL, 0);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
188 capitalize(dvdname);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
189 mp_msg(MSGT_GPLAYER, MSGL_V, "Opening DVD %s -> %s\n", dvd_device, dvdname);
33731
81f71d910333 Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents: 33730
diff changeset
190 gui(GUI_PREPARE, (void *) STREAMTYPE_DVD);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
191 mygui->playlist->clear_playlist(mygui->playlist);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
192 mygui->playlist->add_track(mygui->playlist, filename, NULL, dvdname, 0);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
193 mygui->startplay(mygui);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
194 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
195 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
196 #endif
27391
1d2faa1020fb Rename a bunch of miscellaneous preprocessor directives.
diego
parents: 27341
diff changeset
197 #ifdef CONFIG_LIBCDIO
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
198 case evPlayCD:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
199 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
200 int i;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
201 char track[10];
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
202 char trackname[10];
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
203 CdIo_t *p_cdio = cdio_open(NULL, DRIVER_UNKNOWN);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
204 track_t i_tracks;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
205
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
206 if(p_cdio == NULL) printf("Couldn't find a driver.\n");
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
207 i_tracks = cdio_get_num_tracks(p_cdio);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
208
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
209 mygui->playlist->clear_playlist(mygui->playlist);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
210 for(i=0;i<i_tracks;i++)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
211 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
212 sprintf(track, "cdda://%d", i+1);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
213 sprintf(trackname, "Track %d", i+1);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
214 mygui->playlist->add_track(mygui->playlist, track, NULL, trackname, 0);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
215 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
216 cdio_destroy(p_cdio);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
217 mygui->startplay(mygui);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
218 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
219 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
220 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
221 case evFullScreen:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
222 mp_input_queue_cmd(mp_input_parse_cmd("vo_fullscreen"));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
223 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
224 case evExit:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
225 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
226 /* We are asking mplayer to exit, later it will ask us after uninit is made
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
227 this should be the only safe way to quit */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
228 mygui->activewidget = NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
229 mp_input_queue_cmd(mp_input_parse_cmd("quit"));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
230 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
231 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
232 case evStop:
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
233 if(guiInfo.Playing)
33731
81f71d910333 Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents: 33730
diff changeset
234 gui(GUI_SET_STATE, (void *) GUI_STOP);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
235 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
236 case evSetMoviePosition:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
237 {
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
238 rel_seek_secs = guiInfo.Position / 100.0f;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
239 abs_seek_pos = 3;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
240 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
241 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
242 case evForward10sec:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
243 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
244 rel_seek_secs = 10.0f;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
245 abs_seek_pos = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
246 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
247 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
248 case evBackward10sec:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
249 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
250 rel_seek_secs = -10.0f;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
251 abs_seek_pos = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
252 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
253 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
254 case evSetBalance:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
255 case evSetVolume:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
256 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
257 float l,r;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
258
33615
1f9a31d4f114 Replace all playback integer constants by their symbolic constants.
ib
parents: 33614
diff changeset
259 if (guiInfo.Playing == GUI_STOP)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
260 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
261
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
262 if (guiInfo.Balance == 50.0f)
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
263 mixer_setvolume(mixer, guiInfo.Volume, guiInfo.Volume);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
264
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
265 l = guiInfo.Volume * ((100.0f - guiInfo.Balance) / 50.0f);
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
266 r = guiInfo.Volume * ((guiInfo.Balance) / 50.0f);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
267
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
268 if (l > guiInfo.Volume) l=guiInfo.Volume;
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
269 if (r > guiInfo.Volume) r=guiInfo.Volume;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
270 mixer_setvolume(mixer, l, r);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
271 /* Check for balance support on mixer - there is a better way ?? */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
272 if (r != l)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
273 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
274 mixer_getvolume(mixer, &l, &r);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
275 if (r == l)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
276 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
277 mp_msg(MSGT_GPLAYER, MSGL_V, "[GUI] Mixer doesn't support balanced audio\n");
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
278 mixer_setvolume(mixer, guiInfo.Volume, guiInfo.Volume);
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
279 guiInfo.Balance = 50.0f;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
280 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
281 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
282 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
283 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
284 case evMute:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
285 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
286 mp_cmd_t * cmd = calloc(1, sizeof(*cmd));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
287 cmd->id=MP_CMD_MUTE;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
288 cmd->name=strdup("mute");
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
289 mp_input_queue_cmd(cmd);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
290 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
291 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
292 case evDropFile:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
293 case evLoadPlay:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
294 {
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
295 switch(guiInfo.StreamType)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
296 {
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 26457
diff changeset
297 #ifdef CONFIG_DVDREAD
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
298 case STREAMTYPE_DVD:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
299 {
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
300 guiInfo.Title = guiInfo.DVD.current_title;
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
301 guiInfo.Chapter = guiInfo.DVD.current_chapter;
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
302 guiInfo.Angle = guiInfo.DVD.current_angle;
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
303 guiInfo.DiskChanged = 1;
33731
81f71d910333 Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents: 33730
diff changeset
304 gui(GUI_SET_STATE, (void *) GUI_PLAY);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
305 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
306 }
23147
21c35763b178 compilation fix for disabling dvd functionality, patch by <bangbangbear at gmail dot com>, slightly modified by me.
vayne
parents: 23123
diff changeset
307 #endif
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
308 default:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
309 {
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
310 guiInfo.FilenameChanged = guiInfo.NewPlay = 1;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
311 update_playlistwindow();
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
312 uiGotoTheNext = guiInfo.Playing? 0 : 1;
33731
81f71d910333 Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents: 33730
diff changeset
313 gui(GUI_SET_STATE, (void *) GUI_STOP);
81f71d910333 Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents: 33730
diff changeset
314 gui(GUI_SET_STATE, (void *) GUI_PLAY);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
315 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
316 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
317 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
318 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
319 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
320 case evNext:
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
321 uiNext();
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
322 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
323 case evPrev:
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
324 uiPrev();
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
325 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
326 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
327 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
328
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
329 void uiPlay( void )
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
330 {
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
331 if((!guiInfo.Filename ) || (guiInfo.Filename[0] == 0))
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
332 return;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
333
33615
1f9a31d4f114 Replace all playback integer constants by their symbolic constants.
ib
parents: 33614
diff changeset
334 if(guiInfo.Playing > GUI_STOP)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
335 {
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
336 uiPause();
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
337 return;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
338 }
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
339 guiInfo.NewPlay = 1;
33731
81f71d910333 Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents: 33730
diff changeset
340 gui(GUI_SET_STATE, (void *) GUI_PLAY);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
341 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
342
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
343 void uiPause( void )
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
344 {
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
345 if(!guiInfo.Playing) return;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
346
33615
1f9a31d4f114 Replace all playback integer constants by their symbolic constants.
ib
parents: 33614
diff changeset
347 if(guiInfo.Playing == GUI_PLAY)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
348 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
349 mp_cmd_t * cmd = calloc(1, sizeof(*cmd));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
350 cmd->id=MP_CMD_PAUSE;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
351 cmd->name=strdup("pause");
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
352 mp_input_queue_cmd(cmd);
33615
1f9a31d4f114 Replace all playback integer constants by their symbolic constants.
ib
parents: 33614
diff changeset
353 } else guiInfo.Playing = GUI_PLAY;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
354 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
355
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
356 void uiNext(void)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
357 {
33615
1f9a31d4f114 Replace all playback integer constants by their symbolic constants.
ib
parents: 33614
diff changeset
358 if(guiInfo.Playing == GUI_PAUSE) return;
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
359 switch(guiInfo.StreamType)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
360 {
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 26457
diff changeset
361 #ifdef CONFIG_DVDREAD
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
362 case STREAMTYPE_DVD:
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
363 if(guiInfo.DVD.current_chapter == (guiInfo.DVD.chapters - 1))
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
364 return;
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
365 guiInfo.DVD.current_chapter++;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
366 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
367 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
368 default:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
369 if(mygui->playlist->current == (mygui->playlist->trackcount - 1))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
370 return;
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
371 uiSetFileName(NULL, mygui->playlist->tracks[(mygui->playlist->current)++]->filename,
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
372 STREAMTYPE_STREAM);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
373 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
374 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
375 mygui->startplay(mygui);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
376 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
377
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
378 void uiPrev(void)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
379 {
33615
1f9a31d4f114 Replace all playback integer constants by their symbolic constants.
ib
parents: 33614
diff changeset
380 if(guiInfo.Playing == GUI_PAUSE) return;
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
381 switch(guiInfo.StreamType)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
382 {
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 26457
diff changeset
383 #ifdef CONFIG_DVDREAD
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
384 case STREAMTYPE_DVD:
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
385 if(guiInfo.DVD.current_chapter == 1)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
386 return;
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
387 guiInfo.DVD.current_chapter--;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
388 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
389 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
390 default:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
391 if(mygui->playlist->current == 0)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
392 return;
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
393 uiSetFileName(NULL, mygui->playlist->tracks[(mygui->playlist->current)--]->filename,
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
394 STREAMTYPE_STREAM);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
395 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
396 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
397 mygui->startplay(mygui);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
398 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
399
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
400 void uiSetFileName(char *dir, char *name, int type)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
401 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
402 if(!name) return;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
403 if(!dir)
33740
2c02269701bd Remove macros guiSetFilename() and guiSetDF() from interface.h.
ib
parents: 33737
diff changeset
404 setdup(&guiInfo.Filename, name);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
405 else
33740
2c02269701bd Remove macros guiSetFilename() and guiSetDF() from interface.h.
ib
parents: 33737
diff changeset
406 setddup(&guiInfo.Filename, dir, name);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
407
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
408 guiInfo.StreamType = type;
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
409 free(guiInfo.AudioFile);
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
410 guiInfo.AudioFile = NULL;
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
411 free(guiInfo.Subtitlename);
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
412 guiInfo.Subtitlename = NULL;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
413 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
414
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
415 void uiFullScreen( void )
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
416 {
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
417 if(!guiInfo.sh_video) return;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
418
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
419 if(sub_window)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
420 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
421 if(!fullscreen && IsWindowVisible(mygui->subwindow) && !IsIconic(mygui->subwindow))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
422 GetWindowRect(mygui->subwindow, &old_rect);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
423
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
424 if(fullscreen)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
425 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
426 fullscreen = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
427 style = WS_OVERLAPPEDWINDOW | WS_SIZEBOX;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
428 } else {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
429 fullscreen = 1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
430 style = WS_VISIBLE | WS_POPUP;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
431 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
432 SetWindowLong(mygui->subwindow, GWL_STYLE, style);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
433 update_subwindow();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
434 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
435 video_out->control(VOCTRL_FULLSCREEN, 0);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
436 if(sub_window) ShowWindow(mygui->subwindow, SW_SHOW);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
437 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
438
24992
5701e23ebcb4 Better handling of win32 GUI thread:
zuxy
parents: 23148
diff changeset
439 static unsigned __stdcall GuiThread(void* param)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
440 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
441 MSG msg;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
442
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
443 if(!skinName) skinName = strdup("Blue");
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
444 if(!mygui) mygui = create_gui(get_path("skins"), skinName, guiSetEvent);
30558
71acebef19ec Fix win32 gui compilation.
reimar
parents: 27391
diff changeset
445 if(!mygui) exit_player(EXIT_ERROR);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
446
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
447 if(autosync && autosync != gtkAutoSync)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
448 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
449 gtkAutoSyncOn = 1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
450 gtkAutoSync = autosync;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
451 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
452
24992
5701e23ebcb4 Better handling of win32 GUI thread:
zuxy
parents: 23148
diff changeset
453 while(GetMessage(&msg, NULL, 0, 0))
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
454 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
455 TranslateMessage(&msg);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
456 DispatchMessage(&msg);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
457 }
23078
f81cd5be161b spelling cosmetics
diego
parents: 23077
diff changeset
458 fprintf(stderr, "[GUI] GUI thread terminated.\n");
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
459 fflush(stderr);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
460 return 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
461 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
462
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
463 void guiInit(void)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
464 {
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
465 memset(&guiInfo, 0, sizeof(guiInfo));
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
466 /* Create The gui thread */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
467 if (!mygui)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
468 {
33358
c9c9f015619b Don't use CreateThread() unconditionally.
ib
parents: 33303
diff changeset
469 hThread = _beginthreadex(NULL, 0, GuiThread, NULL, 0, &threadId);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
470 mp_msg(MSGT_GPLAYER, MSGL_V, "[GUI] Creating GUI Thread 0x%04x\n", threadId);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
471 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
472
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
473 /* Wait until the gui is created */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
474 while(!mygui) Sleep(100);
23078
f81cd5be161b spelling cosmetics
diego
parents: 23077
diff changeset
475 mp_msg(MSGT_GPLAYER, MSGL_V, "[GUI] GUI thread started.\n");
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
476 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
477
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
478 void guiDone(void)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
479 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
480 if(mygui)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
481 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
482 fprintf(stderr, "[GUI] Closed by main mplayer window\n");
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
483 fflush(stderr);
24992
5701e23ebcb4 Better handling of win32 GUI thread:
zuxy
parents: 23148
diff changeset
484 PostThreadMessage(threadId, WM_QUIT, 0, 0);
5701e23ebcb4 Better handling of win32 GUI thread:
zuxy
parents: 23148
diff changeset
485 WaitForSingleObject(hThread, INFINITE);
5701e23ebcb4 Better handling of win32 GUI thread:
zuxy
parents: 23148
diff changeset
486 CloseHandle(hThread);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
487 mygui->uninit(mygui);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
488 free(mygui);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
489 mygui = NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
490 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
491 /* Remove tray icon */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
492 Shell_NotifyIcon(NIM_DELETE, &nid);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
493 cfg_write();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
494 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
495
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
496 /* this function gets called by mplayer to update the gui */
33726
a800f30c40d1 Cosmetic: Rename gui() parameter.
ib
parents: 33725
diff changeset
497 int gui(int what, void *arg)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
498 {
30722
b0342ca7ea61 Fix windows Gui compilation and remove some related typecasts.
reimar
parents: 30558
diff changeset
499 stream_t *stream = arg;
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 26457
diff changeset
500 #ifdef CONFIG_DVDREAD
33730
b4c64f168b29 Remove gui() GMP_SET_DVD.
ib
parents: 33726
diff changeset
501 dvd_priv_t *dvdp;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
502 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
503 if(!mygui || !mygui->skin) return 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
504
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
505 if(guiInfo.mpcontext)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
506 {
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
507 audio_out = mpctx_get_audio_out(guiInfo.mpcontext);
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
508 video_out = mpctx_get_video_out(guiInfo.mpcontext);
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
509 mixer = mpctx_get_mixer(guiInfo.mpcontext);
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
510 playtree = mpctx_get_playtree_iter(guiInfo.mpcontext);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
511 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
512
33726
a800f30c40d1 Cosmetic: Rename gui() parameter.
ib
parents: 33725
diff changeset
513 switch (what)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
514 {
33731
81f71d910333 Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents: 33730
diff changeset
515 case GUI_PREPARE:
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
516 {
33731
81f71d910333 Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents: 33730
diff changeset
517 gui(GUI_SET_FILE, 0);
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
518 guiInfo.DiskChanged = 0;
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
519 guiInfo.FilenameChanged = 0;
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
520 guiInfo.NewPlay = 0;
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
521 switch(guiInfo.StreamType)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
522 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
523 case STREAMTYPE_PLAYLIST:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
524 break;
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 26457
diff changeset
525 #ifdef CONFIG_DVDREAD
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
526 case STREAMTYPE_DVD:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
527 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
528 char tmp[512];
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
529 dvd_title = guiInfo.DVD.current_title;
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
530 dvd_chapter = guiInfo.DVD.current_chapter;
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
531 dvd_angle = guiInfo.DVD.current_angle;
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
532 sprintf(tmp,"dvd://%d", guiInfo.Title);
33740
2c02269701bd Remove macros guiSetFilename() and guiSetDF() from interface.h.
ib
parents: 33737
diff changeset
533 setdup(&guiInfo.Filename, tmp);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
534 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
535 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
536 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
537 }
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
538 if(guiInfo.Filename)
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
539 filename = strdup(guiInfo.Filename);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
540 else if(filename)
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
541 strcpy(guiInfo.Filename, filename);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
542 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
543 }
33731
81f71d910333 Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents: 33730
diff changeset
544 case GUI_SET_AUDIO:
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
545 {
33679
2d3199623440 Simplify code of guiGetEvent type guiSetAudio.
ib
parents: 33670
diff changeset
546 guiInfo.MovieWindow = (arg && !guiInfo.sh_video);
33661
b2071e60b20b Rename guiGetEvent type guiSetAudioOnly guiSetAudio.
ib
parents: 33660
diff changeset
547 // NOTE: This type doesn't mean (and never meant) that we have
b2071e60b20b Rename guiGetEvent type guiSetAudioOnly guiSetAudio.
ib
parents: 33660
diff changeset
548 // *just* audio, so there probably should be a check before
b2071e60b20b Rename guiGetEvent type guiSetAudioOnly guiSetAudio.
ib
parents: 33660
diff changeset
549 // hiding (see gui/interface.c).
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
550 if(IsWindowVisible(mygui->subwindow))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
551 ShowWindow(mygui->subwindow, SW_HIDE);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
552 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
553 }
33731
81f71d910333 Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents: 33730
diff changeset
554 case GUI_SET_CONTEXT:
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
555 guiInfo.mpcontext = arg;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
556 break;
33731
81f71d910333 Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents: 33730
diff changeset
557 case GUI_SET_VIDEO:
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
558 {
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
559 guiInfo.sh_video = arg;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
560 if (arg)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
561 {
30722
b0342ca7ea61 Fix windows Gui compilation and remove some related typecasts.
reimar
parents: 30558
diff changeset
562 sh_video_t *sh = arg;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
563 codecname = sh->codec->name;
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
564 guiInfo.FPS = sh->fps;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
565
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
566 /* we have video, show the subwindow */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
567 if(!IsWindowVisible(mygui->subwindow) || IsIconic(mygui->subwindow))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
568 ShowWindow(mygui->subwindow, SW_SHOWNORMAL);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
569 if(WinID == -1)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
570 update_subwindow();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
571
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
572 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
573 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
574 }
33731
81f71d910333 Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents: 33730
diff changeset
575 case GUI_SETUP_VIDEO_WINDOW:
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
576 {
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
577 guiInfo.MovieWidth = vo_dwidth;
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
578 guiInfo.MovieHeight = vo_dheight;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
579
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
580 sub_aspect = (float)guiInfo.MovieWidth/guiInfo.MovieHeight;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
581 if(WinID != -1)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
582 update_subwindow();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
583 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
584 }
33731
81f71d910333 Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents: 33730
diff changeset
585 case GUI_SET_STREAM:
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
586 {
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
587 guiInfo.StreamType = stream->type;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
588 switch(stream->type)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
589 {
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 26457
diff changeset
590 #ifdef CONFIG_DVDREAD
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
591 case STREAMTYPE_DVD:
33730
b4c64f168b29 Remove gui() GMP_SET_DVD.
ib
parents: 33726
diff changeset
592 dvdp = stream->priv;
b4c64f168b29 Remove gui() GMP_SET_DVD.
ib
parents: 33726
diff changeset
593 guiInfo.DVD.titles = dvdp->vmg_file->tt_srpt->nr_of_srpts;
b4c64f168b29 Remove gui() GMP_SET_DVD.
ib
parents: 33726
diff changeset
594 guiInfo.DVD.chapters = dvdp->vmg_file->tt_srpt->title[dvd_title].nr_of_ptts;
b4c64f168b29 Remove gui() GMP_SET_DVD.
ib
parents: 33726
diff changeset
595 guiInfo.DVD.angles = dvdp->vmg_file->tt_srpt->title[dvd_title].nr_of_angles;
b4c64f168b29 Remove gui() GMP_SET_DVD.
ib
parents: 33726
diff changeset
596 guiInfo.DVD.nr_of_audio_channels = dvdp->nr_of_channels;
b4c64f168b29 Remove gui() GMP_SET_DVD.
ib
parents: 33726
diff changeset
597 memcpy(guiInfo.DVD.audio_streams, dvdp->audio_streams, sizeof(dvdp->audio_streams));
b4c64f168b29 Remove gui() GMP_SET_DVD.
ib
parents: 33726
diff changeset
598 guiInfo.DVD.nr_of_subtitles = dvdp->nr_of_subtitles;
b4c64f168b29 Remove gui() GMP_SET_DVD.
ib
parents: 33726
diff changeset
599 memcpy(guiInfo.DVD.subtitles, dvdp->subtitles, sizeof(dvdp->subtitles));
b4c64f168b29 Remove gui() GMP_SET_DVD.
ib
parents: 33726
diff changeset
600 guiInfo.DVD.current_title = dvd_title + 1;
b4c64f168b29 Remove gui() GMP_SET_DVD.
ib
parents: 33726
diff changeset
601 guiInfo.DVD.current_chapter = dvd_chapter + 1;
b4c64f168b29 Remove gui() GMP_SET_DVD.
ib
parents: 33726
diff changeset
602 guiInfo.DVD.current_angle = dvd_angle + 1;
b4c64f168b29 Remove gui() GMP_SET_DVD.
ib
parents: 33726
diff changeset
603 guiInfo.Track = dvd_title + 1;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
604 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
605 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
606 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
607 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
608 }
33731
81f71d910333 Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents: 33730
diff changeset
609 case GUI_REDRAW:
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
610 mygui->updatedisplay(mygui, mygui->mainwindow);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
611 break;
33731
81f71d910333 Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents: 33730
diff changeset
612 case GUI_SET_AFILTER:
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
613 guiInfo.afilter = arg;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
614 break;
33731
81f71d910333 Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents: 33730
diff changeset
615 case GUI_SET_STATE:
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
616 {
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
617 guiInfo.Playing = (int) arg;
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
618 switch (guiInfo.Playing)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
619 {
33614
79743a5cf4f0 Rename the symbolic playback state constants.
ib
parents: 33611
diff changeset
620 case GUI_PLAY:
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
621 {
33615
1f9a31d4f114 Replace all playback integer constants by their symbolic constants.
ib
parents: 33614
diff changeset
622 guiInfo.Playing = GUI_PLAY;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
623 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
624 }
33614
79743a5cf4f0 Rename the symbolic playback state constants.
ib
parents: 33611
diff changeset
625 case GUI_STOP:
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
626 {
33615
1f9a31d4f114 Replace all playback integer constants by their symbolic constants.
ib
parents: 33614
diff changeset
627 guiInfo.Playing = GUI_STOP;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
628 if(movie_aspect >= 0)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
629 movie_aspect = -1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
630 update_subwindow();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
631 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
632 }
33614
79743a5cf4f0 Rename the symbolic playback state constants.
ib
parents: 33611
diff changeset
633 case GUI_PAUSE:
33615
1f9a31d4f114 Replace all playback integer constants by their symbolic constants.
ib
parents: 33614
diff changeset
634 guiInfo.Playing = GUI_PAUSE;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
635 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
636 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
637 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
638 }
33731
81f71d910333 Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents: 33730
diff changeset
639 case GUI_RUN_COMMAND:
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
640 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
641 mp_msg(MSGT_GPLAYER,MSGL_V, "cmd: %d\n", (int) arg);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
642 /* MPlayer asks us to quit */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
643 switch((int) arg)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
644 {
31312
0b7792622c88 Remove Gui-specific slave commands and associated key-bindings and other code.
reimar
parents: 30901
diff changeset
645 case MP_CMD_VO_FULLSCREEN:
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
646 uiFullScreen();
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
647 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
648 case MP_CMD_QUIT:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
649 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
650 mygui->uninit(mygui);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
651 free(mygui);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
652 mygui = NULL;
30558
71acebef19ec Fix win32 gui compilation.
reimar
parents: 27391
diff changeset
653 exit_player(EXIT_QUIT);
33666
0f592e8530f1 Change return code of guiGetEvent() to indicate success.
ib
parents: 33661
diff changeset
654 return 1;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
655 }
33696
24d919fb6778 Don't let MPlayer directly call user interface functions.
ib
parents: 33695
diff changeset
656 case MP_CMD_PLAY_TREE_STEP:
24d919fb6778 Don't let MPlayer directly call user interface functions.
ib
parents: 33695
diff changeset
657 guiSetEvent(evNext);
24d919fb6778 Don't let MPlayer directly call user interface functions.
ib
parents: 33695
diff changeset
658 break;
24d919fb6778 Don't let MPlayer directly call user interface functions.
ib
parents: 33695
diff changeset
659 case -MP_CMD_PLAY_TREE_STEP:
24d919fb6778 Don't let MPlayer directly call user interface functions.
ib
parents: 33695
diff changeset
660 guiSetEvent(evPrev);
24d919fb6778 Don't let MPlayer directly call user interface functions.
ib
parents: 33695
diff changeset
661 break;
24d919fb6778 Don't let MPlayer directly call user interface functions.
ib
parents: 33695
diff changeset
662 case MP_CMD_STOP:
24d919fb6778 Don't let MPlayer directly call user interface functions.
ib
parents: 33695
diff changeset
663 guiSetEvent(evStop);
24d919fb6778 Don't let MPlayer directly call user interface functions.
ib
parents: 33695
diff changeset
664 break;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
665 default:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
666 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
667 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
668 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
669 }
33731
81f71d910333 Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents: 33730
diff changeset
670 case GUI_SET_FILE:
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
671 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
672 audio_id = -1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
673 video_id = -1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
674 dvdsub_id = -1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
675 vobsub_id = -1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
676 stream_cache_size = -1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
677 autosync = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
678 dvd_title = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
679 force_fps = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
680 if(!mygui->playlist->tracks) return 0;
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
681 filename = guiInfo.Filename = mygui->playlist->tracks[mygui->playlist->current]->filename;
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
682 guiInfo.Track = mygui->playlist->current + 1;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
683 if(gtkAONorm) greplace(&af_cfg.list, "volnorm", "volnorm");
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
684 if(gtkAOExtraStereo)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
685 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
686 char *name = malloc(12 + 20 + 1);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
687 snprintf(name, 12 + 20, "extrastereo=%f", gtkAOExtraStereoMul);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
688 name[12 + 20] = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
689 greplace(&af_cfg.list, "extrastereo", name);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
690 free(name);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
691 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
692 if(gtkCacheOn) stream_cache_size = gtkCacheSize;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
693 if(gtkAutoSyncOn) autosync = gtkAutoSync;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
694 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
695 }
33732
90c992ac5011 Make guiEventHandling() a gui() call.
ib
parents: 33731
diff changeset
696 case GUI_HANDLE_EVENTS:
90c992ac5011 Make guiEventHandling() a gui() call.
ib
parents: 33731
diff changeset
697 break;
33731
81f71d910333 Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents: 33730
diff changeset
698 case GUI_SET_MIXER:
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
699 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
700 if(audio_out)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
701 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
702 /* Some audio_out drivers do not support balance e.g. dsound */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
703 /* FIXME this algo is not correct */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
704 float l, r;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
705 mixer_getvolume(mixer, &l, &r);
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
706 guiInfo.Volume = (r > l ? r : l); /* max(r,l) */
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
707 if (r != l)
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
708 guiInfo.Balance = ((r-l) + 100.0f) * 0.5f;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
709 else
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
710 guiInfo.Balance = 50.0f;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
711 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
712 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
713 }
33731
81f71d910333 Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents: 33730
diff changeset
714 case GUI_END_FILE:
33694
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
715 {
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
716 if(!uiGotoTheNext && guiInfo.Playing)
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
717 {
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
718 uiGotoTheNext = 1;
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
719 break;
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
720 }
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
721
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
722 if(uiGotoTheNext && guiInfo.Playing &&
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
723 (mygui->playlist->current < (mygui->playlist->trackcount - 1)) &&
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
724 guiInfo.StreamType != STREAMTYPE_DVD &&
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
725 guiInfo.StreamType != STREAMTYPE_DVDNAV)
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
726 {
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
727 /* we've finished this file, reset the aspect */
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
728 if(movie_aspect >= 0)
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
729 movie_aspect = -1;
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
730
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
731 uiGotoTheNext = guiInfo.FilenameChanged = guiInfo.NewPlay = 1;
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
732 uiSetFileName(NULL, mygui->playlist->tracks[(mygui->playlist->current)++]->filename, STREAMTYPE_STREAM);
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
733 //sprintf(guiInfo.Filename, mygui->playlist->tracks[(mygui->playlist->current)++]->filename);
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
734 }
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
735
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
736 if(guiInfo.FilenameChanged && guiInfo.NewPlay)
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
737 break;
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
738
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
739 guiInfo.TimeSec = 0;
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
740 guiInfo.Position = 0;
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
741 guiInfo.AudioChannels = 0;
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
742
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
743 #ifdef CONFIG_DVDREAD
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
744 guiInfo.DVD.current_title = 1;
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
745 guiInfo.DVD.current_chapter = 1;
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
746 guiInfo.DVD.current_angle = 1;
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
747 #endif
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
748
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
749 if (mygui->playlist->current == (mygui->playlist->trackcount - 1))
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
750 mygui->playlist->current = 0;
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
751
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
752 fullscreen = 0;
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
753 if(style == WS_VISIBLE | WS_POPUP)
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
754 {
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
755 style = WS_OVERLAPPEDWINDOW | WS_SIZEBOX;
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
756 SetWindowLong(mygui->subwindow, GWL_STYLE, style);
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
757 }
33731
81f71d910333 Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents: 33730
diff changeset
758 gui(GUI_SET_STATE, (void *) GUI_STOP);
33694
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
759 break;
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
760 }
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
761 default:
33726
a800f30c40d1 Cosmetic: Rename gui() parameter.
ib
parents: 33725
diff changeset
762 mp_msg(MSGT_GPLAYER, MSGL_ERR, "[GUI] GOT UNHANDLED EVENT %i\n", what);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
763 }
33666
0f592e8530f1 Change return code of guiGetEvent() to indicate success.
ib
parents: 33661
diff changeset
764 return 1;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
765 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
766
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
767 /* This function adds/inserts one file into the gui playlist */
33579
cd855f2f1024 win32 gui: Mark some functions as static.
diego
parents: 33578
diff changeset
768 static int import_file_into_gui(char *pathname, int insert)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
769 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
770 char filename[MAX_PATH];
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
771 char *filepart = filename;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
772
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
773 if (strstr(pathname, "://"))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
774 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
775 mp_msg(MSGT_GPLAYER, MSGL_V, "[GUI] Adding special %s\n", pathname);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
776 mygui->playlist->add_track(mygui->playlist, pathname, NULL, NULL, 0);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
777 return 1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
778 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
779 if (GetFullPathName(pathname, MAX_PATH, filename, &filepart))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
780 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
781 if (!(GetFileAttributes(filename) & FILE_ATTRIBUTE_DIRECTORY))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
782 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
783 mp_msg(MSGT_GPLAYER, MSGL_V, "[GUI] Adding filename: %s - fullpath: %s\n", filepart, filename);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
784 mygui->playlist->add_track(mygui->playlist, filename, NULL, filepart, 0);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
785 return 1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
786 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
787 else
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
788 mp_msg(MSGT_GPLAYER, MSGL_V, "[GUI] Cannot add %s\n", filename);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
789 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
790
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
791 return 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
792 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
793
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
794 /* This function imports the initial playtree (based on cmd-line files) into the gui playlist
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
795 by either:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
796 - overwriting gui pl (enqueue=0) */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
797
33734
1fbe7adc4eaf Rename GUI playtree import functions.
ib
parents: 33732
diff changeset
798 int guiInitializePlaylist(play_tree_t *my_playtree, m_config_t *config, int enqueue)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
799 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
800 play_tree_iter_t *my_pt_iter = NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
801 int result = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
802
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
803 if(!mygui) guiInit();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
804
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
805 if((my_pt_iter = pt_iter_create(&my_playtree, config)))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
806 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
807 while ((filename = pt_iter_get_next_file(my_pt_iter)) != NULL)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
808 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
809 if (parse_filename(filename, my_playtree, config, 0))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
810 result = 1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
811 else if (import_file_into_gui(filename, 0)) /* Add it to end of list */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
812 result = 1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
813 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
814 }
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
815 uiGotoTheNext = 1;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
816
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
817 if (result)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
818 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
819 mygui->playlist->current = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
820 filename = mygui->playlist->tracks[0]->filename;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
821 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
822 return result;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
823 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
824
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
825 /* This function imports and inserts an playtree, that is created "on the fly", for example by
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
826 parsing some MOV-Reference-File; or by loading an playlist with "File Open"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
827 The file which contained the playlist is thereby replaced with it's contents. */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
828
33734
1fbe7adc4eaf Rename GUI playtree import functions.
ib
parents: 33732
diff changeset
829 int guiAddPlaylist(play_tree_t *my_playtree, m_config_t *config)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
830 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
831 play_tree_iter_t *my_pt_iter = NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
832 int result = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
833
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
834 if((my_pt_iter = pt_iter_create(&my_playtree, config)))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
835 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
836 while ((filename = pt_iter_get_next_file(my_pt_iter)) != NULL)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
837 if (import_file_into_gui(filename, 1)) /* insert it into the list and set plCurrent = new item */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
838 result = 1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
839 pt_iter_destroy(&my_pt_iter);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
840 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
841 filename = NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
842 return result;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
843 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
844
33579
cd855f2f1024 win32 gui: Mark some functions as static.
diego
parents: 33578
diff changeset
845 static inline void gtkMessageBox(int type, const char *str)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
846 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
847 if (type & GTK_MB_FATAL)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
848 MessageBox(NULL, str, "MPlayer GUI for Windows Error", MB_OK | MB_ICONERROR);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
849
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
850 fprintf(stderr, "[GUI] MessageBox: %s\n", str);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
851 fflush(stderr);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
852 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
853
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
854 static int update_subwindow(void)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
855 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
856 int x,y;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
857 RECT rd;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
858 WINDOWPOS wp;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
859
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
860 if(!sub_window)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
861 {
33567
251a48bca536 Implement uiStop and remove outdated comment.
reimar
parents: 33557
diff changeset
862 WinID = -1;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
863
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
864 if(IsWindowVisible(mygui->subwindow) && guiInfo.sh_video && guiInfo.Playing)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
865 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
866 ShowWindow(mygui->subwindow, SW_HIDE);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
867 return 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
868 }
33679
2d3199623440 Simplify code of guiGetEvent type guiSetAudio.
ib
parents: 33670
diff changeset
869 else if(!guiInfo.MovieWindow)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
870 return 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
871 else ShowWindow(mygui->subwindow, SW_SHOW);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
872 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
873
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
874 /* we've come out of fullscreen at the end of file */
33679
2d3199623440 Simplify code of guiGetEvent type guiSetAudio.
ib
parents: 33670
diff changeset
875 if((!IsWindowVisible(mygui->subwindow) || IsIconic(mygui->subwindow)) && guiInfo.MovieWindow)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
876 ShowWindow(mygui->subwindow, SW_SHOWNORMAL);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
877
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
878 /* get our current window coordinates */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
879 GetWindowRect(mygui->subwindow, &rd);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
880
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
881 x = rd.left;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
882 y = rd.top;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
883
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
884 /* restore sub window position when coming out of fullscreen */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
885 if(x <= 0) x = old_rect.left;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
886 if(y <= 0) y = old_rect.top;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
887
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
888 if(!guiInfo.Playing)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
889 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
890 window *desc = NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
891 int i;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
892
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
893 for (i=0; i<mygui->skin->windowcount; i++)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
894 if(mygui->skin->windows[i]->type == wiSub)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
895 desc = mygui->skin->windows[i];
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
896
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
897 rd.right = rd.left+desc->base->bitmap[0]->width;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
898 rd.bottom = rd.top+desc->base->bitmap[0]->height;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
899 sub_aspect = (float)(rd.right-rd.left)/(rd.bottom-rd.top);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
900 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
901 else
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
902 {
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
903 rd.right = rd.left+guiInfo.MovieWidth;
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
904 rd.bottom = rd.top+guiInfo.MovieHeight;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
905
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
906 if (movie_aspect > 0.0) // forced aspect from the cmdline
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
907 sub_aspect = movie_aspect;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
908 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
909
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
910
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
911 AdjustWindowRect(&rd, WS_OVERLAPPEDWINDOW | WS_SIZEBOX, 0);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
912 SetWindowPos(mygui->subwindow, 0, x, y, rd.right-rd.left, rd.bottom-rd.top, SWP_NOOWNERZORDER);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
913
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
914 wp.hwnd = mygui->subwindow;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
915 wp.x = rd.left;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
916 wp.y = rd.top;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
917 wp.cx = rd.right-rd.left;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
918 wp.cy = rd.bottom-rd.top;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
919 wp.flags = SWP_NOOWNERZORDER | SWP_SHOWWINDOW;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
920
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
921 /* erase the bitmap image if there's video */
33615
1f9a31d4f114 Replace all playback integer constants by their symbolic constants.
ib
parents: 33614
diff changeset
922 if(guiInfo.Playing != GUI_STOP && guiInfo.sh_video)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
923 SendMessage(mygui->subwindow, WM_ERASEBKGND, (WPARAM)GetDC(mygui->subwindow), 0);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
924
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
925 /* reset the window aspect */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
926 SendMessage(mygui->subwindow, WM_WINDOWPOSCHANGED, 0, (LPARAM)&wp);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
927 return 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
928 }