Mercurial > mplayer.hg
annotate Gui/mplayer/play.c @ 1804:76b4f7bcd087
play->pause fix ?
author | pontscho |
---|---|
date | Fri, 31 Aug 2001 18:46:45 +0000 |
parents | 82e77faa7341 |
children | d2d6a26ddb02 |
rev | line source |
---|---|
1693 | 1 |
2 #include <stdlib.h> | |
3 #include <stdio.h> | |
4 | |
5 #include <unistd.h> | |
6 #include <signal.h> | |
7 | |
8 int mplParent = 1; | |
9 | |
1765 | 10 int moviex,moviey,moviewidth,movieheight; |
1723
5e4214a7540e
GUI stuff. now seeking works, and xmga renders to video window
arpi
parents:
1693
diff
changeset
|
11 |
1693 | 12 #include "../app.h" |
13 | |
14 #include "../wm/ws.h" | |
15 #include "../wm/wskeys.h" | |
16 #include "../wm/widget.h" | |
17 | |
18 #include "../../config.h" | |
1723
5e4214a7540e
GUI stuff. now seeking works, and xmga renders to video window
arpi
parents:
1693
diff
changeset
|
19 #include "../../libvo/x11_common.h" |
1693 | 20 |
21 #include "widgets.h" | |
22 #include "./mplayer.h" | |
23 #include "psignal.h" | |
24 #include "play.h" | |
25 | |
1800 | 26 #include "../skin/skin.h" |
27 #include "../config.h" | |
28 #include "../error.h" | |
29 #include "../language.h" | |
30 | |
1693 | 31 mplCommStruct * mplShMem; |
32 char * Filename = NULL; | |
33 | |
1723
5e4214a7540e
GUI stuff. now seeking works, and xmga renders to video window
arpi
parents:
1693
diff
changeset
|
34 extern float rel_seek_secs; |
5e4214a7540e
GUI stuff. now seeking works, and xmga renders to video window
arpi
parents:
1693
diff
changeset
|
35 extern int abs_seek_pos; |
5e4214a7540e
GUI stuff. now seeking works, and xmga renders to video window
arpi
parents:
1693
diff
changeset
|
36 |
5e4214a7540e
GUI stuff. now seeking works, and xmga renders to video window
arpi
parents:
1693
diff
changeset
|
37 |
1693 | 38 void mplPlayerThread( void ) |
39 { | |
40 // mplayer( 0,NULL,NULL ); | |
41 } | |
42 | |
43 void mplFullScreen( void ) | |
44 { | |
1765 | 45 // if ( appMPlayer.subWindow.isFullScreen ) |
46 // { | |
47 // } | |
48 wsFullScreen( &appMPlayer.subWindow ); | |
1756 | 49 mplResize( 0,0,appMPlayer.subWindow.Width,appMPlayer.subWindow.Height ); |
1693 | 50 } |
51 | |
52 extern int mplSubRender; | |
53 | |
54 void mplStop() | |
55 { | |
56 if ( !mplShMem->Playing ) return; | |
57 // --- | |
1804 | 58 //printf("%%%%%% STOP \n"); |
1693 | 59 // --- |
60 mplShMem->Playing=0; | |
1796 | 61 if ( !appMPlayer.subWindow.isFullScreen ) |
62 { | |
63 wsMoveWindow( &appMPlayer.subWindow,appMPlayer.sub.x,appMPlayer.sub.y ); | |
64 wsResizeWindow( &appMPlayer.subWindow,appMPlayer.sub.width,appMPlayer.sub.height ); | |
65 } | |
1797 | 66 mplSubRender=1; |
67 wsPostRedisplay( &appMPlayer.subWindow ); | |
1693 | 68 } |
69 | |
70 void mplPlay( void ) | |
71 { | |
1804 | 72 if ( ( mplShMem->Filename[0] == 0 )&& |
73 ( mplShMem->Playing == 1 ) ) return; | |
74 if ( mplShMem->Playing == 2 ) { mplPause(); return; } | |
1693 | 75 // --- |
1804 | 76 //printf("%%%%%% PLAY \n"); |
1693 | 77 // --- |
78 mplShMem->Playing=1; | |
1791 | 79 mplSubRender=0; |
1693 | 80 } |
81 | |
82 void mplPause( void ) | |
83 { | |
1804 | 84 // --- |
85 //printf("%%%%%% PAUSE \n"); | |
1693 | 86 // --- |
1804 | 87 switch( mplShMem->Playing ) |
88 { | |
89 case 1: // playing | |
90 mplShMem->Playing=2; | |
91 btnModify( evPlaySwitchToPause,btnReleased ); | |
92 btnModify( evPauseSwitchToPlay,btnDisabled ); | |
93 mplSubRender=0; | |
94 break; | |
95 case 2: // paused | |
96 mplShMem->Playing=1; | |
97 btnModify( evPlaySwitchToPause,btnDisabled ); | |
98 btnModify( evPauseSwitchToPlay,btnReleased ); | |
99 mplSubRender=0; | |
100 break; | |
101 } | |
1693 | 102 } |
103 | |
104 void mplResize( unsigned int X,unsigned int Y,unsigned int width,unsigned int height ) | |
105 { | |
1770 | 106 vo_setwindowsize( width,height ); |
107 vo_resize=1; | |
1693 | 108 } |
109 | |
110 void mplMPlayerInit( int argc,char* argv[], char *envp[] ) | |
111 { | |
1729 | 112 #if 0 |
1693 | 113 mplShMem=shmem_alloc( ShMemSize ); |
1729 | 114 #else |
115 mplShMem=calloc( 1,ShMemSize ); | |
116 #endif | |
1693 | 117 signal( SIGTYPE,mplMainSigHandler ); |
1743 | 118 // signal( SIGCHLD,SIG_IGN ); |
1693 | 119 |
120 mplShMem->Playing=0; | |
121 mplShMem->Volume=0.0f; | |
122 mplShMem->Position=0.0f; | |
123 mplShMem->Balance=50.0f; | |
124 mplShMem->Track=0; | |
125 mplShMem->AudioType=0; | |
126 mplShMem->StreamType=0; | |
127 mplShMem->TimeSec=0; | |
128 mplShMem->LengthInSec=0; | |
129 | |
130 // --- | |
131 // --- | |
132 } | |
133 | |
134 float mplGetPosition( void ) | |
135 { // return 0.0 ... 100.0 | |
1729 | 136 return mplShMem->Position; |
1693 | 137 } |
138 | |
139 void mplRelSeek( float s ) | |
140 { // -+s | |
141 // --- | |
1743 | 142 //printf("%%%%%% RelSEEK=%5.3f \n",s); |
1693 | 143 // --- |
1723
5e4214a7540e
GUI stuff. now seeking works, and xmga renders to video window
arpi
parents:
1693
diff
changeset
|
144 rel_seek_secs=s; abs_seek_pos=0; |
1693 | 145 } |
146 | |
147 void mplAbsSeek( float s ) | |
148 { // 0.0 ... 100.0 | |
149 // --- | |
1743 | 150 //printf("%%%%%% AbsSEEK=%5.3f \n",s); |
1723
5e4214a7540e
GUI stuff. now seeking works, and xmga renders to video window
arpi
parents:
1693
diff
changeset
|
151 rel_seek_secs=0.01*s; abs_seek_pos=3; |
1693 | 152 // --- |
153 } | |
154 | |
1800 | 155 listItems tmpList; |
156 | |
157 void ChangeSkin( void ) | |
158 { | |
159 if ( strcmp( cfgSkin,gtkShMem->sb.name ) ) | |
160 { | |
161 int ret; | |
162 #ifdef DEBUG | |
163 dbprintf( 1,"[psignal] skin: %s\n",gtkShMem->sb.name ); | |
164 #endif | |
165 | |
166 mainVisible=0; | |
167 | |
168 appInitStruct( &tmpList ); | |
169 skinAppMPlayer=&tmpList; | |
170 ret=skinRead( gtkShMem->sb.name ); | |
171 | |
172 appInitStruct( &tmpList ); | |
173 skinAppMPlayer=&appMPlayer; | |
174 appInitStruct( &appMPlayer ); | |
175 if ( !ret ) strcpy( cfgSkin,gtkShMem->sb.name ); | |
176 skinRead( cfgSkin ); | |
177 | |
178 if ( ret ) | |
179 { | |
180 mainVisible=1; | |
181 return; | |
182 } | |
183 | |
184 // appCopy( &appMPlayer,&tmpList ); | |
185 // appInitStruct( &tmpList ); | |
186 // skinAppMPlayer=&appMPlayer; | |
187 // strcpy( cfgSkin,gtkShMem->sb.name ); | |
188 | |
189 if ( mplDrawBuffer ) free( mplDrawBuffer ); | |
190 if ( ( mplDrawBuffer = (unsigned char *)calloc( 1,appMPlayer.main.Bitmap.ImageSize ) ) == NULL ) | |
191 { message( False,langNEMDB ); return; } | |
192 wsResizeWindow( &appMPlayer.mainWindow,appMPlayer.main.width,appMPlayer.main.height ); | |
193 wsMoveWindow( &appMPlayer.mainWindow,appMPlayer.main.x,appMPlayer.main.y ); | |
194 wsResizeImage( &appMPlayer.mainWindow ); | |
195 wsSetShape( &appMPlayer.mainWindow,appMPlayer.main.Mask.Image ); | |
196 mainVisible=1; mplMainRender=1; wsPostRedisplay( &appMPlayer.mainWindow ); | |
197 btnModify( evSetVolume,mplShMem->Volume ); | |
198 btnModify( evSetBalance,mplShMem->Balance ); | |
199 btnModify( evSetMoviePosition,mplShMem->Position ); | |
200 | |
201 if ( appMPlayer.menuBase.Bitmap.Image ) | |
202 { | |
203 if ( mplMenuDrawBuffer ) free( mplMenuDrawBuffer ); | |
204 if ( ( mplMenuDrawBuffer = (unsigned char *)calloc( 1,appMPlayer.menuBase.Bitmap.ImageSize ) ) == NULL ) | |
205 { message( False,langNEMDB ); return; } | |
206 wsResizeWindow( &appMPlayer.menuWindow,appMPlayer.menuBase.width,appMPlayer.menuBase.height ); | |
207 wsResizeImage( &appMPlayer.menuWindow ); | |
208 } | |
209 | |
210 mplSkinChanged=1; | |
211 if ( !mplShMem->Playing ) | |
212 { | |
213 mplSkinChanged=0; | |
214 if ( appMPlayer.subWindow.isFullScreen ) wsFullScreen( &appMPlayer.subWindow ); | |
215 wsResizeWindow( &appMPlayer.subWindow,appMPlayer.sub.width,appMPlayer.sub.height ); | |
216 wsMoveWindow( &appMPlayer.subWindow,appMPlayer.sub.x,appMPlayer.sub.y ); | |
217 if ( appMPlayer.sub.Bitmap.Image ) wsResizeImage( &appMPlayer.subWindow ); | |
218 mplSubRender=1; wsPostRedisplay( &appMPlayer.subWindow ); | |
219 } | |
220 } | |
1802 | 221 mplShMem->SkinChange=0; |
1800 | 222 } |
1802 | 223 |
224 void EventHandling( void ) | |
225 { | |
226 wsHandleEvents();mplTimerHandler(0); // handle GUI timer events | |
227 if ( mplShMem->SkinChange ) ChangeSkin(); | |
228 } |