annotate gui/interface.c @ 24025:660da8e023ec

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