annotate gui/interface.c @ 29202:239573db53a1

Support for libbs2b ver. 3.0.0 API. Now filter parameters are highly controllable, virtually all audio formats are supported, and new profiles are available.
author bircoph
date Sun, 03 May 2009 21:51:37 +0000
parents 4876c89bafdd
children 0f1b5b68af32
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
26458
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 25851
diff changeset
1 /*
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 25851
diff changeset
2 * This file is part of MPlayer.
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 25851
diff changeset
3 *
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 25851
diff changeset
4 * MPlayer is free software; you can redistribute it and/or modify
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 25851
diff changeset
5 * it under the terms of the GNU General Public License as published by
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 25851
diff changeset
6 * the Free Software Foundation; either version 2 of the License, or
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 25851
diff changeset
7 * (at your option) any later version.
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 25851
diff changeset
8 *
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 25851
diff changeset
9 * MPlayer is distributed in the hope that it will be useful,
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 25851
diff changeset
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 25851
diff changeset
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 25851
diff changeset
12 * GNU General Public License for more details.
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 25851
diff changeset
13 *
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 25851
diff changeset
14 * You should have received a copy of the GNU General Public License along
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 25851
diff changeset
15 * with MPlayer; if not, write to the Free Software Foundation, Inc.,
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 25851
diff changeset
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
b0a7b35b78d2 Add standard GPL header to individual files.
diego
parents: 25851
diff changeset
17 */
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
18
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
19 #include <inttypes.h>
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
20 #include <stdlib.h>
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
21 #include <stdio.h>
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
22 #include <string.h>
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
23 #include <sys/types.h>
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
24
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
25 #include "wm/ws.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
26 #include "wm/wsxdnd.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
27 #include "interface.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
28 #include "skin/skin.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
29
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
30 #include "mplayer/gtk/eq.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
31 #include "mplayer/widgets.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
32 #include "mplayer/gmplayer.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
33 #include "mplayer/play.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
34
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
35 #include "access_mpcontext.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
36 #include "app.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
37 #include "cfg.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
38 #include "help_mp.h"
24242
76f5d8892c04 Clean up the way get_path is handled: Compile get_path.c to an object to link
diego
parents: 24153
diff changeset
39 #include "get_path.h"
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
40 #include "libvo/x11_common.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
41 #include "libvo/video_out.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
42 #include "libvo/font_load.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
43 #include "libvo/sub.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
44 #include "input/input.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
45 #include "libao2/audio_out.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
46 #include "mixer.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
47 #include "libaf/af.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
48 #include "libaf/equalizer.h"
24153
0bbfebce0583 Remove redundant extern declarations, #include the right headers instead.
diego
parents: 24149
diff changeset
49 #include "libass/ass.h"
0bbfebce0583 Remove redundant extern declarations, #include the right headers instead.
diego
parents: 24149
diff changeset
50 #include "libass/ass_mp.h"
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
51
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
52 extern af_cfg_t af_cfg;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
53
27393
4876c89bafdd Rename font-related preprocessor directives.
diego
parents: 27390
diff changeset
54 #ifdef CONFIG_ICONV
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
55 #include <iconv.h>
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
56 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
57
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
58 #include "stream/stream.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
59 #include "libmpdemux/demuxer.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
60 #include "libmpdemux/stheader.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
61 #include "libmpcodecs/dec_video.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
62
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 26458
diff changeset
63 #ifdef CONFIG_DVDREAD
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
64 #include "stream/stream_dvd.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
65 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
66
23603
c1221a031ab7 Add a (almost correct) prototype for vcd_seek_to_track
reimar
parents: 23341
diff changeset
67 int vcd_seek_to_track(void *vcd, int track);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
68
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
69 #include "m_config.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
70 #include "m_option.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
71
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
72
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
73 guiInterface_t guiIntfStruct;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
74 int guiWinID=-1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
75
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
76 char * gstrcat( char ** dest,const char * src )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
77 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
78 char * tmp = NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
79
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
80 if ( !src ) return NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
81
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
82 if ( *dest )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
83 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
84 tmp=malloc( strlen( *dest ) + strlen( src ) + 1 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
85
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
86 if ( tmp ) /* TODO: advanced error handling */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
87 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
88 strcpy( tmp,*dest ); strcat( tmp,src ); free( *dest );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
89 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
90 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
91 else
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
92 { tmp=malloc( strlen( src ) + 1 ); strcpy( tmp,src ); }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
93 *dest=tmp;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
94 return tmp;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
95 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
96
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
97 int gstrcmp( const char * a,const char * b )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
98 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
99 if ( !a && !b ) return 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
100 if ( !a || !b ) return -1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
101 return strcmp( a,b );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
102 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
103
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
104 int gstrncmp( const char * a,const char * b,int size )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
105 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
106 if ( !a && !b ) return 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
107 if ( !a || !b ) return -1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
108 return strncmp( a,b,size );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
109 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
110
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
111 char * gstrdup( const char * str )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
112 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
113 if ( !str ) return NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
114 return strdup( str );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
115 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
116
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
117 char * gstrchr( char * str,int c )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
118 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
119 if ( !str ) return NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
120 return strchr( str,c );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
121 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
122
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
123 void gfree( void ** p )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
124 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
125 if ( *p == NULL ) return;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
126 free( *p ); *p=NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
127 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
128
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
129 void gset( char ** str, const char * what )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
130 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
131 if ( *str ) { if ( !strstr( *str,what ) ) { gstrcat( str,"," ); gstrcat( str,what ); }}
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
132 else gstrcat( str,what );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
133 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
134
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
135 /**
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
136 * \brief this actually creates a new list containing only one element...
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
137 */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
138 void gaddlist( char *** list,const char * entry )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
139 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
140 int i;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
141
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
142 if ( (*list) )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
143 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
144 for ( i=0;(*list)[i];i++ ) free( (*list)[i] );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
145 free( (*list) );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
146 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
147
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
148 (*list)=malloc( 2 * sizeof(char **) );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
149 (*list)[0]=gstrdup( entry );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
150 (*list)[1]=NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
151 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
152
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
153 /**
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
154 * \brief this replaces a string starting with search by replace.
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
155 * If not found, replace is appended.
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
156 */
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
157 void greplace(char ***list, const char *search, const char *replace)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
158 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
159 int i = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
160 int len = (search) ? strlen(search) : 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
161
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
162 if (*list) {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
163 for (i = 0; (*list)[i]; i++) {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
164 if (search && (strncmp((*list)[i], search, len) == 0)) {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
165 free((*list)[i]);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
166 (*list)[i] = gstrdup(replace);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
167 return;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
168 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
169 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
170 *list = realloc(*list, (i + 2) * sizeof(char *));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
171 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
172 else
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
173 *list = malloc(2 * sizeof(char *));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
174
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
175 (*list)[i] = gstrdup(replace);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
176 (*list)[i + 1] = NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
177 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
178
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
179 void guiInit( void )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
180 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
181 int i;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
182
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
183 memset( &guiIntfStruct,0,sizeof( guiIntfStruct ) );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
184 guiIntfStruct.Balance=50.0f;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
185 guiIntfStruct.StreamType=-1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
186
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
187 memset( &gtkEquChannels,0,sizeof( gtkEquChannels ) );
27370
14c5017f40d2 Change a bunch of video/audio-output-specific preprocessor directives from
diego
parents: 27359
diff changeset
188 #ifdef CONFIG_DXR3
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
189 if ( !gtkDXR3Device ) gtkDXR3Device=strdup( "/dev/em8300-0" );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
190 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
191 if ( stream_cache_size > 0 ) { gtkCacheOn=1; gtkCacheSize=stream_cache_size; }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
192 else if ( stream_cache_size == 0 ) gtkCacheOn = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
193 if ( autosync && autosync != gtkAutoSync ) { gtkAutoSyncOn=1; gtkAutoSync=autosync; }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
194
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 26458
diff changeset
195 #ifdef CONFIG_ASS
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
196 gtkASS.enabled = ass_enabled;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
197 gtkASS.use_margins = ass_use_margins;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
198 gtkASS.top_margin = ass_top_margin;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
199 gtkASS.bottom_margin = ass_bottom_margin;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
200 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
201
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
202 gtkInit();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
203 // --- initialize X
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
204 wsXInit( (void *)mDisplay );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
205 // --- load skin
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
206 skinDirInHome=get_path("skins");
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
207 skinDirInHome_obsolete=get_path("Skin");
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
208 skinMPlayerDir=MPLAYER_DATADIR "/skins";
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
209 skinMPlayerDir_obsolete=MPLAYER_DATADIR "/Skin";
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
210 mp_msg( MSGT_GPLAYER,MSGL_V,"SKIN dir 1: '%s'\n",skinDirInHome);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
211 mp_msg( MSGT_GPLAYER,MSGL_V,"SKIN dir 1 (obsolete): '%s'\n",skinDirInHome_obsolete);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
212 mp_msg( MSGT_GPLAYER,MSGL_V,"SKIN dir 2: '%s'\n",skinMPlayerDir);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
213 mp_msg( MSGT_GPLAYER,MSGL_V,"SKIN dir 2 (obsolete): '%s'\n",skinMPlayerDir_obsolete);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
214 if ( !skinName ) skinName=strdup( "default" );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
215 i = skinRead( skinName );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
216 if ((i == -1) && strcmp(skinName,"default"))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
217 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
218 mp_msg( MSGT_GPLAYER,MSGL_WARN,MSGTR_SKIN_SKINCFG_SelectedSkinNotFound, skinName);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
219 skinName=strdup( "default" );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
220 i = skinRead( skinName );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
221 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
222 switch (i) {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
223 case -1: mp_msg( MSGT_GPLAYER,MSGL_ERR,MSGTR_SKIN_SKINCFG_SkinNotFound,skinName ); exit( 0 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
224 case -2: mp_msg( MSGT_GPLAYER,MSGL_ERR,MSGTR_SKIN_SKINCFG_SkinCfgReadError,skinName ); exit( 0 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
225 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
226 // --- initialize windows
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
227 if ( ( mplDrawBuffer = malloc( appMPlayer.main.Bitmap.ImageSize ) ) == NULL )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
228 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
229 fprintf( stderr,MSGTR_NEMDB );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
230 exit( 0 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
231 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
232
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
233 if ( gui_save_pos )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
234 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
235 appMPlayer.main.x = gui_main_pos_x;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
236 appMPlayer.main.y = gui_main_pos_y;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
237 appMPlayer.sub.x = gui_sub_pos_x;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
238 appMPlayer.sub.y = gui_sub_pos_y;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
239 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
240
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
241 if (WinID>0)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
242 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
243 appMPlayer.subWindow.Parent=WinID;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
244 appMPlayer.sub.x=0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
245 appMPlayer.sub.y=0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
246 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
247 if (guiWinID>=0) appMPlayer.mainWindow.Parent=guiWinID;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
248
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
249 wsCreateWindow( &appMPlayer.subWindow,
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
250 appMPlayer.sub.x,appMPlayer.sub.y,appMPlayer.sub.width,appMPlayer.sub.height,
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
251 wsNoBorder,wsShowMouseCursor|wsHandleMouseButton|wsHandleMouseMove,wsShowFrame|wsHideWindow,"MPlayer - Video" );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
252
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
253 wsDestroyImage( &appMPlayer.subWindow );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
254 wsCreateImage( &appMPlayer.subWindow,appMPlayer.sub.Bitmap.Width,appMPlayer.sub.Bitmap.Height );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
255 wsXDNDMakeAwareness(&appMPlayer.subWindow);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
256
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
257 mplMenuInit();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
258 mplPBInit();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
259
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
260 vo_setwindow( appMPlayer.subWindow.WindowID, appMPlayer.subWindow.wGC );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
261
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
262 // i=wsHideFrame|wsMaxSize|wsHideWindow;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
263 // if ( appMPlayer.mainDecoration ) i=wsShowFrame|wsMaxSize|wsHideWindow;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
264 i=wsShowFrame|wsMaxSize|wsHideWindow;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
265 wsCreateWindow( &appMPlayer.mainWindow,
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
266 appMPlayer.main.x,appMPlayer.main.y,appMPlayer.main.width,appMPlayer.main.height,
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
267 wsNoBorder,wsShowMouseCursor|wsHandleMouseButton|wsHandleMouseMove,i,"MPlayer" );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
268
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
269 wsSetShape( &appMPlayer.mainWindow,appMPlayer.main.Mask.Image );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
270 wsXDNDMakeAwareness(&appMPlayer.mainWindow);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
271
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
272 #ifdef DEBUG
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
273 mp_msg( MSGT_GPLAYER,MSGL_DBG2,"[main] depth on screen: %d\n",wsDepthOnScreen );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
274 mp_msg( MSGT_GPLAYER,MSGL_DBG2,"[main] parent: 0x%x\n",(int)appMPlayer.mainWindow.WindowID );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
275 mp_msg( MSGT_GPLAYER,MSGL_DBG2,"[main] sub: 0x%x\n",(int)appMPlayer.subWindow.WindowID );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
276 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
277
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
278 appMPlayer.mainWindow.ReDraw=(void *)mplMainDraw;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
279 appMPlayer.mainWindow.MouseHandler=mplMainMouseHandle;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
280 appMPlayer.mainWindow.KeyHandler=mplMainKeyHandle;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
281 appMPlayer.mainWindow.DandDHandler=mplDandDHandler;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
282
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
283 appMPlayer.subWindow.ReDraw=(void *)mplSubDraw;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
284 appMPlayer.subWindow.MouseHandler=mplSubMouseHandle;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
285 appMPlayer.subWindow.KeyHandler=mplMainKeyHandle;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
286 appMPlayer.subWindow.DandDHandler=mplDandDHandler;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
287
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
288 wsSetBackgroundRGB( &appMPlayer.subWindow,appMPlayer.sub.R,appMPlayer.sub.G,appMPlayer.sub.B );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
289 wsClearWindow( appMPlayer.subWindow );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
290 if ( appMPlayer.sub.Bitmap.Image ) wsConvert( &appMPlayer.subWindow,appMPlayer.sub.Bitmap.Image,appMPlayer.sub.Bitmap.ImageSize );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
291
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
292 btnModify( evSetVolume,guiIntfStruct.Volume );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
293 btnModify( evSetBalance,guiIntfStruct.Balance );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
294 btnModify( evSetMoviePosition,guiIntfStruct.Position );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
295
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
296 wsSetIcon( wsDisplay,appMPlayer.mainWindow.WindowID,guiIcon,guiIconMask );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
297 wsSetIcon( wsDisplay,appMPlayer.subWindow.WindowID,guiIcon,guiIconMask );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
298
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
299 guiIntfStruct.Playing=0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
300
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
301 if ( !appMPlayer.mainDecoration ) wsWindowDecoration( &appMPlayer.mainWindow,0 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
302
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
303 wsVisibleWindow( &appMPlayer.mainWindow,wsShowWindow );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
304 #if 0
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
305 wsVisibleWindow( &appMPlayer.subWindow,wsShowWindow );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
306
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
307 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
308 XEvent xev;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
309 do { XNextEvent( wsDisplay,&xev ); } while ( xev.type != MapNotify || xev.xmap.event != appMPlayer.subWindow.WindowID );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
310 appMPlayer.subWindow.Mapped=wsMapped;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
311 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
312
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
313 if ( !fullscreen ) fullscreen=gtkLoadFullscreen;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
314 if ( fullscreen )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
315 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
316 mplFullScreen();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
317 btnModify( evFullScreen,btnPressed );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
318 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
319 #else
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
320 if ( !fullscreen ) fullscreen=gtkLoadFullscreen;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
321 if ( gtkShowVideoWindow )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
322 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
323 wsVisibleWindow( &appMPlayer.subWindow,wsShowWindow );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
324 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
325 XEvent xev;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
326 do { XNextEvent( wsDisplay,&xev ); } while ( xev.type != MapNotify || xev.xmap.event != appMPlayer.subWindow.WindowID );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
327 appMPlayer.subWindow.Mapped=wsMapped;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
328 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
329
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
330 if ( fullscreen )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
331 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
332 mplFullScreen();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
333 btnModify( evFullScreen,btnPressed );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
334 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
335 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
336 else
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
337 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
338 if ( fullscreen )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
339 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
340 wsVisibleWindow( &appMPlayer.subWindow,wsShowWindow );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
341 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
342 XEvent xev;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
343 do { XNextEvent( wsDisplay,&xev ); } while ( xev.type != MapNotify || xev.xmap.event != appMPlayer.subWindow.WindowID );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
344 appMPlayer.subWindow.Mapped=wsMapped;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
345 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
346 wsVisibleWindow( &appMPlayer.subWindow, wsShowWindow );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
347
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
348 mplFullScreen();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
349 btnModify( evFullScreen,btnPressed );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
350 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
351 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
352 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
353 mplSubRender=1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
354 // ---
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
355
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
356 if ( filename ) mplSetFileName( NULL,filename,STREAMTYPE_FILE );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
357 if ( plCurrent && !filename ) mplSetFileName( plCurrent->path,plCurrent->name,STREAMTYPE_FILE );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
358 if ( subdata ) guiSetFilename( guiIntfStruct.Subtitlename, subdata->filename );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
359 guiLoadFont();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
360 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
361
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
362 void guiDone( void )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
363 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
364 mplMainRender=0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
365 mp_msg( MSGT_GPLAYER,MSGL_V,"[GUI] done.\n" );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
366
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
367 if ( gui_save_pos )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
368 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
369 gui_main_pos_x=appMPlayer.mainWindow.X; gui_main_pos_y=appMPlayer.mainWindow.Y;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
370 gui_sub_pos_x=appMPlayer.subWindow.X; gui_sub_pos_y=appMPlayer.subWindow.Y;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
371 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
372
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 26458
diff changeset
373 #ifdef CONFIG_ASS
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
374 ass_enabled = gtkASS.enabled;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
375 ass_use_margins = gtkASS.use_margins;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
376 ass_top_margin = gtkASS.top_margin;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
377 ass_bottom_margin = gtkASS.bottom_margin;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
378 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
379
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
380 cfg_write();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
381 wsXDone();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
382 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
383
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
384 int guiCMDArray[] =
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
385 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
386 evLoadPlay,
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
387 evLoadSubtitle,
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
388 evAbout,
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
389 evPlay,
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
390 evStop,
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
391 evPlayList,
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
392 evPreferences,
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
393 evFullScreen,
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
394 evSkinBrowser
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
395 };
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
396
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
397 extern int stream_dump_type;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
398 extern int vcd_track;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
399 extern m_obj_settings_t * vf_settings;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
400
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
401 void guiLoadFont( void )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
402 {
27393
4876c89bafdd Rename font-related preprocessor directives.
diego
parents: 27390
diff changeset
403 #ifdef CONFIG_FREETYPE
25851
9ebd00825df2 Allow independent scaling of vo_font and sub_font.
reimar
parents: 25765
diff changeset
404 load_font_ft(vo_image_width, vo_image_height, &vo_font, font_name, osd_font_scale_factor);
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
405 #else
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
406 if ( vo_font )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
407 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
408 int i;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
409 if ( vo_font->name ) free( vo_font->name );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
410 if ( vo_font->fpath ) free( vo_font->fpath );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
411 for ( i=0;i<16;i++ )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
412 if ( vo_font->pic_a[i] )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
413 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
414 if ( vo_font->pic_a[i]->bmp ) free( vo_font->pic_a[i]->bmp );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
415 if ( vo_font->pic_a[i]->pal ) free( vo_font->pic_a[i]->pal );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
416 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
417 for ( i=0;i<16;i++ )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
418 if ( vo_font->pic_b[i] )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
419 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
420 if ( vo_font->pic_b[i]->bmp ) free( vo_font->pic_b[i]->bmp );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
421 if ( vo_font->pic_b[i]->pal ) free( vo_font->pic_b[i]->pal );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
422 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
423 free( vo_font ); vo_font=NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
424 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
425 if ( font_name )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
426 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
427 vo_font=read_font_desc( font_name,font_factor,0 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
428 if ( !vo_font ) mp_msg( MSGT_CPLAYER,MSGL_ERR,MSGTR_CantLoadFont,font_name );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
429 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
430 else
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
431 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
432 font_name=gstrdup( get_path( "font/font.desc" ) );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
433 vo_font=read_font_desc( font_name,font_factor,0 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
434 if ( !vo_font )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
435 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
436 gfree( (void **)&font_name ); font_name=gstrdup(MPLAYER_DATADIR "/font/font.desc" );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
437 vo_font=read_font_desc( font_name,font_factor,0 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
438 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
439 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
440 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
441 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
442
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
443 extern mp_osd_obj_t* vo_osd_list;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
444
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
445 extern char **sub_name;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
446
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
447 void guiLoadSubtitle( char * name )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
448 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
449 if ( guiIntfStruct.Playing == 0 )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
450 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
451 guiIntfStruct.SubtitleChanged=1; //what is this for? (mw)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
452 return;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
453 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
454 if ( subdata )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
455 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
456 mp_msg( MSGT_GPLAYER,MSGL_INFO,MSGTR_DeletingSubtitles );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
457 sub_free( subdata );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
458 subdata=NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
459 vo_sub=NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
460 if ( vo_osd_list )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
461 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
462 int len;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
463 mp_osd_obj_t * osd = vo_osd_list;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
464 while ( osd )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
465 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
466 if ( osd->type == OSDTYPE_SUBTITLE ) break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
467 osd=osd->next;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
468 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
469 if ( osd && osd->flags&OSDFLAG_VISIBLE )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
470 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
471 len=osd->stride * ( osd->bbox.y2 - osd->bbox.y1 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
472 memset( osd->bitmap_buffer,0,len );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
473 memset( osd->alpha_buffer,0,len );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
474 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
475 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
476 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
477 if ( name )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
478 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
479 mp_msg( MSGT_GPLAYER,MSGL_INFO,MSGTR_LoadingSubtitles,name );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
480 subdata=sub_read_file( name, guiIntfStruct.FPS );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
481 if ( !subdata ) mp_msg( MSGT_GPLAYER,MSGL_ERR,MSGTR_CantLoadSub,name );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
482 sub_name = (malloc(2 * sizeof(char*))); //when mplayer will be restarted
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
483 sub_name[0] = strdup(name); //sub_name[0] will be read
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
484 sub_name[1] = NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
485 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
486 update_set_of_subtitles();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
487
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
488 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
489
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
490 static void add_vf( char * str )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
491 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
492 mp_msg( MSGT_GPLAYER,MSGL_STATUS,MSGTR_AddingVideoFilter,str );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
493 if ( vf_settings )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
494 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
495 int i = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
496 while ( vf_settings[i].name ) if ( !gstrcmp( vf_settings[i++].name,str ) ) { i=-1; break; }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
497 if ( i != -1 )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
498 { vf_settings=realloc( vf_settings,( i + 2 ) * sizeof( m_obj_settings_t ) ); vf_settings[i].name=strdup( str );vf_settings[i].attribs = NULL; vf_settings[i+1].name=NULL; }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
499 } else { vf_settings=malloc( 2 * sizeof( m_obj_settings_t ) ); vf_settings[0].name=strdup( str );vf_settings[0].attribs = NULL; vf_settings[1].name=NULL; }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
500 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
501
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
502 static void remove_vf( char * str )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
503 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
504 int n = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
505
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
506 if ( !vf_settings ) return;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
507
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
508 mp_msg( MSGT_GPLAYER,MSGL_STATUS,MSGTR_RemovingVideoFilter,str );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
509
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
510 while ( vf_settings[n++].name ); n--;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
511 if ( n > -1 )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
512 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
513 int i = 0,m = -1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
514 while ( vf_settings[i].name ) if ( !gstrcmp( vf_settings[i++].name,str ) ) { m=i - 1; break; }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
515 i--;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
516 if ( m > -1 )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
517 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
518 if ( n == 1 ) { free( vf_settings[0].name );free( vf_settings[0].attribs ); free( vf_settings ); vf_settings=NULL; }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
519 else { free( vf_settings[i].name );free( vf_settings[i].attribs ); memcpy( &vf_settings[i],&vf_settings[i + 1],( n - i ) * sizeof( m_obj_settings_t ) ); }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
520 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
521 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
522 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
523
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
524 int guiGetEvent( int type,char * arg )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
525 {
25765
304fc0bbefe1 audio_out / video_out structs should be treated as const
reimar
parents: 25219
diff changeset
526 const ao_functions_t *audio_out = NULL;
25219
e82ecde2cbd4 Mark several uses of vo_functions_t as const to stop some of the current
reimar
parents: 24242
diff changeset
527 const vo_functions_t *video_out = NULL;
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
528 mixer_t *mixer = NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
529
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
530 stream_t * stream = (stream_t *) arg;
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 26458
diff changeset
531 #ifdef CONFIG_DVDREAD
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
532 dvd_priv_t * dvdp = (dvd_priv_t *) arg;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
533 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
534
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
535 if (guiIntfStruct.mpcontext) {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
536 audio_out = mpctx_get_audio_out(guiIntfStruct.mpcontext);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
537 video_out = mpctx_get_video_out(guiIntfStruct.mpcontext);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
538 mixer = mpctx_get_mixer(guiIntfStruct.mpcontext);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
539 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
540
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
541 switch ( type )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
542 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
543 case guiXEvent:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
544 guiIntfStruct.event_struct=(void *)arg;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
545 wsEvents( wsDisplay,(XEvent *)arg,NULL );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
546 gtkEventHandling();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
547 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
548 case guiCEvent:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
549 switch ( (int)arg )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
550 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
551 case guiSetPlay:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
552 guiIntfStruct.Playing=1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
553 // if ( !gtkShowVideoWindow ) wsVisibleWindow( &appMPlayer.subWindow,wsHideWindow );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
554 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
555 case guiSetStop:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
556 guiIntfStruct.Playing=0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
557 // if ( !gtkShowVideoWindow ) wsVisibleWindow( &appMPlayer.subWindow,wsHideWindow );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
558 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
559 case guiSetPause: guiIntfStruct.Playing=2; break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
560 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
561 mplState();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
562 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
563 case guiSetState:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
564 mplState();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
565 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
566 case guiSetFileName:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
567 if ( arg ) guiSetFilename( guiIntfStruct.Filename,arg );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
568 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
569 case guiSetAudioOnly:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
570 guiIntfStruct.AudioOnly=(int)arg;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
571 if ( (int)arg ) { guiIntfStruct.NoWindow=True; wsVisibleWindow( &appMPlayer.subWindow,wsHideWindow ); }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
572 else wsVisibleWindow( &appMPlayer.subWindow,wsShowWindow );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
573 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
574 case guiSetContext:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
575 guiIntfStruct.mpcontext=(void *)arg;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
576 case guiSetDemuxer:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
577 guiIntfStruct.demuxer=(void *)arg;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
578 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
579 case guiSetAfilter:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
580 guiIntfStruct.afilter=(void *)arg;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
581 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
582 case guiSetShVideo:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
583 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
584 if ( !appMPlayer.subWindow.isFullScreen )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
585 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
586 wsResizeWindow( &appMPlayer.subWindow,vo_dwidth,vo_dheight );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
587 wsMoveWindow( &appMPlayer.subWindow,True,appMPlayer.sub.x,appMPlayer.sub.y );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
588 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
589 guiIntfStruct.MovieWidth=vo_dwidth;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
590 guiIntfStruct.MovieHeight=vo_dheight;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
591 if (guiWinID>=0)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
592 wsMoveWindow( &appMPlayer.mainWindow,0,0, vo_dheight);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
593 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
594 break;
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 26458
diff changeset
595 #ifdef CONFIG_DVDREAD
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
596 case guiSetDVD:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
597 guiIntfStruct.DVD.titles=dvdp->vmg_file->tt_srpt->nr_of_srpts;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
598 guiIntfStruct.DVD.chapters=dvdp->vmg_file->tt_srpt->title[dvd_title].nr_of_ptts;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
599 guiIntfStruct.DVD.angles=dvdp->vmg_file->tt_srpt->title[dvd_title].nr_of_angles;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
600 guiIntfStruct.DVD.nr_of_audio_channels=dvdp->nr_of_channels;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
601 memcpy( guiIntfStruct.DVD.audio_streams,dvdp->audio_streams,sizeof( dvdp->audio_streams ) );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
602 guiIntfStruct.DVD.nr_of_subtitles=dvdp->nr_of_subtitles;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
603 memcpy( guiIntfStruct.DVD.subtitles,dvdp->subtitles,sizeof( dvdp->subtitles ) );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
604 guiIntfStruct.DVD.current_title=dvd_title + 1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
605 guiIntfStruct.DVD.current_chapter=dvd_chapter + 1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
606 guiIntfStruct.DVD.current_angle=dvd_angle + 1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
607 guiIntfStruct.Track=dvd_title + 1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
608 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
609 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
610 case guiSetStream:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
611 guiIntfStruct.StreamType=stream->type;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
612 switch( stream->type )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
613 {
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 26458
diff changeset
614 #ifdef CONFIG_DVDREAD
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
615 case STREAMTYPE_DVD:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
616 guiGetEvent( guiSetDVD,(char *)stream->priv );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
617 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
618 #endif
27370
14c5017f40d2 Change a bunch of video/audio-output-specific preprocessor directives from
diego
parents: 27359
diff changeset
619 #ifdef CONFIG_VCD
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
620 case STREAMTYPE_VCD:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
621 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
622 int i;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
623
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
624 if (!stream->priv)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
625 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
626 guiIntfStruct.VCDTracks=0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
627 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
628 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
629 for ( i=1;i < 100;i++ )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
630 if ( vcd_seek_to_track( stream->priv,i ) < 0 ) break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
631 vcd_seek_to_track( stream->priv,vcd_track );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
632 guiIntfStruct.VCDTracks=--i;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
633 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
634 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
635 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
636 default: break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
637 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
638 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
639 case guiIEvent:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
640 mp_msg( MSGT_GPLAYER,MSGL_V,"cmd: %d\n",(int)arg );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
641 switch( (int)arg )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
642 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
643 case MP_CMD_QUIT:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
644 mplEventHandling( evExit,0 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
645 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
646 case MP_CMD_VO_FULLSCREEN:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
647 mplEventHandling( evFullScreen,0 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
648 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
649 default:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
650 mplEventHandling( guiCMDArray[ (int)arg - MP_CMD_GUI_EVENTS - 1 ],0 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
651 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
652 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
653 case guiReDraw:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
654 mplEventHandling( evRedraw,0 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
655 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
656 case guiSetVolume:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
657 if ( audio_out )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
658 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
659 float l,r;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
660 mixer_getvolume( mixer,&l,&r );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
661 guiIntfStruct.Volume=(r>l?r:l);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
662 if ( r != l ) guiIntfStruct.Balance=( ( r - l ) + 100 ) * 0.5f;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
663 else guiIntfStruct.Balance=50.0f;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
664 btnModify( evSetVolume,guiIntfStruct.Volume );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
665 btnModify( evSetBalance,guiIntfStruct.Balance );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
666 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
667 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
668 case guiSetFileFormat:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
669 guiIntfStruct.FileFormat=(int)arg;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
670 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
671 case guiSetValues:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
672 // -- video
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
673 guiIntfStruct.sh_video=arg;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
674 if ( arg )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
675 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
676 sh_video_t * sh = (sh_video_t *)arg;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
677 guiIntfStruct.FPS=sh->fps;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
678 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
679
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
680 if ( guiIntfStruct.NoWindow ) wsVisibleWindow( &appMPlayer.subWindow,wsHideWindow );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
681
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
682 if ( guiIntfStruct.StreamType == STREAMTYPE_STREAM ) btnSet( evSetMoviePosition,btnDisabled );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
683 else btnSet( evSetMoviePosition,btnReleased );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
684
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
685 // -- audio
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
686 if ( audio_out )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
687 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
688 float l,r;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
689 mixer_getvolume( mixer,&l,&r );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
690 guiIntfStruct.Volume=(r>l?r:l);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
691 if ( r != l ) guiIntfStruct.Balance=( ( r - l ) + 100 ) * 0.5f;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
692 else guiIntfStruct.Balance=50.0f;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
693 btnModify( evSetVolume,guiIntfStruct.Volume );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
694 btnModify( evSetBalance,guiIntfStruct.Balance );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
695 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
696
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
697 if ( gtkEnableAudioEqualizer )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
698 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
699 equalizer_t eq;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
700 int i,j;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
701 for ( i=0;i<6;i++ )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
702 for ( j=0;j<10;j++ )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
703 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
704 eq.channel=i; eq.band=j; eq.gain=gtkEquChannels[i][j];
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
705 gtkSet( gtkSetEqualizer,0,&eq );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
706 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
707 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
708 // -- subtitle
27370
14c5017f40d2 Change a bunch of video/audio-output-specific preprocessor directives from
diego
parents: 27359
diff changeset
709 #ifdef CONFIG_DXR3
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
710 if ( video_driver_list && !gstrcmp( video_driver_list[0],"dxr3" ) && guiIntfStruct.FileFormat != DEMUXER_TYPE_MPEG_PS
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 26458
diff changeset
711 #ifdef CONFIG_LIBAVCODEC
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
712 && !gtkVfLAVC
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
713 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
714 )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
715 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
716 gtkMessageBox( GTK_MB_FATAL,MSGTR_NEEDLAVC );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
717 guiIntfStruct.Playing=0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
718 return True;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
719 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
720 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
721 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
722 case guiSetDefaults:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
723 // if ( guiIntfStruct.Playing == 1 && guiIntfStruct.FilenameChanged )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
724 if ( guiIntfStruct.FilenameChanged )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
725 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
726 audio_id=-1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
727 video_id=-1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
728 dvdsub_id=-1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
729 vobsub_id=-1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
730 stream_cache_size=-1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
731 autosync=0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
732 vcd_track=0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
733 dvd_title=0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
734 force_fps=0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
735 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
736 guiIntfStruct.demuxer=NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
737 guiIntfStruct.sh_video=NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
738 wsPostRedisplay( &appMPlayer.subWindow );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
739 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
740 case guiSetParameters:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
741 guiGetEvent( guiSetDefaults,NULL );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
742 switch ( guiIntfStruct.StreamType )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
743 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
744 case STREAMTYPE_PLAYLIST:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
745 break;
27370
14c5017f40d2 Change a bunch of video/audio-output-specific preprocessor directives from
diego
parents: 27359
diff changeset
746 #ifdef CONFIG_VCD
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
747 case STREAMTYPE_VCD:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
748 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
749 char tmp[512];
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
750 sprintf( tmp,"vcd://%d",guiIntfStruct.Track + 1 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
751 guiSetFilename( guiIntfStruct.Filename,tmp );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
752 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
753 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
754 #endif
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 26458
diff changeset
755 #ifdef CONFIG_DVDREAD
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
756 case STREAMTYPE_DVD:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
757 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
758 char tmp[512];
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
759 sprintf( tmp,"dvd://%d",guiIntfStruct.Title );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
760 guiSetFilename( guiIntfStruct.Filename,tmp );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
761 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
762 dvd_chapter=guiIntfStruct.Chapter;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
763 dvd_angle=guiIntfStruct.Angle;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
764 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
765 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
766 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
767 //if ( guiIntfStruct.StreamType != STREAMTYPE_PLAYLIST ) // Does not make problems anymore!
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
768 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
769 if ( guiIntfStruct.Filename ) filename=gstrdup( guiIntfStruct.Filename );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
770 else if ( filename ) guiSetFilename( guiIntfStruct.Filename,filename );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
771 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
772 // --- video opts
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
773
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
774 if ( !video_driver_list )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
775 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
776 int i = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
777 while ( video_out_drivers[i++] )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
778 if ( video_out_drivers[i - 1]->control( VOCTRL_GUISUPPORT,NULL ) == VO_TRUE )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
779 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
780 gaddlist( &video_driver_list,(char *)video_out_drivers[i - 1]->info->short_name );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
781 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
782 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
783 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
784
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
785 if ( !video_driver_list && !video_driver_list[0] ) { gtkMessageBox( GTK_MB_FATAL,MSGTR_IDFGCVD ); exit_player( "gui init" ); }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
786
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
787 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
788 int i = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
789 guiIntfStruct.NoWindow=False;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
790 while ( video_out_drivers[i++] )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
791 if ( video_out_drivers[i - 1]->control( VOCTRL_GUISUPPORT,NULL ) == VO_TRUE )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
792 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
793 if ( ( video_driver_list && !gstrcmp( video_driver_list[0],(char *)video_out_drivers[i - 1]->info->short_name ) )&&( video_out_drivers[i - 1]->control( VOCTRL_GUI_NOWINDOW,NULL ) == VO_TRUE ) )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
794 { guiIntfStruct.NoWindow=True; break; }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
795 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
796 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
797
27370
14c5017f40d2 Change a bunch of video/audio-output-specific preprocessor directives from
diego
parents: 27359
diff changeset
798 #ifdef CONFIG_DXR3
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 26458
diff changeset
799 #ifdef CONFIG_LIBAVCODEC
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
800 remove_vf( "lavc" );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
801 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
802 if ( video_driver_list && !gstrcmp( video_driver_list[0],"dxr3" ) )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
803 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
804 if ( ( guiIntfStruct.StreamType != STREAMTYPE_DVD)&&( guiIntfStruct.StreamType != STREAMTYPE_VCD ) )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
805 {
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 26458
diff changeset
806 #ifdef CONFIG_LIBAVCODEC
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
807 if ( gtkVfLAVC ) add_vf( "lavc" );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
808 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
809 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
810 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
811 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
812 // ---
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
813 if ( gtkVfPP ) add_vf( "pp" );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
814 else remove_vf( "pp" );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
815
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
816 // --- audio opts
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
817 // if ( ao_plugin_cfg.plugin_list ) { free( ao_plugin_cfg.plugin_list ); ao_plugin_cfg.plugin_list=NULL; }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
818 if (gtkAONorm)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
819 greplace(&af_cfg.list, "volnorm", "volnorm");
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
820 if (gtkEnableAudioEqualizer)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
821 greplace(&af_cfg.list, "equalizer", "equalizer");
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
822 if ( gtkAOExtraStereo )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
823 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
824 char *name = malloc(12 + 20 + 1);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
825 snprintf(name, 12 + 20, "extrastereo=%f", gtkAOExtraStereoMul);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
826 name[12 + 20] = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
827 greplace(&af_cfg.list, "extrastereo", name);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
828 free(name);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
829 }
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 26458
diff changeset
830 #ifdef CONFIG_OSS_AUDIO
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
831 if ( audio_driver_list && !gstrncmp( audio_driver_list[0],"oss",3 ) )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
832 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
833 char *tmp;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
834 mixer_device = gtkAOOSSMixer;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
835 mixer_channel = gtkAOOSSMixerChannel;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
836 if (gtkAOOSSDevice) {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
837 tmp = calloc( 1,strlen( gtkAOOSSDevice ) + 7 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
838 sprintf( tmp,"oss:%s",gtkAOOSSDevice );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
839 } else
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
840 tmp = strdup("oss");
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
841 gaddlist( &audio_driver_list,tmp );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
842 free(tmp);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
843 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
844 #endif
27390
9d95dc936e66 Introduce CONFIG_ALSA preprocessor directive for ALSA 0.9 and 1.x.
diego
parents: 27387
diff changeset
845 #ifdef CONFIG_ALSA
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
846 if ( audio_driver_list && !gstrncmp( audio_driver_list[0],"alsa",4 ) )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
847 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
848 char *tmp;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
849 mixer_device = gtkAOALSAMixer;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
850 mixer_channel = gtkAOALSAMixerChannel;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
851 if (gtkAOALSADevice) {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
852 tmp = calloc( 1,strlen( gtkAOALSADevice ) + 14 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
853 sprintf( tmp,"alsa:device=%s",gtkAOALSADevice );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
854 } else
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
855 tmp = strdup("alsa");
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
856 gaddlist( &audio_driver_list,tmp );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
857 free(tmp);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
858 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
859 #endif
27370
14c5017f40d2 Change a bunch of video/audio-output-specific preprocessor directives from
diego
parents: 27359
diff changeset
860 #ifdef CONFIG_SDL
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
861 if ( audio_driver_list && !gstrncmp( audio_driver_list[0],"sdl",3 ) )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
862 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
863 char *tmp;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
864 if (gtkAOSDLDriver) {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
865 tmp = calloc( 1,strlen( gtkAOSDLDriver ) + 10 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
866 sprintf( tmp,"sdl:%s",gtkAOSDLDriver );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
867 } else
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
868 tmp = strdup("sdl");
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
869 gaddlist( &audio_driver_list,tmp );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
870 free(tmp);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
871 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
872 #endif
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 26458
diff changeset
873 #ifdef CONFIG_ESD
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
874 if ( audio_driver_list && !gstrncmp( audio_driver_list[0],"esd",3 ) )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
875 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
876 char *tmp;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
877 if (gtkAOESDDevice) {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
878 tmp = calloc( 1,strlen( gtkAOESDDevice ) + 10 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
879 sprintf( tmp,"esd:%s",gtkAOESDDevice );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
880 } else
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
881 tmp = strdup("esd");
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
882 gaddlist( &audio_driver_list,tmp );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
883 free(tmp);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
884 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
885 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
886 // -- subtitle
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
887 //subdata->filename=gstrdup( guiIntfStruct.Subtitlename );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
888 stream_dump_type=0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
889 if ( gtkSubDumpMPSub ) stream_dump_type=4;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
890 if ( gtkSubDumpSrt ) stream_dump_type=6;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
891 gtkSubDumpMPSub=gtkSubDumpSrt=0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
892 guiLoadFont();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
893
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
894 // --- misc
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
895 if ( gtkCacheOn ) stream_cache_size=gtkCacheSize;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
896 if ( gtkAutoSyncOn ) autosync=gtkAutoSync;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
897
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
898 if ( guiIntfStruct.AudioFile ) audio_stream=gstrdup( guiIntfStruct.AudioFile );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
899 else if ( guiIntfStruct.FilenameChanged ) gfree( (void**)&audio_stream );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
900 //audio_stream=NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
901
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
902 guiIntfStruct.DiskChanged=0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
903 guiIntfStruct.FilenameChanged=0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
904 guiIntfStruct.NewPlay=0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
905
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 26458
diff changeset
906 #ifdef CONFIG_ASS
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
907 ass_enabled = gtkASS.enabled;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
908 ass_use_margins = gtkASS.use_margins;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
909 ass_top_margin = gtkASS.top_margin;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
910 ass_bottom_margin = gtkASS.bottom_margin;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
911 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
912
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
913 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
914 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
915 return False;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
916 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
917
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
918 void guiEventHandling( void )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
919 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
920 if ( !guiIntfStruct.Playing || guiIntfStruct.NoWindow ) wsHandleEvents();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
921 gtkEventHandling();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
922 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
923
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
924 // ---
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
925
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
926 float gtkEquChannels[6][10];
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
927
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
928 plItem * plCurrent = NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
929 plItem * plList = NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
930 plItem * plLastPlayed = NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
931
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
932 URLItem *URLList = NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
933
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
934 char *fsHistory[fsPersistant_MaxPos] = { NULL,NULL,NULL,NULL,NULL };
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
935
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
936 #if defined( MP_DEBUG ) && 0
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
937 void list( void )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
938 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
939 plItem * next = plList;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
940 printf( "--- list ---\n" );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
941 while( next || next->next )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
942 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
943 printf( "item: %s/%s\n",next->path,next->name );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
944 if ( next->next ) next=next->next; else break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
945 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
946 printf( "--- end of list ---\n" );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
947 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
948 #else
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
949 #define list();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
950 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
951
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
952 void * gtkSet( int cmd,float fparam, void * vparam )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
953 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
954 equalizer_t * eq = (equalizer_t *)vparam;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
955 plItem * item = (plItem *)vparam;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
956
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
957 URLItem * url_item = (URLItem *)vparam;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
958 int is_added = True;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
959
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
960 switch ( cmd )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
961 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
962 // --- handle playlist
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
963 case gtkAddPlItem: // add item to playlist
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
964 if ( plList )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
965 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
966 plItem * next = plList;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
967 while ( next->next ) { /*printf( "%s\n",next->name );*/ next=next->next; }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
968 next->next=item; item->prev=next;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
969 } else { item->prev=item->next=NULL; plCurrent=plList=item; }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
970 list();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
971 return NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
972 case gtkInsertPlItem: // add item into playlist after current
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
973 if ( plCurrent )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
974 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
975 plItem * curr = plCurrent;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
976 item->next=curr->next;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
977 if (item->next)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
978 item->next->prev=item;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
979 item->prev=curr;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
980 curr->next=item;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
981 plCurrent=plCurrent->next;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
982 return plCurrent;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
983 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
984 else
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
985 return gtkSet(gtkAddPlItem,0,(void*)item);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
986 return NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
987 case gtkGetNextPlItem: // get current item from playlist
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
988 if ( plCurrent && plCurrent->next)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
989 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
990 plCurrent=plCurrent->next;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
991 /*if ( !plCurrent && plList )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
992 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
993 plItem * next = plList;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
994 while ( next->next ) { if ( !next->next ) break; next=next->next; }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
995 plCurrent=next;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
996 }*/
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
997 return plCurrent;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
998 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
999 return NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1000 case gtkGetPrevPlItem:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1001 if ( plCurrent && plCurrent->prev)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1002 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1003 plCurrent=plCurrent->prev;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1004 //if ( !plCurrent && plList ) plCurrent=plList;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1005 return plCurrent;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1006 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1007 return NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1008 case gtkSetCurrPlItem: // set current item
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1009 plCurrent=item;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1010 return plCurrent;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1011 case gtkGetCurrPlItem: // get current item
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1012 return plCurrent;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1013 case gtkDelCurrPlItem: // delete current item
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1014 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1015 plItem * curr = plCurrent;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1016
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1017 if (!curr)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1018 return NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1019 if (curr->prev)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1020 curr->prev->next=curr->next;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1021 if (curr->next)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1022 curr->next->prev=curr->prev;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1023 if (curr==plList)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1024 plList=curr->next;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1025 plCurrent=curr->next;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1026 // Free it
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1027 if ( curr->path ) free( curr->path );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1028 if ( curr->name ) free( curr->name );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1029 free( curr );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1030 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1031 mplCurr(); // Instead of using mplNext && mplPrev
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1032
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1033 return plCurrent;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1034 case gtkDelPl: // delete list
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1035 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1036 plItem * curr = plList;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1037 plItem * next;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1038 if ( !plList ) return NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1039 if ( !curr->next )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1040 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1041 if ( curr->path ) free( curr->path );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1042 if ( curr->name ) free( curr->name );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1043 free( curr );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1044 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1045 else
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1046 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1047 while ( curr->next )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1048 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1049 next=curr->next;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1050 if ( curr->path ) free( curr->path );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1051 if ( curr->name ) free( curr->name );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1052 free( curr );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1053 curr=next;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1054 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1055 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1056 plList=NULL; plCurrent=NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1057 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1058 return NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1059 // ----- Handle url
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1060 case gtkAddURLItem:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1061 if ( URLList )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1062 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1063 URLItem * next_url = URLList;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1064 is_added = False;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1065 while ( next_url->next )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1066 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1067 if ( !gstrcmp( next_url->url,url_item->url ) )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1068 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1069 is_added=True;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1070 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1071 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1072 next_url=next_url->next;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1073 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1074 if ( ( !is_added )&&( gstrcmp( next_url->url,url_item->url ) ) ) next_url->next=url_item;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1075 } else { url_item->next=NULL; URLList=url_item; }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1076 return NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1077 // --- subtitle
27393
4876c89bafdd Rename font-related preprocessor directives.
diego
parents: 27390
diff changeset
1078 #ifndef CONFIG_FREETYPE
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1079 case gtkSetFontFactor:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1080 font_factor=fparam;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1081 guiLoadFont();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1082 return NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1083 #else
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1084 case gtkSetFontOutLine:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1085 subtitle_font_thickness=( 8.0f / 100.0f ) * fparam;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1086 guiLoadFont();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1087 return NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1088 case gtkSetFontBlur:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1089 subtitle_font_radius=( 8.0f / 100.0f ) * fparam;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1090 guiLoadFont();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1091 return NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1092 case gtkSetFontTextScale:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1093 text_font_scale_factor=fparam;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1094 guiLoadFont();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1095 return NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1096 case gtkSetFontOSDScale:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1097 osd_font_scale_factor=fparam;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1098 guiLoadFont();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1099 return NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1100 case gtkSetFontEncoding:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1101 gfree( (void **)&subtitle_font_encoding );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1102 subtitle_font_encoding=gstrdup( (char *)vparam );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1103 guiLoadFont();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1104 return NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1105 case gtkSetFontAutoScale:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1106 subtitle_autoscale=(int)fparam;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1107 guiLoadFont();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1108 return NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1109 #endif
27393
4876c89bafdd Rename font-related preprocessor directives.
diego
parents: 27390
diff changeset
1110 #ifdef CONFIG_ICONV
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1111 case gtkSetSubEncoding:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1112 gfree( (void **)&sub_cp );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1113 sub_cp=gstrdup( (char *)vparam );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1114 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1115 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1116 // --- misc
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1117 case gtkClearStruct:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1118 if ( (unsigned int)vparam & guiFilenames )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1119 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1120 gfree( (void **)&guiIntfStruct.Filename );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1121 gfree( (void **)&guiIntfStruct.Subtitlename );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1122 gfree( (void **)&guiIntfStruct.AudioFile );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1123 gtkSet( gtkDelPl,0,NULL );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1124 }
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 26458
diff changeset
1125 #ifdef CONFIG_DVDREAD
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1126 if ( (unsigned int)vparam & guiDVD ) memset( &guiIntfStruct.DVD,0,sizeof( guiDVDStruct ) );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1127 #endif
27370
14c5017f40d2 Change a bunch of video/audio-output-specific preprocessor directives from
diego
parents: 27359
diff changeset
1128 #ifdef CONFIG_VCD
23077
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1129 if ( (unsigned int)vparam & guiVCD ) guiIntfStruct.VCDTracks=0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1130 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1131 return NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1132 case gtkSetExtraStereo:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1133 gtkAOExtraStereoMul=fparam;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1134 if (guiIntfStruct.afilter)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1135 af_control_any_rev(guiIntfStruct.afilter,
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1136 AF_CONTROL_ES_MUL | AF_CONTROL_SET, &gtkAOExtraStereoMul);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1137 return NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1138 case gtkSetPanscan:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1139 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1140 mp_cmd_t * mp_cmd;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1141 mp_cmd=calloc( 1,sizeof( *mp_cmd ) );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1142 mp_cmd->id=MP_CMD_PANSCAN; mp_cmd->name=strdup( "panscan" );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1143 mp_cmd->args[0].v.f=fparam; mp_cmd->args[1].v.i=1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1144 mp_input_queue_cmd( mp_cmd );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1145 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1146 return NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1147 case gtkSetAutoq:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1148 auto_quality=(int)fparam;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1149 return NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1150 // --- set equalizers
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1151 case gtkSetContrast:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1152 if ( guiIntfStruct.sh_video ) set_video_colors( guiIntfStruct.sh_video,"contrast",(int)fparam );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1153 return NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1154 case gtkSetBrightness:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1155 if ( guiIntfStruct.sh_video ) set_video_colors( guiIntfStruct.sh_video,"brightness",(int)fparam );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1156 return NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1157 case gtkSetHue:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1158 if ( guiIntfStruct.sh_video ) set_video_colors( guiIntfStruct.sh_video,"hue",(int)fparam );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1159 return NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1160 case gtkSetSaturation:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1161 if ( guiIntfStruct.sh_video ) set_video_colors( guiIntfStruct.sh_video,"saturation",(int)fparam );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1162 return NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1163 case gtkSetEqualizer:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1164 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1165 af_control_ext_t tmp;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1166 if ( eq )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1167 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1168 gtkEquChannels[eq->channel][eq->band]=eq->gain;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1169 tmp.ch = eq->channel;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1170 tmp.arg = gtkEquChannels[eq->channel];
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1171 if (guiIntfStruct.afilter)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1172 af_control_any_rev(guiIntfStruct.afilter,
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1173 AF_CONTROL_EQUALIZER_GAIN | AF_CONTROL_SET, &tmp);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1174 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1175 else
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1176 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1177 int i;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1178 memset( gtkEquChannels,0,sizeof( gtkEquChannels ) );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1179 if (guiIntfStruct.afilter)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1180 for ( i=0;i<6;i++ )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1181 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1182 tmp.ch = i;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1183 tmp.arg = gtkEquChannels[i];
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1184 af_control_any_rev(guiIntfStruct.afilter,
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1185 AF_CONTROL_EQUALIZER_GAIN | AF_CONTROL_SET, &tmp);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1186 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1187 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1188 return NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1189 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1190 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1191 return NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1192 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1193
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1194 #define mp_basename(s) (strrchr(s,'/')==NULL?(char*)s:(strrchr(s,'/')+1))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1195
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1196 #include "playtree.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1197
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1198 //This function adds/inserts one file into the gui playlist
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1199
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1200 int import_file_into_gui(char* temp, int insert)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1201 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1202 char *filename, *pathname;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1203 plItem * item;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1204
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1205 filename = strdup(mp_basename(temp));
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1206 pathname = strdup(temp);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1207 if (strlen(pathname)-strlen(filename)>0)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1208 pathname[strlen(pathname)-strlen(filename)-1]='\0'; // We have some path so remove / at end
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1209 else
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1210 pathname[strlen(pathname)-strlen(filename)]='\0';
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1211 mp_msg(MSGT_PLAYTREE,MSGL_V, "Adding filename %s && pathname %s\n",filename,pathname); //FIXME: Change to MSGL_DBG2 ?
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1212 item=calloc( 1,sizeof( plItem ) );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1213 if (!item)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1214 return 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1215 item->name=filename;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1216 item->path=pathname;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1217 if (insert)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1218 gtkSet( gtkInsertPlItem,0,(void*)item ); // Inserts the item after current, and makes current=item
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1219 else
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1220 gtkSet( gtkAddPlItem,0,(void*)item );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1221 return 1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1222 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1223
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1224
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1225 // This function imports the initial playtree (based on cmd-line files) into the gui playlist
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1226 // by either:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1227 // - overwriting gui pl (enqueue=0)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1228 // - appending it to gui pl (enqueue=1)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1229
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1230 int import_initial_playtree_into_gui(play_tree_t* my_playtree, m_config_t* config, int enqueue)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1231 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1232 play_tree_iter_t* my_pt_iter=NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1233 int result=0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1234
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1235 if (!enqueue) // Delete playlist before "appending"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1236 gtkSet(gtkDelPl,0,0);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1237
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1238 if((my_pt_iter=pt_iter_create(&my_playtree,config)))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1239 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1240 while ((filename=pt_iter_get_next_file(my_pt_iter))!=NULL)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1241 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1242 if (import_file_into_gui(filename, 0)) // Add it to end of list
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1243 result=1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1244 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1245 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1246
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1247 mplCurr(); // Update filename
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1248 mplGotoTheNext=1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1249
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1250 if (!enqueue)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1251 filename=guiIntfStruct.Filename; // Backward compatibility; if file is specified on commandline,
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1252 // gmplayer does directly start in Play-Mode.
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1253 else
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1254 filename=NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1255
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1256 return result;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1257 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1258
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1259 // This function imports and inserts an playtree, that is created "on the fly", for example by
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1260 // parsing some MOV-Reference-File; or by loading an playlist with "File Open"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1261 //
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1262 // The file which contained the playlist is thereby replaced with it's contents.
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1263
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1264 int import_playtree_playlist_into_gui(play_tree_t* my_playtree, m_config_t* config)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1265 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1266 play_tree_iter_t* my_pt_iter=NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1267 int result=0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1268 plItem * save=(plItem*)gtkSet( gtkGetCurrPlItem, 0, 0); // Save current item
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1269
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1270 if((my_pt_iter=pt_iter_create(&my_playtree,config)))
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1271 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1272 while ((filename=pt_iter_get_next_file(my_pt_iter))!=NULL)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1273 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1274 if (import_file_into_gui(filename, 1)) // insert it into the list and set plCurrent=new item
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1275 result=1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1276 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1277 pt_iter_destroy(&my_pt_iter);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1278 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1279
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1280 if (save)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1281 gtkSet(gtkSetCurrPlItem, 0, (void*)save);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1282 else
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1283 gtkSet(gtkSetCurrPlItem, 0, (void*)plList); // go to head, if plList was empty before
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1284
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1285 if (save && result)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1286 gtkSet(gtkDelCurrPlItem, 0, 0);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1287
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1288 mplCurr(); // Update filename
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1289 filename=NULL;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1290
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1291 return result;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1292 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1293
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1294 // wrapper function for mp_msg to display a message box for errors and warnings.
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1295
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1296 void guiMessageBox(int level, char * str) {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1297 switch(level) {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1298 case MSGL_FATAL:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1299 gtkMessageBox(GTK_MB_FATAL|GTK_MB_SIMPLE, str);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1300 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1301 case MSGL_ERR:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1302 gtkMessageBox(GTK_MB_ERROR|GTK_MB_SIMPLE, str);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1303 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1304 #if 0
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1305 // WARNING! Do NOT enable this! There are too many non-critical messages with
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1306 // MSGL_WARN, for example: broken SPU packets, codec's bit error messages,
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1307 // etc etc, they should not raise up a new window every time.
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1308 case MSGL_WARN:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1309 gtkMessageBox(GTK_MB_WARNING|GTK_MB_SIMPLE, str);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1310 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1311 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1312 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
1313 }