annotate gui/win32/interface.c @ 33298:f0733d37f56b

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