annotate gui/mplayer/play.c @ 26146:20a126aaa756

ve_vfw.c: #include aviheader.h instead of wine avifmt.h Compilation was broken after libmpdemux/muxer.h started including libmpdemux/aviheader.h. ve_vfw.c included both muxer.h and loader/wine/avifmt.h, and the latter has definitions that conflict with aviheader.h ones. Fix by removing the avifmt.h include. I did not carefully check that changing the includes doesn't break any ve_vfw.c code. However it at least fixes compilation, and if the avifmt.h versions differ in some significant way then the code is fundamentally broken anyway: ve_vfw cannot use different versions of the avi struct definitions when it also uses shared muxer.h types (those must use the standard definitions to keep the type compatible with what's used in other files).
author uau
date Thu, 06 Mar 2008 01:57:26 +0000
parents 1cb14b091f46
children 0d255d03016f
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
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
7 #include <unistd.h>
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
8 #include <signal.h>
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
9
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
10 #include "wm/ws.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
11 #include "wm/wsxdnd.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
12 #include "../config.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
13 #include "../help_mp.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
14 #include "../libvo/x11_common.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
15 #include "../libvo/video_out.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
16 #include "../input/input.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
17
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
18 #include "app.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
19
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
20 #include "wm/wskeys.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
21 #include "interface.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
22
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
23 #include "widgets.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
24 #include "gmplayer.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
25 #include "play.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
26
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
27 #include "skin/skin.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
28 #include "skin/font.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
29
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
30 #include "stream/stream.h"
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
31
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
32 extern float rel_seek_secs;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
33 extern int abs_seek_pos;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
34
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
35 int mplGotoTheNext = 1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
36
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
37 void mplFullScreen( void )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
38 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
39 if ( guiIntfStruct.NoWindow && guiIntfStruct.Playing ) return;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
40
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
41 if ( ( guiIntfStruct.Playing )&&( appMPlayer.subWindow.isFullScreen ) )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
42 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
43 appMPlayer.subWindow.OldWidth=guiIntfStruct.MovieWidth; appMPlayer.subWindow.OldHeight=guiIntfStruct.MovieHeight;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
44 switch ( appMPlayer.sub.x )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
45 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
46 case -1: appMPlayer.subWindow.OldX=( wsMaxX / 2 ) - ( appMPlayer.subWindow.OldWidth / 2 ) + wsOrgX; break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
47 case -2: appMPlayer.subWindow.OldX=wsMaxX - appMPlayer.subWindow.OldWidth + wsOrgX; break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
48 default: appMPlayer.subWindow.OldX=appMPlayer.sub.x; break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
49 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
50 switch ( appMPlayer.sub.y )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
51 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
52 case -1: appMPlayer.subWindow.OldY=( wsMaxY / 2 ) - ( appMPlayer.subWindow.OldHeight / 2 ) + wsOrgY; break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
53 case -2: appMPlayer.subWindow.OldY=wsMaxY - appMPlayer.subWindow.OldHeight + wsOrgY; break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
54 default: appMPlayer.subWindow.OldY=appMPlayer.sub.y; break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
55 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
56 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
57 if ( guiIntfStruct.Playing || gtkShowVideoWindow ) wsFullScreen( &appMPlayer.subWindow );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
58 fullscreen=vo_fs=appMPlayer.subWindow.isFullScreen;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
59 wsSetLayer( wsDisplay,appMPlayer.mainWindow.WindowID,appMPlayer.subWindow.isFullScreen );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
60 if ( appMPlayer.menuIsPresent ) wsSetLayer( wsDisplay,appMPlayer.menuWindow.WindowID,appMPlayer.subWindow.isFullScreen );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
61
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
62 if ( guiIntfStruct.Playing ) wsSetBackgroundRGB( &appMPlayer.subWindow,0,0,0 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
63 else wsSetBackgroundRGB( &appMPlayer.subWindow,appMPlayer.sub.R,appMPlayer.sub.G,appMPlayer.sub.B );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
64 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
65
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
66 void mplEnd( void )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
67 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
68 plItem * next;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
69
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
70 if ( !mplGotoTheNext && guiIntfStruct.Playing) { mplGotoTheNext=1; return; }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
71
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
72 if ( guiIntfStruct.Playing && (next=gtkSet( gtkGetNextPlItem,0,NULL )) && plLastPlayed != next )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
73 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
74 plLastPlayed=next;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
75 guiSetDF( guiIntfStruct.Filename,next->path,next->name );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
76 guiIntfStruct.StreamType=STREAMTYPE_FILE;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
77 guiIntfStruct.FilenameChanged=guiIntfStruct.NewPlay=1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
78 gfree( (void **)&guiIntfStruct.AudioFile );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
79 gfree( (void **)&guiIntfStruct.Subtitlename );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
80 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
81 else
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
82 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
83 if ( guiIntfStruct.FilenameChanged || guiIntfStruct.NewPlay ) return;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
84
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
85 guiIntfStruct.TimeSec=0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
86 guiIntfStruct.Position=0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
87 guiIntfStruct.AudioType=0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
88 guiIntfStruct.NoWindow=False;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
89
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
90 #ifdef USE_DVDREAD
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
91 guiIntfStruct.DVD.current_title=1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
92 guiIntfStruct.DVD.current_chapter=1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
93 guiIntfStruct.DVD.current_angle=1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
94 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
95
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
96 if ( !appMPlayer.subWindow.isFullScreen && gtkShowVideoWindow)
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
97 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
98 wsResizeWindow( &appMPlayer.subWindow,appMPlayer.sub.width,appMPlayer.sub.height );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
99 wsMoveWindow( &appMPlayer.subWindow,True,appMPlayer.sub.x,appMPlayer.sub.y );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
100 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
101 else wsVisibleWindow( &appMPlayer.subWindow,wsHideWindow );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
102 guiGetEvent( guiCEvent,guiSetStop );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
103 mplSubRender=1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
104 wsSetBackgroundRGB( &appMPlayer.subWindow,appMPlayer.sub.R,appMPlayer.sub.G,appMPlayer.sub.B );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
105 wsClearWindow( appMPlayer.subWindow );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
106 wsPostRedisplay( &appMPlayer.subWindow );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
107 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
108 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
109
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
110 void mplPlay( void )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
111 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
112 if ( ( !guiIntfStruct.Filename )||
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
113 ( guiIntfStruct.Filename[0] == 0 )||
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
114 ( guiIntfStruct.Playing == 1 ) ) return;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
115 if ( guiIntfStruct.Playing == 2 ) { mplPause(); return; }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
116 guiGetEvent( guiCEvent,(void *)guiSetPlay );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
117 mplSubRender=0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
118 wsSetBackgroundRGB( &appMPlayer.subWindow,0,0,0 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
119 wsClearWindow( appMPlayer.subWindow );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
120 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
121
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
122 void mplPause( void )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
123 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
124 if ( !guiIntfStruct.Playing ) return;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
125 if ( guiIntfStruct.Playing == 1 )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
126 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
127 mp_cmd_t * cmd = calloc( 1,sizeof( *cmd ) );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
128 cmd->id=MP_CMD_PAUSE;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
129 cmd->name=strdup("pause");
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
130 mp_input_queue_cmd(cmd);
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
131 } else guiIntfStruct.Playing=1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
132 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
133
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
134 void mplState( void )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
135 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
136 if ( ( guiIntfStruct.Playing == 0 )||( guiIntfStruct.Playing == 2 ) )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
137 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
138 btnModify( evPlaySwitchToPause,btnReleased );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
139 btnModify( evPauseSwitchToPlay,btnDisabled );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
140 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
141 else
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
142 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
143 btnModify( evPlaySwitchToPause,btnDisabled );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
144 btnModify( evPauseSwitchToPlay,btnReleased );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
145 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
146 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
147
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
148 float mplGetPosition( void )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
149 { // return 0.0 ... 100.0
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
150 return guiIntfStruct.Position;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
151 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
152
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
153 void mplRelSeek( float s )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
154 { // -+s
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
155 rel_seek_secs=s; abs_seek_pos=0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
156 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
157
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
158 void mplAbsSeek( float s )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
159 { // 0.0 ... 100.0
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
160 if ( guiIntfStruct.StreamType == STREAMTYPE_STREAM ) return;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
161 rel_seek_secs=0.01*s; abs_seek_pos=3;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
162 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
163
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
164 listItems tmpList;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
165
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
166 void ChangeSkin( char * name )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
167 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
168 int ret;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
169 int prev = appMPlayer.menuIsPresent;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
170 int bprev = appMPlayer.barIsPresent;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
171
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
172 mainVisible=0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
173
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
174 appInitStruct( &tmpList );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
175 skinAppMPlayer=&tmpList;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
176 fntFreeFont();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
177 ret=skinRead( name );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
178
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
179 appInitStruct( &tmpList );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
180 skinAppMPlayer=&appMPlayer;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
181 appInitStruct( &appMPlayer );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
182 if ( ret ) name=skinName;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
183 if ( skinRead( name ) )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
184 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
185 mainVisible=1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
186 return;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
187 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
188
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
189 // --- reload menu window
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
190
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
191 if ( prev && appMPlayer.menuIsPresent )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
192 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
193 if ( mplMenuDrawBuffer ) free( mplMenuDrawBuffer );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
194 if ( ( mplMenuDrawBuffer = calloc( 1,appMPlayer.menuBase.Bitmap.ImageSize ) ) == NULL )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
195 { mp_msg( MSGT_GPLAYER,MSGL_STATUS,MSGTR_NEMDB ); return; }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
196 wsResizeWindow( &appMPlayer.menuWindow,appMPlayer.menuBase.width,appMPlayer.menuBase.height );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
197 wsResizeImage( &appMPlayer.menuWindow,appMPlayer.menuBase.width,appMPlayer.menuBase.height );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
198 wsSetShape( &appMPlayer.menuWindow,appMPlayer.menuBase.Mask.Image );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
199 wsVisibleWindow( &appMPlayer.menuWindow,wsHideWindow );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
200 } else { mplMenuInit(); }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
201
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
202 // --- reload sub window
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
203 if ( appMPlayer.sub.Bitmap.Image ) wsResizeImage( &appMPlayer.subWindow,appMPlayer.sub.Bitmap.Width,appMPlayer.sub.Bitmap.Height );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
204 if ( ( !appMPlayer.subWindow.isFullScreen )&&( !guiIntfStruct.Playing ) )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
205 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
206 wsResizeWindow( &appMPlayer.subWindow,appMPlayer.sub.width,appMPlayer.sub.height );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
207 wsMoveWindow( &appMPlayer.subWindow,True,appMPlayer.sub.x,appMPlayer.sub.y );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
208 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
209 if ( appMPlayer.sub.Bitmap.Image ) wsConvert( &appMPlayer.subWindow,appMPlayer.sub.Bitmap.Image,appMPlayer.sub.Bitmap.ImageSize );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
210 if ( !guiIntfStruct.Playing )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
211 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
212 mplSubRender=1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
213 wsSetBackgroundRGB( &appMPlayer.subWindow,appMPlayer.sub.R,appMPlayer.sub.G,appMPlayer.sub.B );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
214 wsClearWindow( appMPlayer.subWindow );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
215 wsPostRedisplay( &appMPlayer.subWindow );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
216 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
217
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
218 // --- reload play bar
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
219 if ( bprev ) wsDestroyWindow( &appMPlayer.barWindow );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
220 mplPBInit();
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
221
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
222 // --- reload main window
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
223 if ( mplDrawBuffer ) free( mplDrawBuffer );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
224 if ( ( mplDrawBuffer = calloc( 1,appMPlayer.main.Bitmap.ImageSize ) ) == NULL )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
225 { mp_msg( MSGT_GPLAYER,MSGL_STATUS,MSGTR_NEMDB ); return; }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
226
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
227 wsDestroyWindow( &appMPlayer.mainWindow );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
228
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
229 wsCreateWindow( &appMPlayer.mainWindow,
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
230 appMPlayer.main.x,appMPlayer.main.y,appMPlayer.main.width,appMPlayer.main.height,
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
231 wsNoBorder,wsShowMouseCursor|wsHandleMouseButton|wsHandleMouseMove,wsShowFrame|wsMaxSize|wsHideWindow,"MPlayer" );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
232 wsCreateImage( &appMPlayer.mainWindow,appMPlayer.main.Bitmap.Width,appMPlayer.main.Bitmap.Height );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
233 wsSetShape( &appMPlayer.mainWindow,appMPlayer.main.Mask.Image );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
234 wsSetIcon( wsDisplay,appMPlayer.mainWindow.WindowID,guiIcon,guiIconMask );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
235
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
236 appMPlayer.mainWindow.ReDraw=(void *)mplMainDraw;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
237 appMPlayer.mainWindow.MouseHandler=mplMainMouseHandle;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
238 appMPlayer.mainWindow.KeyHandler=mplMainKeyHandle;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
239 appMPlayer.mainWindow.DandDHandler=mplDandDHandler;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
240
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
241 wsXDNDMakeAwareness( &appMPlayer.mainWindow );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
242 if ( !appMPlayer.mainDecoration ) wsWindowDecoration( &appMPlayer.mainWindow,0 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
243 wsVisibleWindow( &appMPlayer.mainWindow,wsShowWindow );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
244 mainVisible=1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
245 // ---
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
246
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
247 btnModify( evSetVolume,guiIntfStruct.Volume );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
248 btnModify( evSetBalance,guiIntfStruct.Balance );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
249 btnModify( evSetMoviePosition,guiIntfStruct.Position );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
250 btnModify( evFullScreen,!appMPlayer.subWindow.isFullScreen );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
251
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
252 wsSetLayer( wsDisplay,appMPlayer.mainWindow.WindowID,appMPlayer.subWindow.isFullScreen );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
253 wsSetLayer( wsDisplay,appMPlayer.menuWindow.WindowID,appMPlayer.subWindow.isFullScreen );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
254
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
255 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
256
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
257 void mplSetFileName( char * dir,char * name,int type )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
258 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
259 if ( !name ) return;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
260
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
261 if ( !dir ) guiSetFilename( guiIntfStruct.Filename,name )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
262 else guiSetDF( guiIntfStruct.Filename,dir,name );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
263
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
264 // filename=guiIntfStruct.Filename;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
265 guiIntfStruct.StreamType=type;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
266 gfree( (void **)&guiIntfStruct.AudioFile );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
267 gfree( (void **)&guiIntfStruct.Subtitlename );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
268 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
269
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
270 void mplCurr( void )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
271 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
272 plItem * curr;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
273 int stop = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
274
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
275 if ( guiIntfStruct.Playing == 2 ) return;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
276 switch ( guiIntfStruct.StreamType )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
277 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
278 #ifdef USE_DVDREAD
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
279 case STREAMTYPE_DVD:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
280 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
281 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
282 #ifdef HAVE_VCD
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
283 case STREAMTYPE_VCD:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
284 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
285 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
286 default:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
287 if ( (curr=gtkSet( gtkGetCurrPlItem,0,NULL)) )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
288 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
289 mplSetFileName( curr->path,curr->name,STREAMTYPE_FILE );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
290 mplGotoTheNext=0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
291 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
292 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
293 return;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
294 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
295 if ( stop ) mplEventHandling( evStop,0 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
296 if ( guiIntfStruct.Playing == 1 ) mplEventHandling( evPlay,0 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
297 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
298
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
299
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
300 void mplPrev( void )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
301 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
302 plItem * prev;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
303 int stop = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
304
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
305 if ( guiIntfStruct.Playing == 2 ) return;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
306 switch ( guiIntfStruct.StreamType )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
307 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
308 #ifdef USE_DVDREAD
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
309 case STREAMTYPE_DVD:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
310 if ( --guiIntfStruct.DVD.current_chapter == 0 )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
311 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
312 guiIntfStruct.DVD.current_chapter=1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
313 if ( --guiIntfStruct.DVD.current_title <= 0 ) { guiIntfStruct.DVD.current_title=1; stop=1; }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
314 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
315 guiIntfStruct.Track=guiIntfStruct.DVD.current_title;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
316 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
317 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
318 #ifdef HAVE_VCD
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
319 case STREAMTYPE_VCD:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
320 if ( --guiIntfStruct.Track == 0 ) { guiIntfStruct.Track=1; stop=1; }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
321 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
322 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
323 default:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
324 if ( (prev=gtkSet( gtkGetPrevPlItem,0,NULL)) )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
325 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
326 mplSetFileName( prev->path,prev->name,STREAMTYPE_FILE );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
327 mplGotoTheNext=0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
328 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
329 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
330 return;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
331 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
332 if ( stop ) mplEventHandling( evStop,0 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
333 if ( guiIntfStruct.Playing == 1 ) mplEventHandling( evPlay,0 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
334 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
335
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
336 void mplNext( void )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
337 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
338 int stop = 0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
339 plItem * next;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
340
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
341 if ( guiIntfStruct.Playing == 2 ) return;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
342 switch ( guiIntfStruct.StreamType )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
343 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
344 #ifdef USE_DVDREAD
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
345 case STREAMTYPE_DVD:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
346 if ( guiIntfStruct.DVD.current_chapter++ == guiIntfStruct.DVD.chapters )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
347 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
348 guiIntfStruct.DVD.current_chapter=1;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
349 if ( ++guiIntfStruct.DVD.current_title > guiIntfStruct.DVD.titles ) { guiIntfStruct.DVD.current_title=guiIntfStruct.DVD.titles; stop=1; }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
350 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
351 guiIntfStruct.Track=guiIntfStruct.DVD.current_title;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
352 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
353 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
354 #ifdef HAVE_VCD
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
355 case STREAMTYPE_VCD:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
356 if ( ++guiIntfStruct.Track > guiIntfStruct.VCDTracks ) { guiIntfStruct.Track=guiIntfStruct.VCDTracks; stop=1; }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
357 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
358 #endif
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
359 default:
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
360 if ( (next=gtkSet( gtkGetNextPlItem,0,NULL)) )
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
361 {
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
362 mplSetFileName( next->path,next->name,STREAMTYPE_FILE );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
363 mplGotoTheNext=0;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
364 break;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
365 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
366 return;
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
367 }
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
368 if ( stop ) mplEventHandling( evStop,0 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
369 if ( guiIntfStruct.Playing == 1 ) mplEventHandling( evPlay,0 );
17bf4f4b0715 Gui --> gui
diego
parents:
diff changeset
370 }