annotate gui/win32/interface.c @ 34115:3d7ee643b110

Port to Wine. This makes MPlayer and the GUI compile and run as a Wine executable, which is mainly to allow Windows code checking in a Linux environment. In Makefile: Generalize the windres call by specifying option "-o" for the output file. In gui/win32/interface.c: Use the same function to create a thread as Cygwin, and convert Windows style file names so that they are accessible in the Linux environment. In osdep/priority.c: Include windows.h. In configure: Add system "Wine" which shall be considered (mostly) a win32 system. Since winegcc by default compiles all files with the "-fpic" flag, remove it, and remove all MinGW compatibility WIN32 defines, because we're not compiling for real Windows. Define to not use Windows sockets (Wine uses different ones) and replace Windows' stricmp by strcasecmp. Ensure that yasm's object format isn't win32 and that HAVE_LINUX_DVD_STRUCT will be defined. In stream/tvi_dshow.c: Define MP_DEFINE_LOCAL_GUID, because Wine's DEFINE_GUID macro isn't compatible using "static" with it. In loader/com.h: Rename the IIDs to become local ones, because Wine's unknwn.h not only declares but defines them. In mplayer.c: Don't define a SIGSEGV signal handler, or the Wine executable will crash.
author ib
date Sat, 15 Oct 2011 13:20:52 +0000
parents b77b5e7bee72
children 39ca8e25ba79
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
34115
3d7ee643b110 Port to Wine.
ib
parents: 34084
diff changeset
26 #if defined(__CYGWIN__) || defined(__WINE__)
33358
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"
33761
16286ee1fc71 Fix Win32 GUI compilation problems.
ib
parents: 33752
diff changeset
51 #include "gui/ui/actions.h"
33557
71ec25d1da10 Fix compilation after r33644.
ib
parents: 33555
diff changeset
52 #include "gui/ui/gmplayer.h"
33770
6134493605c6 Use macro nfree() in Win32 GUI code.
ib
parents: 33761
diff changeset
53 #include "gui/util/mem.h"
33761
16286ee1fc71 Fix Win32 GUI compilation problems.
ib
parents: 33752
diff changeset
54 #include "gui/util/list.h"
16286ee1fc71 Fix Win32 GUI compilation problems.
ib
parents: 33752
diff changeset
55 #include "gui/util/string.h"
30558
71acebef19ec Fix win32 gui compilation.
reimar
parents: 27391
diff changeset
56 #include "mp_core.h"
32093
e34226e0a890 Fix win32 gui compilation
reimar
parents: 31426
diff changeset
57 #include "mpcommon.h"
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
58 #include "gui.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
59 #include "dialogs.h"
27391
1d2faa1020fb Rename a bunch of miscellaneous preprocessor directives.
diego
parents: 27341
diff changeset
60 #ifdef CONFIG_LIBCDIO
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
61 #include <cdio/cdio.h>
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
62 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
63
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
64 int guiWinID = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
65
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
66 char *skinName = NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
67 char *codecname = NULL;
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
68 int uiGotoTheNext = 1;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
69 static gui_t *mygui = NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
70 static int update_subwindow(void);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
71 static RECT old_rect;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
72 static DWORD style;
24992
5701e23ebcb4 Better handling of win32 GUI thread:
zuxy
parents: 23148
diff changeset
73 static HANDLE hThread;
5701e23ebcb4 Better handling of win32 GUI thread:
zuxy
parents: 23148
diff changeset
74 static unsigned threadId;
25765
304fc0bbefe1 audio_out / video_out structs should be treated as const
reimar
parents: 24992
diff changeset
75 const ao_functions_t *audio_out = NULL;
304fc0bbefe1 audio_out / video_out structs should be treated as const
reimar
parents: 24992
diff changeset
76 const vo_functions_t *video_out = NULL;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
77 mixer_t *mixer = NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
78
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
79 /* test for playlist files, no need to specify -playlist on the commandline.
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
80 * add any conceivable playlist extensions here.
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
81 * - Erik
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
82 */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
83 int parse_filename(char *file, play_tree_t *playtree, m_config_t *mconfig, int clear)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
84 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
85 if(clear)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
86 mygui->playlist->clear_playlist(mygui->playlist);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
87
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
88 if(strstr(file, ".m3u") || strstr(file, ".pls"))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
89 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
90 playtree = parse_playlist_file(file);
33752
6cea6d268f97 Cosmetic: Rename the GUI playlist functions.
ib
parents: 33740
diff changeset
91 guiPlaylistAdd(playtree, mconfig);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
92 return 1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
93 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
94 return 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
95 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
96
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
97 /* this function gets called by the gui to update mplayer */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
98 static void guiSetEvent(int event)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
99 {
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
100 if(guiInfo.mpcontext)
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
101 mixer = mpctx_get_mixer(guiInfo.mpcontext);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
102
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
103 switch(event)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
104 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
105 case evPlay:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
106 case evPlaySwitchToPause:
23148
71efd1fc20c8 add missing case value, fixes functionality when using some skins.
vayne
parents: 23147
diff changeset
107 case evPauseSwitchToPlay:
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
108 uiPlay();
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
109 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
110 case evPause:
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
111 uiPause();
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
112 break;
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 26457
diff changeset
113 #ifdef CONFIG_DVDREAD
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
114 case evPlayDVD:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
115 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
116 static char dvdname[MAX_PATH];
33876
4789b8eed97e Get rid of a bunch of needless or redundant guiInfo members.
ib
parents: 33791
diff changeset
117 guiInfo.Track = dvd_title;
4789b8eed97e Get rid of a bunch of needless or redundant guiInfo members.
ib
parents: 33791
diff changeset
118 guiInfo.Chapter = dvd_chapter;
4789b8eed97e Get rid of a bunch of needless or redundant guiInfo members.
ib
parents: 33791
diff changeset
119 guiInfo.Angle = dvd_angle;
33890
c51e44dd38e2 Remove needless guiInfo member DiskChanged.
ib
parents: 33876
diff changeset
120 guiInfo.NewPlay = GUI_FILE_SAME;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
121
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
122 uiSetFileName(NULL, dvd_device, STREAMTYPE_DVD);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
123 dvdname[0] = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
124 strcat(dvdname, "DVD Movie");
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
125 GetVolumeInformation(dvd_device, dvdname, MAX_PATH, NULL, NULL, NULL, NULL, 0);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
126 capitalize(dvdname);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
127 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
128 gui(GUI_PREPARE, (void *) STREAMTYPE_DVD);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
129 mygui->playlist->clear_playlist(mygui->playlist);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
130 mygui->playlist->add_track(mygui->playlist, filename, NULL, dvdname, 0);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
131 mygui->startplay(mygui);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
132 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
133 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
134 #endif
27391
1d2faa1020fb Rename a bunch of miscellaneous preprocessor directives.
diego
parents: 27341
diff changeset
135 #ifdef CONFIG_LIBCDIO
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
136 case evPlayCD:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
137 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
138 int i;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
139 char track[10];
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
140 char trackname[10];
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
141 CdIo_t *p_cdio = cdio_open(NULL, DRIVER_UNKNOWN);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
142 track_t i_tracks;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
143
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
144 if(p_cdio == NULL) printf("Couldn't find a driver.\n");
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
145 i_tracks = cdio_get_num_tracks(p_cdio);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
146
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
147 mygui->playlist->clear_playlist(mygui->playlist);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
148 for(i=0;i<i_tracks;i++)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
149 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
150 sprintf(track, "cdda://%d", i+1);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
151 sprintf(trackname, "Track %d", i+1);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
152 mygui->playlist->add_track(mygui->playlist, track, NULL, trackname, 0);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
153 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
154 cdio_destroy(p_cdio);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
155 mygui->startplay(mygui);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
156 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
157 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
158 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
159 case evFullScreen:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
160 mp_input_queue_cmd(mp_input_parse_cmd("vo_fullscreen"));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
161 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
162 case evExit:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
163 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
164 /* We are asking mplayer to exit, later it will ask us after uninit is made
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
165 this should be the only safe way to quit */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
166 mygui->activewidget = NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
167 mp_input_queue_cmd(mp_input_parse_cmd("quit"));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
168 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
169 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
170 case evStop:
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
171 if(guiInfo.Playing)
33731
81f71d910333 Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents: 33730
diff changeset
172 gui(GUI_SET_STATE, (void *) GUI_STOP);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
173 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
174 case evSetMoviePosition:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
175 {
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
176 rel_seek_secs = guiInfo.Position / 100.0f;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
177 abs_seek_pos = 3;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
178 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
179 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
180 case evForward10sec:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
181 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
182 rel_seek_secs = 10.0f;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
183 abs_seek_pos = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
184 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
185 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
186 case evBackward10sec:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
187 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
188 rel_seek_secs = -10.0f;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
189 abs_seek_pos = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
190 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
191 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
192 case evSetBalance:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
193 case evSetVolume:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
194 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
195 float l,r;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
196
33615
1f9a31d4f114 Replace all playback integer constants by their symbolic constants.
ib
parents: 33614
diff changeset
197 if (guiInfo.Playing == GUI_STOP)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
198 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
199
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
200 if (guiInfo.Balance == 50.0f)
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
201 mixer_setvolume(mixer, guiInfo.Volume, guiInfo.Volume);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
202
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
203 l = guiInfo.Volume * ((100.0f - guiInfo.Balance) / 50.0f);
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
204 r = guiInfo.Volume * ((guiInfo.Balance) / 50.0f);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
205
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
206 if (l > guiInfo.Volume) l=guiInfo.Volume;
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
207 if (r > guiInfo.Volume) r=guiInfo.Volume;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
208 mixer_setvolume(mixer, l, r);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
209 /* Check for balance support on mixer - there is a better way ?? */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
210 if (r != l)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
211 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
212 mixer_getvolume(mixer, &l, &r);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
213 if (r == l)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
214 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
215 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
216 mixer_setvolume(mixer, guiInfo.Volume, guiInfo.Volume);
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
217 guiInfo.Balance = 50.0f;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
218 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
219 }
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 evMute:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
223 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
224 mp_cmd_t * cmd = calloc(1, sizeof(*cmd));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
225 cmd->id=MP_CMD_MUTE;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
226 cmd->name=strdup("mute");
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
227 mp_input_queue_cmd(cmd);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
228 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
229 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
230 case evDropFile:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
231 case evLoadPlay:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
232 {
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
233 switch(guiInfo.StreamType)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
234 {
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 26457
diff changeset
235 #ifdef CONFIG_DVDREAD
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
236 case STREAMTYPE_DVD:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
237 {
33890
c51e44dd38e2 Remove needless guiInfo member DiskChanged.
ib
parents: 33876
diff changeset
238 guiInfo.NewPlay = GUI_FILE_SAME;
33731
81f71d910333 Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents: 33730
diff changeset
239 gui(GUI_SET_STATE, (void *) GUI_PLAY);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
240 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
241 }
23147
21c35763b178 compilation fix for disabling dvd functionality, patch by <bangbangbear at gmail dot com>, slightly modified by me.
vayne
parents: 23123
diff changeset
242 #endif
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
243 default:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
244 {
33890
c51e44dd38e2 Remove needless guiInfo member DiskChanged.
ib
parents: 33876
diff changeset
245 guiInfo.NewPlay = GUI_FILE_NEW;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
246 update_playlistwindow();
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
247 uiGotoTheNext = guiInfo.Playing? 0 : 1;
33731
81f71d910333 Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents: 33730
diff changeset
248 gui(GUI_SET_STATE, (void *) GUI_STOP);
81f71d910333 Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents: 33730
diff changeset
249 gui(GUI_SET_STATE, (void *) GUI_PLAY);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
250 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
251 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
252 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
253 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
254 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
255 case evNext:
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
256 uiNext();
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
257 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
258 case evPrev:
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
259 uiPrev();
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
260 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
261 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
262 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
263
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
264 void uiPlay( void )
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
265 {
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
266 if((!guiInfo.Filename ) || (guiInfo.Filename[0] == 0))
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
267 return;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
268
33615
1f9a31d4f114 Replace all playback integer constants by their symbolic constants.
ib
parents: 33614
diff changeset
269 if(guiInfo.Playing > GUI_STOP)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
270 {
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
271 uiPause();
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
272 return;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
273 }
33890
c51e44dd38e2 Remove needless guiInfo member DiskChanged.
ib
parents: 33876
diff changeset
274 guiInfo.NewPlay = GUI_FILE_NEW;
33731
81f71d910333 Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents: 33730
diff changeset
275 gui(GUI_SET_STATE, (void *) GUI_PLAY);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
276 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
277
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
278 void uiPause( void )
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
279 {
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
280 if(!guiInfo.Playing) return;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
281
33615
1f9a31d4f114 Replace all playback integer constants by their symbolic constants.
ib
parents: 33614
diff changeset
282 if(guiInfo.Playing == GUI_PLAY)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
283 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
284 mp_cmd_t * cmd = calloc(1, sizeof(*cmd));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
285 cmd->id=MP_CMD_PAUSE;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
286 cmd->name=strdup("pause");
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
287 mp_input_queue_cmd(cmd);
33615
1f9a31d4f114 Replace all playback integer constants by their symbolic constants.
ib
parents: 33614
diff changeset
288 } else guiInfo.Playing = GUI_PLAY;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
289 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
290
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
291 void uiNext(void)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
292 {
33615
1f9a31d4f114 Replace all playback integer constants by their symbolic constants.
ib
parents: 33614
diff changeset
293 if(guiInfo.Playing == GUI_PAUSE) return;
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
294 switch(guiInfo.StreamType)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
295 {
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 26457
diff changeset
296 #ifdef CONFIG_DVDREAD
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
297 case STREAMTYPE_DVD:
33876
4789b8eed97e Get rid of a bunch of needless or redundant guiInfo members.
ib
parents: 33791
diff changeset
298 if(guiInfo.Chapter == (guiInfo.Chapters - 1))
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
299 return;
33876
4789b8eed97e Get rid of a bunch of needless or redundant guiInfo members.
ib
parents: 33791
diff changeset
300 guiInfo.Chapter++;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
301 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
302 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
303 default:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
304 if(mygui->playlist->current == (mygui->playlist->trackcount - 1))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
305 return;
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
306 uiSetFileName(NULL, mygui->playlist->tracks[(mygui->playlist->current)++]->filename,
34075
b9cab6c0992c Restrict use of STREAMTYPE_STREAM in Win32 GUI.
ib
parents: 34073
diff changeset
307 STREAMTYPE_FILE);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
308 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
309 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
310 mygui->startplay(mygui);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
311 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
312
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
313 void uiPrev(void)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
314 {
33615
1f9a31d4f114 Replace all playback integer constants by their symbolic constants.
ib
parents: 33614
diff changeset
315 if(guiInfo.Playing == GUI_PAUSE) return;
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
316 switch(guiInfo.StreamType)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
317 {
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 26457
diff changeset
318 #ifdef CONFIG_DVDREAD
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
319 case STREAMTYPE_DVD:
33876
4789b8eed97e Get rid of a bunch of needless or redundant guiInfo members.
ib
parents: 33791
diff changeset
320 if(guiInfo.Chapter == 1)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
321 return;
33876
4789b8eed97e Get rid of a bunch of needless or redundant guiInfo members.
ib
parents: 33791
diff changeset
322 guiInfo.Chapter--;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
323 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
324 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
325 default:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
326 if(mygui->playlist->current == 0)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
327 return;
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
328 uiSetFileName(NULL, mygui->playlist->tracks[(mygui->playlist->current)--]->filename,
34075
b9cab6c0992c Restrict use of STREAMTYPE_STREAM in Win32 GUI.
ib
parents: 34073
diff changeset
329 STREAMTYPE_FILE);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
330 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
331 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
332 mygui->startplay(mygui);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
333 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
334
34115
3d7ee643b110 Port to Wine.
ib
parents: 34084
diff changeset
335 #ifdef __WINE__
3d7ee643b110 Port to Wine.
ib
parents: 34084
diff changeset
336 /**
3d7ee643b110 Port to Wine.
ib
parents: 34084
diff changeset
337 * @brief Convert a Windows style file name into an Unix style one.
3d7ee643b110 Port to Wine.
ib
parents: 34084
diff changeset
338 *
3d7ee643b110 Port to Wine.
ib
parents: 34084
diff changeset
339 * @param filename pointer to the file name to be converted
3d7ee643b110 Port to Wine.
ib
parents: 34084
diff changeset
340 *
3d7ee643b110 Port to Wine.
ib
parents: 34084
diff changeset
341 * @return pointer to the converted file name
3d7ee643b110 Port to Wine.
ib
parents: 34084
diff changeset
342 */
3d7ee643b110 Port to Wine.
ib
parents: 34084
diff changeset
343 static char *unix_name (char *filename)
3d7ee643b110 Port to Wine.
ib
parents: 34084
diff changeset
344 {
3d7ee643b110 Port to Wine.
ib
parents: 34084
diff changeset
345 static char *unix_filename;
3d7ee643b110 Port to Wine.
ib
parents: 34084
diff changeset
346 LPSTR (*CDECL wine_get_unix_file_name_ptr)(LPCWSTR);
3d7ee643b110 Port to Wine.
ib
parents: 34084
diff changeset
347 int wchar_conv;
3d7ee643b110 Port to Wine.
ib
parents: 34084
diff changeset
348
3d7ee643b110 Port to Wine.
ib
parents: 34084
diff changeset
349 if (*filename && (filename[1] == ':'))
3d7ee643b110 Port to Wine.
ib
parents: 34084
diff changeset
350 {
3d7ee643b110 Port to Wine.
ib
parents: 34084
diff changeset
351 wine_get_unix_file_name_ptr = (void *) GetProcAddress(GetModuleHandleA("KERNEL32"), "wine_get_unix_file_name");
3d7ee643b110 Port to Wine.
ib
parents: 34084
diff changeset
352 wchar_conv = MultiByteToWideChar(CP_UNIXCP, 0, filename, -1, NULL, 0);
3d7ee643b110 Port to Wine.
ib
parents: 34084
diff changeset
353
3d7ee643b110 Port to Wine.
ib
parents: 34084
diff changeset
354 if (wine_get_unix_file_name_ptr && wchar_conv)
3d7ee643b110 Port to Wine.
ib
parents: 34084
diff changeset
355 {
3d7ee643b110 Port to Wine.
ib
parents: 34084
diff changeset
356 WCHAR *ntpath;
3d7ee643b110 Port to Wine.
ib
parents: 34084
diff changeset
357 char *unix_name;
3d7ee643b110 Port to Wine.
ib
parents: 34084
diff changeset
358
3d7ee643b110 Port to Wine.
ib
parents: 34084
diff changeset
359 ntpath = HeapAlloc(GetProcessHeap(), 0, sizeof(*ntpath) * (wchar_conv + 1));
3d7ee643b110 Port to Wine.
ib
parents: 34084
diff changeset
360 MultiByteToWideChar(CP_UNIXCP, 0, filename, -1, ntpath, wchar_conv);
3d7ee643b110 Port to Wine.
ib
parents: 34084
diff changeset
361 unix_name = wine_get_unix_file_name_ptr(ntpath);
3d7ee643b110 Port to Wine.
ib
parents: 34084
diff changeset
362 setdup(&unix_filename, unix_name);
3d7ee643b110 Port to Wine.
ib
parents: 34084
diff changeset
363 filename = unix_filename;
3d7ee643b110 Port to Wine.
ib
parents: 34084
diff changeset
364 HeapFree(GetProcessHeap(), 0, unix_name);
3d7ee643b110 Port to Wine.
ib
parents: 34084
diff changeset
365 HeapFree(GetProcessHeap(), 0, ntpath);
3d7ee643b110 Port to Wine.
ib
parents: 34084
diff changeset
366 }
3d7ee643b110 Port to Wine.
ib
parents: 34084
diff changeset
367 }
3d7ee643b110 Port to Wine.
ib
parents: 34084
diff changeset
368
3d7ee643b110 Port to Wine.
ib
parents: 34084
diff changeset
369 return filename;
3d7ee643b110 Port to Wine.
ib
parents: 34084
diff changeset
370 }
3d7ee643b110 Port to Wine.
ib
parents: 34084
diff changeset
371 #endif
3d7ee643b110 Port to Wine.
ib
parents: 34084
diff changeset
372
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
373 void uiSetFileName(char *dir, char *name, int type)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
374 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
375 if(!name) return;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
376 if(!dir)
33740
2c02269701bd Remove macros guiSetFilename() and guiSetDF() from interface.h.
ib
parents: 33737
diff changeset
377 setdup(&guiInfo.Filename, name);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
378 else
33740
2c02269701bd Remove macros guiSetFilename() and guiSetDF() from interface.h.
ib
parents: 33737
diff changeset
379 setddup(&guiInfo.Filename, dir, name);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
380
34064
54becc464788 Set MPlayer filename in uiSetFileName().
ib
parents: 34058
diff changeset
381 filename = guiInfo.Filename;
34115
3d7ee643b110 Port to Wine.
ib
parents: 34084
diff changeset
382 #ifdef __WINE__
3d7ee643b110 Port to Wine.
ib
parents: 34084
diff changeset
383 filename = unix_name(filename);
3d7ee643b110 Port to Wine.
ib
parents: 34084
diff changeset
384 #endif
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
385 guiInfo.StreamType = type;
34064
54becc464788 Set MPlayer filename in uiSetFileName().
ib
parents: 34058
diff changeset
386
33897
e0d211c62cf7 Cosmetic: Rename some guiInfo members.
ib
parents: 33894
diff changeset
387 nfree(guiInfo.AudioFilename);
e0d211c62cf7 Cosmetic: Rename some guiInfo members.
ib
parents: 33894
diff changeset
388 nfree(guiInfo.SubtitleFilename);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
389 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
390
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
391 void uiFullScreen( void )
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
392 {
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
393 if(!guiInfo.sh_video) return;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
394
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
395 if(sub_window)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
396 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
397 if(!fullscreen && IsWindowVisible(mygui->subwindow) && !IsIconic(mygui->subwindow))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
398 GetWindowRect(mygui->subwindow, &old_rect);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
399
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
400 if(fullscreen)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
401 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
402 fullscreen = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
403 style = WS_OVERLAPPEDWINDOW | WS_SIZEBOX;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
404 } else {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
405 fullscreen = 1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
406 style = WS_VISIBLE | WS_POPUP;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
407 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
408 SetWindowLong(mygui->subwindow, GWL_STYLE, style);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
409 update_subwindow();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
410 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
411 video_out->control(VOCTRL_FULLSCREEN, 0);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
412 if(sub_window) ShowWindow(mygui->subwindow, SW_SHOW);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
413 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
414
24992
5701e23ebcb4 Better handling of win32 GUI thread:
zuxy
parents: 23148
diff changeset
415 static unsigned __stdcall GuiThread(void* param)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
416 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
417 MSG msg;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
418
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
419 if(!skinName) skinName = strdup("Blue");
33781
cdd4fc0616b6 Fix memory leak in the Win32 GUI.
ib
parents: 33780
diff changeset
420 if(!mygui) mygui = create_gui(get_path("skins"), guiSetEvent);
30558
71acebef19ec Fix win32 gui compilation.
reimar
parents: 27391
diff changeset
421 if(!mygui) exit_player(EXIT_ERROR);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
422
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
423 if(autosync && autosync != gtkAutoSync)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
424 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
425 gtkAutoSyncOn = 1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
426 gtkAutoSync = autosync;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
427 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
428
24992
5701e23ebcb4 Better handling of win32 GUI thread:
zuxy
parents: 23148
diff changeset
429 while(GetMessage(&msg, NULL, 0, 0))
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
430 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
431 TranslateMessage(&msg);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
432 DispatchMessage(&msg);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
433 }
23078
f81cd5be161b spelling cosmetics
diego
parents: 23077
diff changeset
434 fprintf(stderr, "[GUI] GUI thread terminated.\n");
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
435 fflush(stderr);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
436 return 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
437 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
438
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
439 void guiInit(void)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
440 {
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
441 memset(&guiInfo, 0, sizeof(guiInfo));
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
442 /* Create The gui thread */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
443 if (!mygui)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
444 {
33358
c9c9f015619b Don't use CreateThread() unconditionally.
ib
parents: 33303
diff changeset
445 hThread = _beginthreadex(NULL, 0, GuiThread, NULL, 0, &threadId);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
446 mp_msg(MSGT_GPLAYER, MSGL_V, "[GUI] Creating GUI Thread 0x%04x\n", threadId);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
447 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
448
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
449 /* Wait until the gui is created */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
450 while(!mygui) Sleep(100);
23078
f81cd5be161b spelling cosmetics
diego
parents: 23077
diff changeset
451 mp_msg(MSGT_GPLAYER, MSGL_V, "[GUI] GUI thread started.\n");
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
452 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
453
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
454 void guiDone(void)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
455 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
456 if(mygui)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
457 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
458 fprintf(stderr, "[GUI] Closed by main mplayer window\n");
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
459 fflush(stderr);
24992
5701e23ebcb4 Better handling of win32 GUI thread:
zuxy
parents: 23148
diff changeset
460 PostThreadMessage(threadId, WM_QUIT, 0, 0);
5701e23ebcb4 Better handling of win32 GUI thread:
zuxy
parents: 23148
diff changeset
461 WaitForSingleObject(hThread, INFINITE);
5701e23ebcb4 Better handling of win32 GUI thread:
zuxy
parents: 23148
diff changeset
462 CloseHandle(hThread);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
463 mygui->uninit(mygui);
33770
6134493605c6 Use macro nfree() in Win32 GUI code.
ib
parents: 33761
diff changeset
464 nfree(mygui);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
465 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
466 /* Remove tray icon */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
467 Shell_NotifyIcon(NIM_DELETE, &nid);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
468 cfg_write();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
469 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
470
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
471 /* this function gets called by mplayer to update the gui */
33791
8b0c78a85a8c Cosmetic: Change parameter names of gui() and mplayer().
ib
parents: 33781
diff changeset
472 int gui(int what, void *data)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
473 {
33791
8b0c78a85a8c Cosmetic: Change parameter names of gui() and mplayer().
ib
parents: 33781
diff changeset
474 stream_t *stream = data;
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 26457
diff changeset
475 #ifdef CONFIG_DVDREAD
33730
b4c64f168b29 Remove gui() GMP_SET_DVD.
ib
parents: 33726
diff changeset
476 dvd_priv_t *dvdp;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
477 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
478 if(!mygui || !mygui->skin) return 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
479
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
480 if(guiInfo.mpcontext)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
481 {
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
482 audio_out = mpctx_get_audio_out(guiInfo.mpcontext);
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
483 video_out = mpctx_get_video_out(guiInfo.mpcontext);
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
484 mixer = mpctx_get_mixer(guiInfo.mpcontext);
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
485 playtree = mpctx_get_playtree_iter(guiInfo.mpcontext);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
486 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
487
33726
a800f30c40d1 Cosmetic: Rename gui() parameter.
ib
parents: 33725
diff changeset
488 switch (what)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
489 {
33731
81f71d910333 Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents: 33730
diff changeset
490 case GUI_PREPARE:
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
491 {
34052
9f19a87d2062 Remove gui() instruction GUI_SET_FILE.
ib
parents: 33902
diff changeset
492 audio_id = -1;
9f19a87d2062 Remove gui() instruction GUI_SET_FILE.
ib
parents: 33902
diff changeset
493 video_id = -1;
9f19a87d2062 Remove gui() instruction GUI_SET_FILE.
ib
parents: 33902
diff changeset
494 dvdsub_id = -1;
9f19a87d2062 Remove gui() instruction GUI_SET_FILE.
ib
parents: 33902
diff changeset
495 vobsub_id = -1;
9f19a87d2062 Remove gui() instruction GUI_SET_FILE.
ib
parents: 33902
diff changeset
496 stream_cache_size = -1;
9f19a87d2062 Remove gui() instruction GUI_SET_FILE.
ib
parents: 33902
diff changeset
497 autosync = 0;
9f19a87d2062 Remove gui() instruction GUI_SET_FILE.
ib
parents: 33902
diff changeset
498 dvd_title = 0;
9f19a87d2062 Remove gui() instruction GUI_SET_FILE.
ib
parents: 33902
diff changeset
499 force_fps = 0;
9f19a87d2062 Remove gui() instruction GUI_SET_FILE.
ib
parents: 33902
diff changeset
500 if(!mygui->playlist->tracks) return 0;
34065
8a7056729022 Change guiInfo.Filename by using uiSetFileName() only.
ib
parents: 34064
diff changeset
501 uiSetFileName(NULL, mygui->playlist->tracks[mygui->playlist->current]->filename, STREAMTYPE_FILE);
34052
9f19a87d2062 Remove gui() instruction GUI_SET_FILE.
ib
parents: 33902
diff changeset
502 guiInfo.Track = mygui->playlist->current + 1;
9f19a87d2062 Remove gui() instruction GUI_SET_FILE.
ib
parents: 33902
diff changeset
503 if(gtkAONorm) greplace(&af_cfg.list, "volnorm", "volnorm");
9f19a87d2062 Remove gui() instruction GUI_SET_FILE.
ib
parents: 33902
diff changeset
504 if(gtkAOExtraStereo)
9f19a87d2062 Remove gui() instruction GUI_SET_FILE.
ib
parents: 33902
diff changeset
505 {
9f19a87d2062 Remove gui() instruction GUI_SET_FILE.
ib
parents: 33902
diff changeset
506 char *name = malloc(12 + 20 + 1);
9f19a87d2062 Remove gui() instruction GUI_SET_FILE.
ib
parents: 33902
diff changeset
507 snprintf(name, 12 + 20, "extrastereo=%f", gtkAOExtraStereoMul);
9f19a87d2062 Remove gui() instruction GUI_SET_FILE.
ib
parents: 33902
diff changeset
508 name[12 + 20] = 0;
9f19a87d2062 Remove gui() instruction GUI_SET_FILE.
ib
parents: 33902
diff changeset
509 greplace(&af_cfg.list, "extrastereo", name);
9f19a87d2062 Remove gui() instruction GUI_SET_FILE.
ib
parents: 33902
diff changeset
510 free(name);
9f19a87d2062 Remove gui() instruction GUI_SET_FILE.
ib
parents: 33902
diff changeset
511 }
9f19a87d2062 Remove gui() instruction GUI_SET_FILE.
ib
parents: 33902
diff changeset
512 if(gtkCacheOn) stream_cache_size = gtkCacheSize;
9f19a87d2062 Remove gui() instruction GUI_SET_FILE.
ib
parents: 33902
diff changeset
513 if(gtkAutoSyncOn) autosync = gtkAutoSync;
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
514 guiInfo.NewPlay = 0;
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
515 switch(guiInfo.StreamType)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
516 {
34073
ac52c68c17f5 Remove check for STREAMTYPE_PLAYLIST.
ib
parents: 34068
diff changeset
517 case STREAMTYPE_FILE:
ac52c68c17f5 Remove check for STREAMTYPE_PLAYLIST.
ib
parents: 34068
diff changeset
518 case STREAMTYPE_STREAM:
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
519 break;
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 26457
diff changeset
520 #ifdef CONFIG_DVDREAD
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
521 case STREAMTYPE_DVD:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
522 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
523 char tmp[512];
33876
4789b8eed97e Get rid of a bunch of needless or redundant guiInfo members.
ib
parents: 33791
diff changeset
524 dvd_title = guiInfo.Track;
4789b8eed97e Get rid of a bunch of needless or redundant guiInfo members.
ib
parents: 33791
diff changeset
525 dvd_chapter = guiInfo.Chapter;
4789b8eed97e Get rid of a bunch of needless or redundant guiInfo members.
ib
parents: 33791
diff changeset
526 dvd_angle = guiInfo.Angle;
4789b8eed97e Get rid of a bunch of needless or redundant guiInfo members.
ib
parents: 33791
diff changeset
527 sprintf(tmp,"dvd://%d", guiInfo.Track);
34065
8a7056729022 Change guiInfo.Filename by using uiSetFileName() only.
ib
parents: 34064
diff changeset
528 uiSetFileName(NULL, tmp, STREAMTYPE_DVD);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
529 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
530 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
531 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
532 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
533 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
534 }
33731
81f71d910333 Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents: 33730
diff changeset
535 case GUI_SET_AUDIO:
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
536 {
33901
d4f80f889106 Cosmetic: Rename guiInfo members.
ib
parents: 33897
diff changeset
537 guiInfo.VideoWindow = (data && !guiInfo.sh_video);
33661
b2071e60b20b Rename guiGetEvent type guiSetAudioOnly guiSetAudio.
ib
parents: 33660
diff changeset
538 // NOTE: This type doesn't mean (and never meant) that we have
b2071e60b20b Rename guiGetEvent type guiSetAudioOnly guiSetAudio.
ib
parents: 33660
diff changeset
539 // *just* audio, so there probably should be a check before
b2071e60b20b Rename guiGetEvent type guiSetAudioOnly guiSetAudio.
ib
parents: 33660
diff changeset
540 // hiding (see gui/interface.c).
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
541 if(IsWindowVisible(mygui->subwindow))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
542 ShowWindow(mygui->subwindow, SW_HIDE);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
543 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
544 }
33731
81f71d910333 Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents: 33730
diff changeset
545 case GUI_SET_CONTEXT:
33791
8b0c78a85a8c Cosmetic: Change parameter names of gui() and mplayer().
ib
parents: 33781
diff changeset
546 guiInfo.mpcontext = data;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
547 break;
33731
81f71d910333 Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents: 33730
diff changeset
548 case GUI_SET_VIDEO:
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
549 {
33791
8b0c78a85a8c Cosmetic: Change parameter names of gui() and mplayer().
ib
parents: 33781
diff changeset
550 guiInfo.sh_video = data;
8b0c78a85a8c Cosmetic: Change parameter names of gui() and mplayer().
ib
parents: 33781
diff changeset
551 if (data)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
552 {
33791
8b0c78a85a8c Cosmetic: Change parameter names of gui() and mplayer().
ib
parents: 33781
diff changeset
553 sh_video_t *sh = data;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
554 codecname = sh->codec->name;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
555
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
556 /* we have video, show the subwindow */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
557 if(!IsWindowVisible(mygui->subwindow) || IsIconic(mygui->subwindow))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
558 ShowWindow(mygui->subwindow, SW_SHOWNORMAL);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
559 if(WinID == -1)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
560 update_subwindow();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
561
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
562 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
563 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
564 }
33731
81f71d910333 Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents: 33730
diff changeset
565 case GUI_SETUP_VIDEO_WINDOW:
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
566 {
33901
d4f80f889106 Cosmetic: Rename guiInfo members.
ib
parents: 33897
diff changeset
567 guiInfo.VideoWidth = vo_dwidth;
d4f80f889106 Cosmetic: Rename guiInfo members.
ib
parents: 33897
diff changeset
568 guiInfo.VideoHeight = vo_dheight;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
569
33901
d4f80f889106 Cosmetic: Rename guiInfo members.
ib
parents: 33897
diff changeset
570 sub_aspect = (float)guiInfo.VideoWidth/guiInfo.VideoHeight;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
571 if(WinID != -1)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
572 update_subwindow();
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_SET_STREAM:
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.StreamType = stream->type;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
578 switch(stream->type)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
579 {
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 26457
diff changeset
580 #ifdef CONFIG_DVDREAD
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
581 case STREAMTYPE_DVD:
33730
b4c64f168b29 Remove gui() GMP_SET_DVD.
ib
parents: 33726
diff changeset
582 dvdp = stream->priv;
33876
4789b8eed97e Get rid of a bunch of needless or redundant guiInfo members.
ib
parents: 33791
diff changeset
583 guiInfo.Tracks = dvdp->vmg_file->tt_srpt->nr_of_srpts;
4789b8eed97e Get rid of a bunch of needless or redundant guiInfo members.
ib
parents: 33791
diff changeset
584 guiInfo.Chapters = dvdp->vmg_file->tt_srpt->title[dvd_title].nr_of_ptts;
4789b8eed97e Get rid of a bunch of needless or redundant guiInfo members.
ib
parents: 33791
diff changeset
585 guiInfo.Angles = dvdp->vmg_file->tt_srpt->title[dvd_title].nr_of_angles;
33902
dd0e5dc6ebbf Add guiDVDStruct members to guiInfo.
ib
parents: 33901
diff changeset
586 guiInfo.AudioStreams = dvdp->nr_of_channels;
dd0e5dc6ebbf Add guiDVDStruct members to guiInfo.
ib
parents: 33901
diff changeset
587 memcpy(guiInfo.AudioStream, dvdp->audio_streams, sizeof(dvdp->audio_streams));
dd0e5dc6ebbf Add guiDVDStruct members to guiInfo.
ib
parents: 33901
diff changeset
588 guiInfo.Subtitles = dvdp->nr_of_subtitles;
dd0e5dc6ebbf Add guiDVDStruct members to guiInfo.
ib
parents: 33901
diff changeset
589 memcpy(guiInfo.Subtitle, dvdp->subtitles, sizeof(dvdp->subtitles));
33876
4789b8eed97e Get rid of a bunch of needless or redundant guiInfo members.
ib
parents: 33791
diff changeset
590 guiInfo.Chapter = dvd_chapter + 1;
4789b8eed97e Get rid of a bunch of needless or redundant guiInfo members.
ib
parents: 33791
diff changeset
591 guiInfo.Angle = dvd_angle + 1;
33730
b4c64f168b29 Remove gui() GMP_SET_DVD.
ib
parents: 33726
diff changeset
592 guiInfo.Track = dvd_title + 1;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
593 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
594 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
595 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
596 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
597 }
33731
81f71d910333 Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents: 33730
diff changeset
598 case GUI_REDRAW:
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
599 mygui->updatedisplay(mygui, mygui->mainwindow);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
600 break;
33731
81f71d910333 Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents: 33730
diff changeset
601 case GUI_SET_AFILTER:
33791
8b0c78a85a8c Cosmetic: Change parameter names of gui() and mplayer().
ib
parents: 33781
diff changeset
602 guiInfo.afilter = data;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
603 break;
33731
81f71d910333 Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents: 33730
diff changeset
604 case GUI_SET_STATE:
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
605 {
33791
8b0c78a85a8c Cosmetic: Change parameter names of gui() and mplayer().
ib
parents: 33781
diff changeset
606 guiInfo.Playing = (int) data;
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
607 switch (guiInfo.Playing)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
608 {
33614
79743a5cf4f0 Rename the symbolic playback state constants.
ib
parents: 33611
diff changeset
609 case GUI_PLAY:
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
610 {
33615
1f9a31d4f114 Replace all playback integer constants by their symbolic constants.
ib
parents: 33614
diff changeset
611 guiInfo.Playing = GUI_PLAY;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
612 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
613 }
33614
79743a5cf4f0 Rename the symbolic playback state constants.
ib
parents: 33611
diff changeset
614 case GUI_STOP:
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
615 {
33615
1f9a31d4f114 Replace all playback integer constants by their symbolic constants.
ib
parents: 33614
diff changeset
616 guiInfo.Playing = GUI_STOP;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
617 if(movie_aspect >= 0)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
618 movie_aspect = -1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
619 update_subwindow();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
620 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
621 }
33614
79743a5cf4f0 Rename the symbolic playback state constants.
ib
parents: 33611
diff changeset
622 case GUI_PAUSE:
33615
1f9a31d4f114 Replace all playback integer constants by their symbolic constants.
ib
parents: 33614
diff changeset
623 guiInfo.Playing = GUI_PAUSE;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
624 break;
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 }
33731
81f71d910333 Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents: 33730
diff changeset
628 case GUI_RUN_COMMAND:
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
629 {
33791
8b0c78a85a8c Cosmetic: Change parameter names of gui() and mplayer().
ib
parents: 33781
diff changeset
630 mp_msg(MSGT_GPLAYER,MSGL_V, "cmd: %d\n", (int) data);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
631 /* MPlayer asks us to quit */
33791
8b0c78a85a8c Cosmetic: Change parameter names of gui() and mplayer().
ib
parents: 33781
diff changeset
632 switch((int) data)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
633 {
31312
0b7792622c88 Remove Gui-specific slave commands and associated key-bindings and other code.
reimar
parents: 30901
diff changeset
634 case MP_CMD_VO_FULLSCREEN:
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
635 uiFullScreen();
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
636 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
637 case MP_CMD_QUIT:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
638 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
639 mygui->uninit(mygui);
33770
6134493605c6 Use macro nfree() in Win32 GUI code.
ib
parents: 33761
diff changeset
640 nfree(mygui);
30558
71acebef19ec Fix win32 gui compilation.
reimar
parents: 27391
diff changeset
641 exit_player(EXIT_QUIT);
33666
0f592e8530f1 Change return code of guiGetEvent() to indicate success.
ib
parents: 33661
diff changeset
642 return 1;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
643 }
33696
24d919fb6778 Don't let MPlayer directly call user interface functions.
ib
parents: 33695
diff changeset
644 case MP_CMD_PLAY_TREE_STEP:
24d919fb6778 Don't let MPlayer directly call user interface functions.
ib
parents: 33695
diff changeset
645 guiSetEvent(evNext);
24d919fb6778 Don't let MPlayer directly call user interface functions.
ib
parents: 33695
diff changeset
646 break;
24d919fb6778 Don't let MPlayer directly call user interface functions.
ib
parents: 33695
diff changeset
647 case -MP_CMD_PLAY_TREE_STEP:
24d919fb6778 Don't let MPlayer directly call user interface functions.
ib
parents: 33695
diff changeset
648 guiSetEvent(evPrev);
24d919fb6778 Don't let MPlayer directly call user interface functions.
ib
parents: 33695
diff changeset
649 break;
24d919fb6778 Don't let MPlayer directly call user interface functions.
ib
parents: 33695
diff changeset
650 case MP_CMD_STOP:
24d919fb6778 Don't let MPlayer directly call user interface functions.
ib
parents: 33695
diff changeset
651 guiSetEvent(evStop);
24d919fb6778 Don't let MPlayer directly call user interface functions.
ib
parents: 33695
diff changeset
652 break;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
653 default:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
654 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
655 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
656 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
657 }
33732
90c992ac5011 Make guiEventHandling() a gui() call.
ib
parents: 33731
diff changeset
658 case GUI_HANDLE_EVENTS:
90c992ac5011 Make guiEventHandling() a gui() call.
ib
parents: 33731
diff changeset
659 break;
33731
81f71d910333 Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents: 33730
diff changeset
660 case GUI_SET_MIXER:
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
661 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
662 if(audio_out)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
663 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
664 /* Some audio_out drivers do not support balance e.g. dsound */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
665 /* FIXME this algo is not correct */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
666 float l, r;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
667 mixer_getvolume(mixer, &l, &r);
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
668 guiInfo.Volume = (r > l ? r : l); /* max(r,l) */
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
669 if (r != l)
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
670 guiInfo.Balance = ((r-l) + 100.0f) * 0.5f;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
671 else
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
672 guiInfo.Balance = 50.0f;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
673 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
674 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
675 }
33731
81f71d910333 Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents: 33730
diff changeset
676 case GUI_END_FILE:
33694
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
677 {
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
678 if(!uiGotoTheNext && guiInfo.Playing)
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
679 {
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
680 uiGotoTheNext = 1;
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
681 break;
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
682 }
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
683
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
684 if(uiGotoTheNext && guiInfo.Playing &&
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
685 (mygui->playlist->current < (mygui->playlist->trackcount - 1)) &&
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
686 guiInfo.StreamType != STREAMTYPE_DVD &&
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
687 guiInfo.StreamType != STREAMTYPE_DVDNAV)
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
688 {
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
689 /* we've finished this file, reset the aspect */
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
690 if(movie_aspect >= 0)
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
691 movie_aspect = -1;
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
692
33894
b2e63fe7fe17 Remove needless guiInfo member FilenameChanged.
ib
parents: 33890
diff changeset
693 uiGotoTheNext = 1;
33890
c51e44dd38e2 Remove needless guiInfo member DiskChanged.
ib
parents: 33876
diff changeset
694 guiInfo.NewPlay = GUI_FILE_NEW;
34075
b9cab6c0992c Restrict use of STREAMTYPE_STREAM in Win32 GUI.
ib
parents: 34073
diff changeset
695 uiSetFileName(NULL, mygui->playlist->tracks[(mygui->playlist->current)++]->filename, STREAMTYPE_FILE);
33694
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
696 //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
697 }
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
698
33894
b2e63fe7fe17 Remove needless guiInfo member FilenameChanged.
ib
parents: 33890
diff changeset
699 if(guiInfo.NewPlay == GUI_FILE_NEW)
33694
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
700 break;
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
701
33897
e0d211c62cf7 Cosmetic: Rename some guiInfo members.
ib
parents: 33894
diff changeset
702 guiInfo.ElapsedTime = 0;
33694
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
703 guiInfo.Position = 0;
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
704 guiInfo.AudioChannels = 0;
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
705
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
706 #ifdef CONFIG_DVDREAD
33876
4789b8eed97e Get rid of a bunch of needless or redundant guiInfo members.
ib
parents: 33791
diff changeset
707 guiInfo.Track = 1;
4789b8eed97e Get rid of a bunch of needless or redundant guiInfo members.
ib
parents: 33791
diff changeset
708 guiInfo.Chapter = 1;
4789b8eed97e Get rid of a bunch of needless or redundant guiInfo members.
ib
parents: 33791
diff changeset
709 guiInfo.Angle = 1;
33694
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
710 #endif
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
711
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
712 if (mygui->playlist->current == (mygui->playlist->trackcount - 1))
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
713 mygui->playlist->current = 0;
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
714
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
715 fullscreen = 0;
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
716 if(style == WS_VISIBLE | WS_POPUP)
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 style = WS_OVERLAPPEDWINDOW | WS_SIZEBOX;
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
719 SetWindowLong(mygui->subwindow, GWL_STYLE, style);
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
720 }
33731
81f71d910333 Cosmetic: Change prefix for symbolic constants from GMP to GUI.
ib
parents: 33730
diff changeset
721 gui(GUI_SET_STATE, (void *) GUI_STOP);
33694
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
722 break;
45553d0f65c6 Don't let MPlayer directly call user interface functions.
ib
parents: 33691
diff changeset
723 }
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
724 default:
33726
a800f30c40d1 Cosmetic: Rename gui() parameter.
ib
parents: 33725
diff changeset
725 mp_msg(MSGT_GPLAYER, MSGL_ERR, "[GUI] GOT UNHANDLED EVENT %i\n", what);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
726 }
33666
0f592e8530f1 Change return code of guiGetEvent() to indicate success.
ib
parents: 33661
diff changeset
727 return 1;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
728 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
729
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
730 /* This function adds/inserts one file into the gui playlist */
33579
cd855f2f1024 win32 gui: Mark some functions as static.
diego
parents: 33578
diff changeset
731 static int import_file_into_gui(char *pathname, int insert)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
732 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
733 char filename[MAX_PATH];
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
734 char *filepart = filename;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
735
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
736 if (strstr(pathname, "://"))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
737 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
738 mp_msg(MSGT_GPLAYER, MSGL_V, "[GUI] Adding special %s\n", pathname);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
739 mygui->playlist->add_track(mygui->playlist, pathname, NULL, NULL, 0);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
740 return 1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
741 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
742 if (GetFullPathName(pathname, MAX_PATH, filename, &filepart))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
743 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
744 if (!(GetFileAttributes(filename) & FILE_ATTRIBUTE_DIRECTORY))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
745 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
746 mp_msg(MSGT_GPLAYER, MSGL_V, "[GUI] Adding filename: %s - fullpath: %s\n", filepart, filename);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
747 mygui->playlist->add_track(mygui->playlist, filename, NULL, filepart, 0);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
748 return 1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
749 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
750 else
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
751 mp_msg(MSGT_GPLAYER, MSGL_V, "[GUI] Cannot add %s\n", filename);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
752 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
753
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
754 return 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
755 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
756
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
757 /* This function imports the initial playtree (based on cmd-line files) into the gui playlist
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
758 by either:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
759 - overwriting gui pl (enqueue=0) */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
760
33752
6cea6d268f97 Cosmetic: Rename the GUI playlist functions.
ib
parents: 33740
diff changeset
761 int guiPlaylistInitialize(play_tree_t *my_playtree, m_config_t *config, int enqueue)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
762 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
763 play_tree_iter_t *my_pt_iter = NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
764 int result = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
765
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
766 if(!mygui) guiInit();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
767
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
768 if((my_pt_iter = pt_iter_create(&my_playtree, config)))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
769 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
770 while ((filename = pt_iter_get_next_file(my_pt_iter)) != NULL)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
771 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
772 if (parse_filename(filename, my_playtree, config, 0))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
773 result = 1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
774 else if (import_file_into_gui(filename, 0)) /* Add it to end of list */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
775 result = 1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
776 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
777 }
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
778 uiGotoTheNext = 1;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
779
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
780 if (result)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
781 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
782 mygui->playlist->current = 0;
34068
c3b22e92a4ec Don't needlessly set filename in GUI_PREPARE.
ib
parents: 34065
diff changeset
783 uiSetFileName(NULL, mygui->playlist->tracks[0]->filename, STREAMTYPE_FILE);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
784 }
34084
b77b5e7bee72 Enable option "enqueue" for Win32 GUI.
ib
parents: 34075
diff changeset
785
b77b5e7bee72 Enable option "enqueue" for Win32 GUI.
ib
parents: 34075
diff changeset
786 if (enqueue) filename = NULL;
b77b5e7bee72 Enable option "enqueue" for Win32 GUI.
ib
parents: 34075
diff changeset
787
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
788 return result;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
789 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
790
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
791 /* This function imports and inserts an playtree, that is created "on the fly", for example by
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
792 parsing some MOV-Reference-File; or by loading an playlist with "File Open"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
793 The file which contained the playlist is thereby replaced with it's contents. */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
794
33752
6cea6d268f97 Cosmetic: Rename the GUI playlist functions.
ib
parents: 33740
diff changeset
795 int guiPlaylistAdd(play_tree_t *my_playtree, m_config_t *config)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
796 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
797 play_tree_iter_t *my_pt_iter = NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
798 int result = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
799
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
800 if((my_pt_iter = pt_iter_create(&my_playtree, config)))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
801 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
802 while ((filename = pt_iter_get_next_file(my_pt_iter)) != NULL)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
803 if (import_file_into_gui(filename, 1)) /* insert it into the list and set plCurrent = new item */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
804 result = 1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
805 pt_iter_destroy(&my_pt_iter);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
806 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
807 return result;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
808 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
809
33579
cd855f2f1024 win32 gui: Mark some functions as static.
diego
parents: 33578
diff changeset
810 static inline void gtkMessageBox(int type, const char *str)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
811 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
812 if (type & GTK_MB_FATAL)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
813 MessageBox(NULL, str, "MPlayer GUI for Windows Error", MB_OK | MB_ICONERROR);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
814
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
815 fprintf(stderr, "[GUI] MessageBox: %s\n", str);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
816 fflush(stderr);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
817 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
818
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
819 static int update_subwindow(void)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
820 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
821 int x,y;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
822 RECT rd;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
823 WINDOWPOS wp;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
824
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
825 if(!sub_window)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
826 {
33567
251a48bca536 Implement uiStop and remove outdated comment.
reimar
parents: 33557
diff changeset
827 WinID = -1;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
828
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
829 if(IsWindowVisible(mygui->subwindow) && guiInfo.sh_video && guiInfo.Playing)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
830 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
831 ShowWindow(mygui->subwindow, SW_HIDE);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
832 return 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
833 }
33901
d4f80f889106 Cosmetic: Rename guiInfo members.
ib
parents: 33897
diff changeset
834 else if(!guiInfo.VideoWindow)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
835 return 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
836 else ShowWindow(mygui->subwindow, SW_SHOW);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
837 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
838
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
839 /* we've come out of fullscreen at the end of file */
33901
d4f80f889106 Cosmetic: Rename guiInfo members.
ib
parents: 33897
diff changeset
840 if((!IsWindowVisible(mygui->subwindow) || IsIconic(mygui->subwindow)) && guiInfo.VideoWindow)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
841 ShowWindow(mygui->subwindow, SW_SHOWNORMAL);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
842
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
843 /* get our current window coordinates */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
844 GetWindowRect(mygui->subwindow, &rd);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
845
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
846 x = rd.left;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
847 y = rd.top;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
848
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
849 /* restore sub window position when coming out of fullscreen */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
850 if(x <= 0) x = old_rect.left;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
851 if(y <= 0) y = old_rect.top;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
852
33555
c5a19bbeac2b Cosmetic: Rename some GUI variables and functions.
ib
parents: 33358
diff changeset
853 if(!guiInfo.Playing)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
854 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
855 window *desc = NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
856 int i;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
857
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
858 for (i=0; i<mygui->skin->windowcount; i++)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
859 if(mygui->skin->windows[i]->type == wiSub)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
860 desc = mygui->skin->windows[i];
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
861
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
862 rd.right = rd.left+desc->base->bitmap[0]->width;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
863 rd.bottom = rd.top+desc->base->bitmap[0]->height;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
864 sub_aspect = (float)(rd.right-rd.left)/(rd.bottom-rd.top);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
865 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
866 else
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
867 {
33901
d4f80f889106 Cosmetic: Rename guiInfo members.
ib
parents: 33897
diff changeset
868 rd.right = rd.left+guiInfo.VideoWidth;
d4f80f889106 Cosmetic: Rename guiInfo members.
ib
parents: 33897
diff changeset
869 rd.bottom = rd.top+guiInfo.VideoHeight;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
870
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
871 if (movie_aspect > 0.0) // forced aspect from the cmdline
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
872 sub_aspect = movie_aspect;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
873 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
874
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
875
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
876 AdjustWindowRect(&rd, WS_OVERLAPPEDWINDOW | WS_SIZEBOX, 0);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
877 SetWindowPos(mygui->subwindow, 0, x, y, rd.right-rd.left, rd.bottom-rd.top, SWP_NOOWNERZORDER);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
878
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
879 wp.hwnd = mygui->subwindow;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
880 wp.x = rd.left;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
881 wp.y = rd.top;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
882 wp.cx = rd.right-rd.left;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
883 wp.cy = rd.bottom-rd.top;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
884 wp.flags = SWP_NOOWNERZORDER | SWP_SHOWWINDOW;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
885
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
886 /* erase the bitmap image if there's video */
33615
1f9a31d4f114 Replace all playback integer constants by their symbolic constants.
ib
parents: 33614
diff changeset
887 if(guiInfo.Playing != GUI_STOP && guiInfo.sh_video)
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
888 SendMessage(mygui->subwindow, WM_ERASEBKGND, (WPARAM)GetDC(mygui->subwindow), 0);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
889
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
890 /* reset the window aspect */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
891 SendMessage(mygui->subwindow, WM_WINDOWPOSCHANGED, 0, (LPARAM)&wp);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
892 return 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
893 }