comparison gui/ui/main.c @ 35490:a5f5f61a7a35

Replace confusing guiInfoMediumClear() by MediumPrepare(). (It has been completely rewritten.) Now call MediumPrepare() only once for all play events. Check for current StreamType and clear stuff not being used for this stream type (and only stuff that need to be cleared).
author ib
date Mon, 03 Dec 2012 16:26:39 +0000
parents 9dceffa5d9b2
children 411875efca3f
comparison
equal deleted inserted replaced
35489:214c3f971eb0 35490:a5f5f61a7a35
55 #include "m_option.h" 55 #include "m_option.h"
56 #include "m_property.h" 56 #include "m_property.h"
57 #include "mp_core.h" 57 #include "mp_core.h"
58 #include "mpcommon.h" 58 #include "mpcommon.h"
59 59
60 #define CLEAR_FILE 1
61 #define CLEAR_VCD 2
62 #define CLEAR_DVD 4
63 #define CLEAR_ALL (CLEAR_FILE + CLEAR_VCD + CLEAR_DVD)
64
65 #define GUI_REDRAW_WAIT 375 60 #define GUI_REDRAW_WAIT 375
66 61
67 #include "actions.h" 62 #include "actions.h"
68 #include "widgets.h" 63 #include "widgets.h"
69 64
103 } 98 }
104 wsPutImage( &guiApp.mainWindow ); 99 wsPutImage( &guiApp.mainWindow );
105 // XFlush( wsDisplay ); 100 // XFlush( wsDisplay );
106 } 101 }
107 102
108 static void guiInfoMediumClear (int what) 103 static void MediumPrepare (int type)
109 { 104 {
110 if (what & CLEAR_FILE) 105 switch (type)
111 { 106 {
112 nfree(guiInfo.Filename); 107 case STREAMTYPE_DVD:
113 nfree(guiInfo.SubtitleFilename); 108 listMgr(PLAYLIST_DELETE, 0);
114 nfree(guiInfo.AudioFilename); 109 break;
115 listMgr(PLAYLIST_DELETE, 0); 110
116 } 111 case STREAMTYPE_CDDA:
117 112 case STREAMTYPE_VCD:
118 if (what & CLEAR_VCD) guiInfo.Tracks = 0; 113 listMgr(PLAYLIST_DELETE, 0);
119 114 case STREAMTYPE_FILE:
120 if (what & CLEAR_DVD) 115 case STREAMTYPE_STREAM:
121 { 116 case STREAMTYPE_PLAYLIST:
122 guiInfo.AudioStreams = 0; 117 guiInfo.AudioStreams = 0;
123 guiInfo.Subtitles = 0; 118 guiInfo.Subtitles = 0;
124 guiInfo.Tracks = 0; 119 guiInfo.Chapters = 0;
125 guiInfo.Chapters = 0; 120 guiInfo.Angles = 0;
126 guiInfo.Angles = 0; 121 break;
127 } 122 }
128 } 123 }
129 124
130 static unsigned last_redraw_time = 0; 125 static unsigned last_redraw_time = 0;
131 126
161 156
162 #ifdef CONFIG_CDDA 157 #ifdef CONFIG_CDDA
163 case ivSetCDTrack: 158 case ivSetCDTrack:
164 guiInfo.Track=iparam; 159 guiInfo.Track=iparam;
165 case evPlayCD: 160 case evPlayCD:
166 guiInfoMediumClear ( CLEAR_ALL );
167 guiInfo.StreamType=STREAMTYPE_CDDA; 161 guiInfo.StreamType=STREAMTYPE_CDDA;
168 goto play; 162 goto play;
169 #endif 163 #endif
170 #ifdef CONFIG_VCD 164 #ifdef CONFIG_VCD
171 case ivSetVCDTrack: 165 case ivSetVCDTrack:
172 guiInfo.Track=iparam; 166 guiInfo.Track=iparam;
173 case evPlayVCD: 167 case evPlayVCD:
174 guiInfoMediumClear ( CLEAR_ALL );
175 guiInfo.StreamType=STREAMTYPE_VCD; 168 guiInfo.StreamType=STREAMTYPE_VCD;
176 goto play; 169 goto play;
177 #endif 170 #endif
178 #ifdef CONFIG_DVDREAD 171 #ifdef CONFIG_DVDREAD
179 case ivSetDVDSubtitle: 172 case ivSetDVDSubtitle:
196 break; 189 break;
197 case evPlayDVD: 190 case evPlayDVD:
198 guiInfo.Chapter=1; 191 guiInfo.Chapter=1;
199 guiInfo.Angle=1; 192 guiInfo.Angle=1;
200 case ivPlayDVD: 193 case ivPlayDVD:
201 guiInfoMediumClear( CLEAR_ALL - CLEAR_DVD );
202 guiInfo.StreamType=STREAMTYPE_DVD; 194 guiInfo.StreamType=STREAMTYPE_DVD;
203 goto play; 195 goto play;
204 #endif 196 #endif
205 case evPlay: 197 case evPlay:
206 case evPlaySwitchToPause: 198 case evPlaySwitchToPause:
207 play: 199 play:
208 200
209 if ( ( msg == evPlaySwitchToPause )&&( guiInfo.Playing == GUI_PAUSE ) ) goto NoPause; 201 if ( ( msg == evPlaySwitchToPause )&&( guiInfo.Playing == GUI_PAUSE ) ) goto NoPause;
210 202
203 MediumPrepare( guiInfo.StreamType );
204
211 switch ( guiInfo.StreamType ) 205 switch ( guiInfo.StreamType )
212 { 206 {
213 case STREAMTYPE_FILE: 207 case STREAMTYPE_FILE:
214 case STREAMTYPE_STREAM: 208 case STREAMTYPE_STREAM:
215 case STREAMTYPE_PLAYLIST: 209 case STREAMTYPE_PLAYLIST:
216 guiInfoMediumClear( CLEAR_ALL - CLEAR_FILE );
217 if ( !guiInfo.Track ) 210 if ( !guiInfo.Track )
218 guiInfo.Track=1; 211 guiInfo.Track=1;
219 guiInfo.NewPlay=GUI_FILE_NEW; 212 guiInfo.NewPlay=GUI_FILE_NEW;
220 break; 213 break;
221 214
222 case STREAMTYPE_CDDA: 215 case STREAMTYPE_CDDA:
223 guiInfoMediumClear( CLEAR_ALL - CLEAR_VCD - CLEAR_FILE );
224 if ( guiInfo.Playing != GUI_PAUSE ) 216 if ( guiInfo.Playing != GUI_PAUSE )
225 { 217 {
226 if ( !guiInfo.Track ) 218 if ( !guiInfo.Track )
227 guiInfo.Track=1; 219 guiInfo.Track=1;
228 guiInfo.NewPlay=GUI_FILE_SAME; 220 guiInfo.NewPlay=GUI_FILE_SAME;
229 } 221 }
230 break; 222 break;
231 223
232 case STREAMTYPE_VCD: 224 case STREAMTYPE_VCD:
233 guiInfoMediumClear( CLEAR_ALL - CLEAR_VCD - CLEAR_FILE );
234 if ( guiInfo.Playing != GUI_PAUSE ) 225 if ( guiInfo.Playing != GUI_PAUSE )
235 { 226 {
236 if ( !guiInfo.Track ) 227 if ( !guiInfo.Track )
237 guiInfo.Track=2; 228 guiInfo.Track=2;
238 guiInfo.NewPlay=GUI_FILE_SAME; 229 guiInfo.NewPlay=GUI_FILE_SAME;
239 } 230 }
240 break; 231 break;
241 232
242 case STREAMTYPE_DVD: 233 case STREAMTYPE_DVD:
243 guiInfoMediumClear( CLEAR_ALL - CLEAR_DVD - CLEAR_FILE );
244 if ( guiInfo.Playing != GUI_PAUSE ) 234 if ( guiInfo.Playing != GUI_PAUSE )
245 { 235 {
246 if ( !guiInfo.Track ) 236 if ( !guiInfo.Track )
247 guiInfo.Track=1; 237 guiInfo.Track=1;
248 guiInfo.NewPlay=GUI_FILE_SAME; 238 guiInfo.NewPlay=GUI_FILE_SAME;