Mercurial > mplayer.hg
annotate Gui/mplayer/psignal.c @ 4810:bb6b9aca7195
10l accidently commited an already customized version with different default scaling algo.
author | atmos4 |
---|---|
date | Fri, 22 Feb 2002 17:58:46 +0000 |
parents | b013d01d9968 |
children |
rev | line source |
---|---|
1693 | 1 |
2 #include <stdlib.h> | |
3 #include <stdio.h> | |
4 #include <string.h> | |
5 #include <signal.h> | |
6 #include <unistd.h> | |
4465 | 7 #include <inttypes.h> |
1693 | 8 |
9 #include "widgets.h" | |
3596 | 10 #include "gtk/menu.h" |
1693 | 11 #include "play.h" |
3499 | 12 #include "gtk/fs.h" |
1693 | 13 |
14 #include "../app.h" | |
15 | |
3596 | 16 #include "../../config.h" |
17 #include "../../help_mp.h" | |
18 #include "../../libvo/x11_common.h" | |
19 #include "../../libmpdemux/stream.h" | |
20 | |
1693 | 21 #include "../skin/skin.h" |
22 #include "../wm/ws.h" | |
23 #include "../error.h" | |
24 | |
25 #include "./mplayer.h" | |
26 | |
27 #define gtkShow( w ) gtkShMem->vs.window=w; gtkSendMessage( evShowWindow ); | |
28 | |
29 pid_t mplMPlayerPID = 0; | |
30 pid_t mplParentPID = 0; | |
31 | |
1741 | 32 pid_t gtkPID = 0; |
1693 | 33 |
34 int mplCriticalError = 0; | |
35 int gtkIsOk = 0; | |
36 | |
37 void mplErrorHandler( int critical,const char * format, ... ) | |
38 { | |
39 char * p; | |
40 va_list ap; | |
41 int n; | |
42 | |
43 if ( (p=(char *)malloc( 512 ) ) == NULL ) return; | |
44 va_start( ap,format ); | |
45 n=vsnprintf( p,512,format,ap ); | |
46 va_end( ap ); | |
47 mplCriticalError=critical; | |
1907 | 48 gtkMessageBox( GTK_MB_ERROR,p ); |
1693 | 49 } |
50 | |
51 void gtkSigHandler( int s ) | |
52 { | |
53 if ( s != SIGTYPE ) return; | |
54 #ifdef DEBUG | |
55 dbprintf( 5,"[psignal] gtk sig handler msg: %d\n",gtkShMem->message ); | |
56 #endif | |
57 switch ( gtkShMem->message ) | |
58 { | |
59 case evHideWindow: | |
60 switch ( gtkShMem->vs.window ) | |
61 { | |
62 case evPlayList: gtk_widget_hide( PlayList ); gtkVisiblePlayList=0; break; | |
63 case evSkinBrowser: gtk_widget_hide( SkinBrowser ); gtkVisibleSkinBrowser=0; break; | |
64 case evLoad: gtk_widget_hide( FileSelect ); gtkVisibleFileSelect=0; break; | |
65 } | |
66 break; | |
67 case evSkinBrowser: | |
68 if ( gtkVisibleSkinBrowser ) gtk_widget_hide( SkinBrowser ); | |
69 gtkClearList( SkinList ); | |
1907 | 70 if ( gtkFillSkinList( sbMPlayerPrefixDir )&>kFillSkinList( sbMPlayerDirInHome ) ) |
1693 | 71 { |
1866
32b1bb50a0e8
some bug fix, and add decoration item to skin conffile. faszom(C)
pontscho
parents:
1858
diff
changeset
|
72 gtkSetDefaultToCList( SkinList,skinName ); |
1693 | 73 gtk_widget_show( SkinBrowser ); |
74 gtkVisibleSkinBrowser=1; | |
75 gtkShow( evSkinBrowser ); | |
76 } | |
77 break; | |
78 case evPreferences: | |
79 if ( gtkVisibleOptions ) gtk_widget_hide( Options ); | |
80 gtk_widget_show( Options ); | |
81 gtkVisibleOptions=1; | |
82 break; | |
83 case evPlayList: | |
84 if ( gtkVisiblePlayList ) gtk_widget_hide( PlayList ); | |
85 gtk_widget_show( PlayList ); | |
86 gtkVisiblePlayList=1; | |
87 gtkShow( evPlayList ); | |
88 break; | |
89 case evLoad: | |
3499 | 90 ShowFileSelect( fsVideoSelector ); |
91 #if 0 | |
1693 | 92 if ( gtkVisibleFileSelect ) gtk_widget_hide( FileSelect ); |
93 gtk_widget_show( FileSelect ); | |
94 gtkVisibleFileSelect=1; | |
95 gtkShow( evPlay ); | |
3499 | 96 #endif |
1693 | 97 break; |
1741 | 98 case evFirstLoad: |
3499 | 99 ShowFileSelect( fsVideoSelector ); |
100 #if 0 | |
1741 | 101 if ( gtkVisibleFileSelect ) gtk_widget_hide( FileSelect ); |
102 gtk_widget_show( FileSelect ); | |
103 gtkVisibleFileSelect=1; | |
104 gtkShow( evFirstLoad ); | |
3499 | 105 #endif |
106 break; | |
107 case evLoadSubtitle: | |
108 ShowFileSelect( fsSubtitleSelector ); | |
109 // gtkShow( evPlay ); | |
1741 | 110 break; |
1693 | 111 case evMessageBox: |
3596 | 112 gtk_label_set_text( GTK_LABEL( gtkMessageBoxText ),gtkShMem->mb.str ); |
1925 | 113 if( gtkVisibleMessageBox ) gtk_widget_hide( MessageBox ); |
114 switch( gtkShMem->mb.type) | |
115 { | |
116 case GTK_MB_FATAL: | |
3595 | 117 gtk_window_set_title( GTK_WINDOW( MessageBox ),MSGTR_MSGBOX_LABEL_FatalError ); |
1925 | 118 gtk_widget_hide( WarningPixmap ); |
119 gtk_widget_show( ErrorPixmap ); | |
120 break; | |
121 case GTK_MB_ERROR: | |
3595 | 122 gtk_window_set_title( GTK_WINDOW( MessageBox ),MSGTR_MSGBOX_LABEL_Error ); |
1925 | 123 gtk_widget_hide( WarningPixmap ); |
124 gtk_widget_show( ErrorPixmap ); | |
125 break; | |
126 case GTK_MB_WARNING: | |
3595 | 127 gtk_window_set_title( GTK_WINDOW( MessageBox ),MSGTR_MSGBOX_LABEL_Warning ); |
1925 | 128 gtk_widget_show( WarningPixmap ); |
129 gtk_widget_hide( ErrorPixmap ); | |
130 break; | |
131 } | |
1693 | 132 gtk_widget_show( MessageBox ); |
133 gtkVisibleMessageBox=1; | |
134 break; | |
135 case evAbout: | |
136 if ( gtkVisibleAboutBox ) gtk_widget_hide( AboutBox ); | |
137 gtk_widget_show( AboutBox ); | |
138 gtkVisibleAboutBox=1; | |
139 break; | |
140 case evExit: | |
1700 | 141 gtk_main_quit(); |
1693 | 142 break; |
2901 | 143 case evShowPopUpMenu: |
3054 | 144 gtkShMem->popupmenu=evNone; gtkShMem->popupmenuparam=0; |
2980 | 145 if ( gtkShMem->visiblepopupmenu ) gtk_widget_hide_on_delete( PopUpMenu ); |
146 PopUpMenu=create_PopUpMenu(); | |
2901 | 147 gtk_menu_popup( GTK_MENU( PopUpMenu ),NULL,NULL,NULL,NULL,0,0 ); |
2980 | 148 gtkShMem->visiblepopupmenu=1; |
149 break; | |
150 case evHidePopUpMenu: | |
151 if ( gtkShMem->visiblepopupmenu ) gtk_widget_hide_on_delete( PopUpMenu ); | |
152 gtkShMem->visiblepopupmenu=0; | |
2901 | 153 break; |
1693 | 154 } |
155 gtkShMem->message=0; | |
156 } | |
157 | |
158 void mplMainSigHandler( int s ) | |
159 { | |
1741 | 160 if ( s != SIGTYPE ) return; |
161 | |
1801 | 162 // #ifdef DEBUG |
1802 | 163 // if ( gtkShMem->message ) dbprintf( 5,"[psignal] main sig handler gtk msg: %d\n",gtkShMem->message ); |
1741 | 164 // if ( mplShMem->message ) dbprintf( 5,"[psignal] main sig handler mpl msg: %d\n",mplShMem->message ); |
1801 | 165 // #endif |
1693 | 166 |
167 switch ( gtkShMem->message ) | |
168 { | |
169 case evGtkIsOk: | |
170 #ifdef DEBUG | |
1741 | 171 dbprintf( 5,"[psignal] gtk is ok.\n" ); |
1693 | 172 #endif |
173 gtkIsOk=True; | |
174 break; | |
175 case evShowWindow: | |
176 switch ( gtkShMem->vs.window ) | |
177 { | |
178 case evPlayList: gtkVisiblePlayList=1; break; | |
179 case evLoad: gtkVisibleFileSelect=1; break; | |
180 case evSkinBrowser: gtkVisibleSkinBrowser=1; break; | |
181 } | |
182 break; | |
183 case evHideWindow: | |
184 switch ( gtkShMem->vs.window ) | |
185 { | |
186 case evPlayList: | |
187 btnModify( evPlayList,btnReleased ); gtkVisiblePlayList=0; | |
188 mplMainRender=1; wsPostRedisplay( &appMPlayer.mainWindow ); | |
189 break; | |
190 case evSkinBrowser: gtkVisibleSkinBrowser=0; break; | |
191 case evLoad: gtkVisibleFileSelect=0; break; | |
192 } | |
193 break; | |
1802 | 194 case evSkinBrowser: mplShMem->SkinChange=1; break; |
1693 | 195 case evFileLoaded: |
1891 | 196 printf("*** gtkShMem->fs.dir == '%s' \n",gtkShMem->fs.dir); |
197 printf("*** gtkShMem->fs.filename == '%s' \n",gtkShMem->fs.filename); | |
1815 | 198 strcpy( mplShMem->Filename,gtkShMem->fs.dir ); |
199 strcat( mplShMem->Filename,"/" ); | |
200 strcat( mplShMem->Filename,gtkShMem->fs.filename ); | |
201 printf( "%%%%%%%% Playing file: %s\n",mplShMem->Filename ); | |
1813 | 202 mplShMem->FilenameChanged=1; |
2447 | 203 mplShMem->StreamType=STREAMTYPE_FILE; |
1693 | 204 if ( mplMainAutoPlay ) mplGeneralTimer=1; |
205 break; | |
3499 | 206 case evSubtitleLoaded: |
207 printf("*** gtkShMem->fs.subtitlename == '%s' \n",gtkShMem->fs.subtitlename ); | |
208 strcpy( mplShMem->Subtitlename,gtkShMem->fs.subtitlename ); | |
209 mplShMem->SubtitleChanged=1; | |
210 break; | |
2940 | 211 case evShowPopUpMenu: |
3054 | 212 fprintf( stderr,"[psignal] PopUpMenu: %d param: %d\n",gtkShMem->popupmenu,gtkShMem->popupmenuparam ); |
2940 | 213 mplMiddleMenu=1; mplGeneralTimer=1; |
214 break; | |
1693 | 215 case evMessageBox: |
216 if ( mplCriticalError ) | |
217 { gtkSendMessage( evExit ); exit( 1 ); } | |
218 mplCriticalError=0; | |
219 break; | |
220 } | |
221 | |
222 // switch( mplShMem->message ) | |
223 // { | |
224 // } | |
225 gtkShMem->message=0; | |
1741 | 226 // mplShMem->message=0; |
1693 | 227 } |
228 | |
229 void gtkSendMessage( int msg ) | |
230 { | |
231 if ( !gtkIsOk ) return; | |
232 gtkShMem->message=msg; | |
1741 | 233 kill( gtkPID,SIGTYPE ); |
1693 | 234 } |