Mercurial > mplayer.hg
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; |