new gui interface, and gtk moved into mplayer process. fork ... bleh :)

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@4819 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
pontscho 2002-02-23 15:12:55 +00:00
parent 469f2d1b7e
commit c090d0da98
45 changed files with 737 additions and 1420 deletions

View File

@ -8,7 +8,6 @@
#include "../help_mp.h"
#include "app.h"
#include "error.h"
#include "wm/wskeys.h"
#include "skin/skin.h"
#include "mplayer/mplayer.h"
@ -106,10 +105,9 @@ void appInit( int argc,char* argv[], char *envp[], void* disp )
printf("SKIN dir 2: '%s'\n",skinMPlayerDir);
if ( !skinName )
{
if ( ( skinName=(char *)calloc( 1,7 ) ) == NULL ) { dbprintf( 0,"[config] Not enough memory.\n" ); exit( 1 ); }
if ( ( skinName=(char *)calloc( 1,7 ) ) == NULL ) { mp_msg( MSGT_GPLAYER,MSGL_STATUS,"[config] Not enough memory.\n" ); exit( 1 ); }
strcpy( skinName,"default" );
}
initDebug(NULL); // write messages to stderr
switch ( skinRead( skinName ) )
{
case -1: mp_msg( MSGT_GPLAYER,MSGL_ERR,MSGTR_SKIN_SKINCFG_SkinNotFound,skinName ); exit( 0 );

View File

@ -4,7 +4,6 @@
#include <string.h>
#include "bitmap.h"
#include "../error.h"
#define BMP 1
#define TGA 2
@ -25,13 +24,11 @@ int conv24to32( txSample * bf )
bf->BPP=32;
if ( ( bf->Image=malloc( bf->ImageSize ) ) == NULL )
{
#ifdef DEBUG
dbprintf( 4,"[bitmap] Not enough memory for image.\n" );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[bitmap] Not enough memory for image.\n" );
return 1;
}
memset( bf->Image,0,bf->ImageSize );
for ( c=0,i=0;i < bf->Width * bf->Height * 3; )
for ( c=0,i=0;i < (int)(bf->Width * bf->Height * 3); )
{
bf->Image[c++]=tmpImage[i++];
bf->Image[c++]=tmpImage[i++];
@ -47,7 +44,7 @@ void bgr2rgb( txSample * bf )
unsigned char c;
int i;
for ( i=0;i < bf->ImageSize;i+=4 )
for ( i=0;i < (int)bf->ImageSize;i+=4 )
{
c=bf->Image[i];
bf->Image[i]=bf->Image[i+2];
@ -58,8 +55,7 @@ void bgr2rgb( txSample * bf )
void Normalize( txSample * bf )
{
int i;
for ( i=0;i < bf->ImageSize;i+=4 ) bf->Image[i+3]=0;
for ( i=0;i < (int)bf->ImageSize;i+=4 ) bf->Image[i+3]=0;
}
unsigned char tmp[512];
@ -149,23 +145,17 @@ int bpRead( char * fname, txSample * bf )
bgr=1;
break;
case TGAPACKED:
#ifdef DEBUG
dbprintf( 4,"[bitmap] sorry, packed TGA not supported.\n" );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[bitmap] sorry, packed TGA not supported.\n" );
return -6;
default:
{
#ifdef DEBUG
dbprintf( 4,"[bitmap] Unknown file type ( %s ).\n",fname );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[bitmap] Unknown file type ( %s ).\n",fname );
return -7;
}
}
if ( bf->BPP < 24 )
{
#ifdef DEBUG
dbprintf( 4,"[bitmap] sorry, 16 or less bitmaps not supported.\n" );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[bitmap] sorry, 16 or less bitmaps not supported.\n" );
return -1;
}
if ( conv24to32( bf ) ) return -8;
@ -180,15 +170,15 @@ void Convert32to1( txSample * in,txSample * out,int adaptivlimit )
out->Height=in->Height;
out->BPP=1;
out->ImageSize=out->Width * out->Height / 8;
dbprintf( 4,"[c1to32] imagesize: %d\n",out->ImageSize );
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[c1to32] imagesize: %d\n",out->ImageSize );
out->Image=(char *)calloc( 1,out->ImageSize );
if ( out->Image == NULL ) dbprintf( 4,"nem van ram baze\n" );
if ( out->Image == NULL ) mp_msg( MSGT_GPLAYER,MSGL_STATUS,"nem van ram baze\n" );
{
int i,b,c=0; unsigned long * buf = NULL; unsigned char tmp = 0; int nothaveshape = 1;
buf=(unsigned long *)in->Image;
for ( b=0,i=0;i < out->Width * out->Height;i++ )
for ( b=0,i=0;i < (int)(out->Width * out->Height);i++ )
{
if ( buf[i] != adaptivlimit ) tmp=( tmp >> 1 )|128;
if ( (int)buf[i] != adaptivlimit ) tmp=( tmp >> 1 )|128;
else { tmp=tmp >> 1; buf[i]=nothaveshape=0; }
if ( b++ == 7 ) { out->Image[c++]=tmp; tmp=b=0; }
}
@ -205,12 +195,12 @@ void Convert1to32( txSample * in,txSample * out )
out->BPP=32;
out->ImageSize=out->Width * out->Height * 4;
out->Image=(char *)calloc( 1,out->ImageSize );
dbprintf( 4,"[c32to1] imagesize: %d\n",out->ImageSize );
if ( out->Image == NULL ) dbprintf( 4,"nem van ram baze\n" );
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[c32to1] imagesize: %d\n",out->ImageSize );
if ( (int)out->Image == NULL ) mp_msg( MSGT_GPLAYER,MSGL_STATUS,"nem van ram baze\n" );
{
int i,b,c=0; unsigned long * buf = NULL; unsigned char tmp = 0;
buf=(unsigned long *)out->Image;
for ( c=0,i=0;i < in->Width * in->Height / 8;i++ )
for ( c=0,i=0;i < (int)(in->Width * in->Height / 8);i++ )
{
tmp=in->Image[i];
for ( b=0;b<8;b++ )

View File

@ -14,6 +14,7 @@ typedef struct _txSample
#include "tga/tga.h"
#include "bmp/bmp.h"
#include "png/png.h"
#include "../../mp_msg.h"
extern int bpRead( char * fname, txSample * bf );
extern int conv24to32( txSample * bf );

View File

@ -4,7 +4,6 @@
#include <string.h>
#include "bitmap.h"
#include "../error.h"
#define BMP 1
#define TGA 2
@ -25,13 +24,11 @@ int conv24to32( txSample * bf )
bf->BPP=32;
if ( ( bf->Image=malloc( bf->ImageSize ) ) == NULL )
{
#ifdef DEBUG
dbprintf( 4,"[bitmap] Not enough memory for image.\n" );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[bitmap] Not enough memory for image.\n" );
return 1;
}
memset( bf->Image,0,bf->ImageSize );
for ( c=0,i=0;i < bf->Width * bf->Height * 3; )
for ( c=0,i=0;i < (int)(bf->Width * bf->Height * 3); )
{
bf->Image[c++]=tmpImage[i++];
bf->Image[c++]=tmpImage[i++];
@ -47,7 +44,7 @@ void bgr2rgb( txSample * bf )
unsigned char c;
int i;
for ( i=0;i < bf->ImageSize;i+=4 )
for ( i=0;i < (int)bf->ImageSize;i+=4 )
{
c=bf->Image[i];
bf->Image[i]=bf->Image[i+2];
@ -58,8 +55,7 @@ void bgr2rgb( txSample * bf )
void Normalize( txSample * bf )
{
int i;
for ( i=0;i < bf->ImageSize;i+=4 ) bf->Image[i+3]=0;
for ( i=0;i < (int)bf->ImageSize;i+=4 ) bf->Image[i+3]=0;
}
unsigned char tmp[512];
@ -149,23 +145,17 @@ int bpRead( char * fname, txSample * bf )
bgr=1;
break;
case TGAPACKED:
#ifdef DEBUG
dbprintf( 4,"[bitmap] sorry, packed TGA not supported.\n" );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[bitmap] sorry, packed TGA not supported.\n" );
return -6;
default:
{
#ifdef DEBUG
dbprintf( 4,"[bitmap] Unknown file type ( %s ).\n",fname );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[bitmap] Unknown file type ( %s ).\n",fname );
return -7;
}
}
if ( bf->BPP < 24 )
{
#ifdef DEBUG
dbprintf( 4,"[bitmap] sorry, 16 or less bitmaps not supported.\n" );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[bitmap] sorry, 16 or less bitmaps not supported.\n" );
return -1;
}
if ( conv24to32( bf ) ) return -8;
@ -180,15 +170,15 @@ void Convert32to1( txSample * in,txSample * out,int adaptivlimit )
out->Height=in->Height;
out->BPP=1;
out->ImageSize=out->Width * out->Height / 8;
dbprintf( 4,"[c1to32] imagesize: %d\n",out->ImageSize );
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[c1to32] imagesize: %d\n",out->ImageSize );
out->Image=(char *)calloc( 1,out->ImageSize );
if ( out->Image == NULL ) dbprintf( 4,"nem van ram baze\n" );
if ( out->Image == NULL ) mp_msg( MSGT_GPLAYER,MSGL_STATUS,"nem van ram baze\n" );
{
int i,b,c=0; unsigned long * buf = NULL; unsigned char tmp = 0; int nothaveshape = 1;
buf=(unsigned long *)in->Image;
for ( b=0,i=0;i < out->Width * out->Height;i++ )
for ( b=0,i=0;i < (int)(out->Width * out->Height);i++ )
{
if ( buf[i] != adaptivlimit ) tmp=( tmp >> 1 )|128;
if ( (int)buf[i] != adaptivlimit ) tmp=( tmp >> 1 )|128;
else { tmp=tmp >> 1; buf[i]=nothaveshape=0; }
if ( b++ == 7 ) { out->Image[c++]=tmp; tmp=b=0; }
}
@ -205,12 +195,12 @@ void Convert1to32( txSample * in,txSample * out )
out->BPP=32;
out->ImageSize=out->Width * out->Height * 4;
out->Image=(char *)calloc( 1,out->ImageSize );
dbprintf( 4,"[c32to1] imagesize: %d\n",out->ImageSize );
if ( out->Image == NULL ) dbprintf( 4,"nem van ram baze\n" );
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[c32to1] imagesize: %d\n",out->ImageSize );
if ( (int)out->Image == NULL ) mp_msg( MSGT_GPLAYER,MSGL_STATUS,"nem van ram baze\n" );
{
int i,b,c=0; unsigned long * buf = NULL; unsigned char tmp = 0;
buf=(unsigned long *)out->Image;
for ( c=0,i=0;i < in->Width * in->Height / 8;i++ )
for ( c=0,i=0;i < (int)(in->Width * in->Height / 8);i++ )
{
tmp=in->Image[i];
for ( b=0;b<8;b++ )

View File

@ -14,6 +14,7 @@ typedef struct _txSample
#include "tga/tga.h"
#include "bmp/bmp.h"
#include "png/png.h"
#include "../../mp_msg.h"
extern int bpRead( char * fname, txSample * bf );
extern int conv24to32( txSample * bf );

View File

@ -27,7 +27,6 @@
#include "bmp.h"
#include "../bitmap.h"
#include "../../error.h"
int bmpRead( unsigned char * fname,txSample * bF )
{
@ -40,16 +39,12 @@ int bmpRead( unsigned char * fname,txSample * bF )
if ( (BMP=fopen( fname,"rt" )) == NULL )
{
#ifdef DEBUG
dbprintf( 4,"[bmp] File not found ( %s ).\n",fname );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[bmp] File not found ( %s ).\n",fname );
return 1;
}
if ( (i=fread( bmpHeader,54,1,BMP )) != 1 )
{
#ifdef DEBUG
dbprintf( 4,"[bmp] Header read error ( %s ).\n",fname );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[bmp] Header read error ( %s ).\n",fname );
return 2;
}
// memcpy( &bF->Size,&bmpHeader[2],4 );
@ -61,31 +56,23 @@ int bmpRead( unsigned char * fname,txSample * bF )
if ( bF->BPP < 24 )
{
#ifdef DEBUG
dbprintf( 4,"[bmp] Sorry, this loader not supported 16 bit or less ...\n" );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[bmp] Sorry, this loader not supported 16 bit or less ...\n" );
return 3;
}
#ifdef DEBUG
dbprintf( 4,"[bmp] filename: %s\n",fname );
dbprintf( 4,"[bmp] size: %dx%d bits: %d\n",bF->Width,bF->Height,bF->BPP );
dbprintf( 4,"[bmp] imagesize: %lu\n",bF->ImageSize );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[bmp] filename: %s\n",fname );
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[bmp] size: %dx%d bits: %d\n",bF->Width,bF->Height,bF->BPP );
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[bmp] imagesize: %lu\n",bF->ImageSize );
if ( ( bF->Image=malloc( bF->ImageSize ) ) == NULL )
{
#ifdef DEBUG
dbprintf( 4,"[bmp] Not enough memory for image buffer.\n" );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[bmp] Not enough memory for image buffer.\n" );
return 4;
}
if ( (i=fread( bF->Image,bF->ImageSize,1,BMP )) != 1 )
{
#ifdef DEBUG
dbprintf( 4,"[bmp] Image read error.\n" );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[bmp] Image read error.\n" );
return 5;
}
@ -94,9 +81,7 @@ int bmpRead( unsigned char * fname,txSample * bF )
linesize=bF->Width * ( bF->BPP / 8 );
if ( (line=malloc( linesize )) == NULL )
{
#ifdef DEBUG
dbprintf( 4,"[bmp] Not enough memory for flipping.\n" );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[bmp] Not enough memory for flipping.\n" );
return 6;
}

View File

@ -2,7 +2,6 @@
#include <stdlib.h>
#include "./png.h"
#include "../../error.h"
#include <png.h>
typedef struct
@ -106,9 +105,7 @@ int pngRead( unsigned char * fname,txSample * bf )
if ( pngLoadRaw( fname,&raw ) )
{
#ifdef DEBUG
dbprintf( 4,"[png] file read error ( %s ).\n",fname );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[png] file read error ( %s ).\n",fname );
return 1;
}
bf->Width=raw.Width;
@ -117,17 +114,13 @@ int pngRead( unsigned char * fname,txSample * bf )
bf->ImageSize=bf->Width * bf->Height * ( bf->BPP / 8 );
if ( ( bf->Image=malloc( bf->ImageSize ) ) == NULL )
{
#ifdef DEBUG
dbprintf( 4,"[png] Not enough memory for image buffer.\n" );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[png] Not enough memory for image buffer.\n" );
return 2;
}
memcpy( bf->Image,raw.Data,bf->ImageSize );
free( raw.Data );
#ifdef DEBUG
dbprintf( 4,"[png] filename: %s.\n",fname );
dbprintf( 4,"[png] size: %dx%d bits: %d\n",bf->Width,bf->Height,bf->BPP );
dbprintf( 4,"[png] imagesize: %lu\n",bf->ImageSize );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[png] filename: %s.\n",fname );
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[png] size: %dx%d bits: %d\n",bf->Width,bf->Height,bf->BPP );
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[png] imagesize: %lu\n",bf->ImageSize );
return 0;
}

View File

@ -4,7 +4,6 @@
#include <stdlib.h>
#include "tga.h"
#include "../../error.h"
int tgaRead( char * filename,txSample * bf )
{
@ -20,23 +19,17 @@ int tgaRead( char * filename,txSample * bf )
if ( !strstr( tmp,".tga" ) ) strcat( tmp,".tga" );
if ( (BMP=fopen( tmp,"rb" )) == NULL )
{
#ifdef DEBUG
dbprintf( 4,"[tga] File not found ( %s ).\n",tmp );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[tga] File not found ( %s ).\n",tmp );
return 1;
}
if ( (i=fread( &tgaHeader,sizeof( tgaHeader ),1,BMP )) != 1 )
{
#ifdef DEBUG
dbprintf( 4,"[tga] Header read error ( %s ).\n",tmp );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[tga] Header read error ( %s ).\n",tmp );
return 2;
}
if ( tgaHeader.depth < 24 )
{
#ifdef DEBUG
dbprintf( 4,"[tga] Sorry, this loader not supported 16 bit or less ...\n" );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[tga] Sorry, this loader not supported 16 bit or less ...\n" );
return 3;
}
bf->Width=tgaHeader.sx;
@ -46,9 +39,7 @@ int tgaRead( char * filename,txSample * bf )
if ( ( bf->Image=malloc( bf->ImageSize ) ) == NULL )
{
#ifdef DEBUG
dbprintf( 4,"[tga] Not enough memory for image buffer.\n" );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[tga] Not enough memory for image buffer.\n" );
return 4;
}
@ -57,35 +48,29 @@ int tgaRead( char * filename,txSample * bf )
{
if ( ( comment=malloc( tgaHeader.tmp[0] + 1 ) ) == NULL )
{
#ifdef DEBUG
dbprintf( 4,"[tga] Not enough memory for comment string.\n" );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[tga] Not enough memory for comment string.\n" );
return 5;
}
memset( comment,0,tgaHeader.tmp[0] + 1 );
if ( fread( comment,tgaHeader.tmp[0],1,BMP ) != 1 )
{
#ifdef DEBUG
dbprintf( 4,"[tga] Comment read error.\n" );
#endif
return 6;
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[tga] Comment read error.\n" );
return 6;
}
}
#ifdef DEBUG
dbprintf( 4,"[tga] filename ( read ): %s\n",tmp );
dbprintf( 4,"[tga] size: %dx%d bits: %d\n",bf->Width,bf->Height,bf->BPP );
dbprintf( 4,"[tga] imagesize: %lu\n",bf->ImageSize );
if ( comment ) dbprintf( 4,"[tga] comment: %s\n",comment );
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[tga] filename ( read ): %s\n",tmp );
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[tga] size: %dx%d bits: %d\n",bf->Width,bf->Height,bf->BPP );
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[tga] imagesize: %lu\n",bf->ImageSize );
#ifdef MP_DEBUG
if ( comment ) mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[tga] comment: %s\n",comment );
#endif
if ( comment ) free( comment );
if ( fread( bf->Image,bf->ImageSize,1,BMP ) != 1 )
{
#ifdef DEBUG
dbprintf( 4,"[tga] Image read error.\n" );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[tga] Image read error.\n" );
return 7;
}
@ -96,9 +81,7 @@ int tgaRead( char * filename,txSample * bf )
linesize=bf->Width * ( bf->BPP / 8 );
if ( (line=malloc( linesize )) == NULL )
{
#ifdef DEBUG
dbprintf( 4,"[tga] Not enough memory for flipping.\n" );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[tga] Not enough memory for flipping.\n" );
return 8;
}
@ -129,7 +112,7 @@ void tgaWriteTexture( char * filename,txSample * bf )
if ( !strstr( tmp,".tga" ) ) strcat( tmp,".tga" );
if ( ( BMP=fopen( tmp,"wb+" ) ) == NULL )
{
dbprintf( 0,"[tga] File not open ( %s ).\n",tmp );
mp_msg( MSGT_GPLAYER,MSGL_STATUS,"[tga] File not open ( %s ).\n",tmp );
exit( 0 );
}
memset( &tgaHeader,0,sizeof( tgaHeader ) );
@ -141,21 +124,19 @@ void tgaWriteTexture( char * filename,txSample * bf )
if ( bf->BPP != 8 ) tgaHeader.tmp[2]=2;
else tgaHeader.tmp[2]=3;
#ifdef DEBUG
dbprintf( 4,"\n[tga] filename ( write ): %s\n",tmp );
dbprintf( 4,"[tga] size: %dx%d\n",bf->Width,bf->Height );
dbprintf( 4,"[tga] bits: %d\n",bf->BPP );
dbprintf( 4,"[tga] imagesize: %lu\n",bf->ImageSize );
dbprintf( 4,"[tga] comment: %s\n",comment );
dbprintf( 4,"\n" );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"\n[tga] filename ( write ): %s\n",tmp );
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[tga] size: %dx%d\n",bf->Width,bf->Height );
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[tga] bits: %d\n",bf->BPP );
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[tga] imagesize: %lu\n",bf->ImageSize );
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[tga] comment: %s\n",comment );
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"\n" );
if ( tgaHeader.ctmp == 0 )
{
linesize=bf->Width * ( bf->BPP / 8 );
if ( (line=malloc( linesize )) == NULL )
{
dbprintf( 0,"[tga] Not enough memory for flipping.\n" );
mp_msg( MSGT_GPLAYER,MSGL_STATUS,"[tga] Not enough memory for flipping.\n" );
exit( 0 );
}

View File

@ -1,61 +0,0 @@
#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
#include "error.h"
int debug_level = 2;
FILE * debug_file;
int debug_stderr = 0;
void defaultErrorHandler( int critical,const char * format, ... )
{
char * p;
va_list ap;
if ( (p=(char *)malloc( 512 ) ) == NULL ) return;
va_start( ap,format );
vsnprintf( p,512,format,ap );
va_end( ap );
fprintf( stderr,"%s",p );
free( p );
if ( critical ) exit( 1 );
}
void defaultDebugHandler( int critical,const char * format, ... )
{
char * p;
va_list ap;
if ( critical >= debug_level ) return;
if ( (p=(char *)malloc( 512 ) ) == NULL ) return;
va_start( ap,format );
vsnprintf( p,512,format,ap );
va_end( ap );
fprintf( debug_file,"%s",p );
free( p );
}
errorTHandler message = defaultErrorHandler;
errorTHandler dbprintf = defaultDebugHandler;
void initDebug( char * name )
{
if ( name )
{
if ( ( debug_file=fopen( name,"wt+" ) ) != NULL )
{
debug_stderr=0;
return;
}
}
debug_file=stderr;
debug_stderr=1;
}
void doneDebug( void )
{
if ( !debug_stderr ) fclose( debug_file );
debug_file=stderr;
debug_stderr=1;
}

View File

@ -1,22 +0,0 @@
#ifndef _MPLAYER_ERROR_HANDLER
#define _MPLAYER_ERROR_HANDLER
#define True 1
#define False 0
// 0 - standard message
// 1 - detto
// 2 - events
// 3 - skin reader messages
// 4 - bitmap reader messages
// 5 - signal handling messages
// 6 - gtk messages
typedef void (*errorTHandler)( int critical,const char * format, ... );
extern errorTHandler message;
extern errorTHandler dbprintf;
#endif

View File

@ -47,7 +47,7 @@
#define evHelp 37
#define evLoadSubtitle 38
#define evPlayDVD 39
#define evPlayDVD 39
#define evExit 1000

View File

@ -7,9 +7,9 @@ GTKSRCS = $(MPLAYERDIR)gtk/menu.c $(MPLAYERDIR)gtk/mb.c $(MPLAYERDIR)gtk/about.c
$(MPLAYERDIR)gtk/opts.c
MPLAYERSRCS = $(MPLAYERDIR)mplayer.c $(MPLAYERDIR)widgets.c $(MPLAYERDIR)play.c \
$(MPLAYERDIR)psignal.c $(GTKSRCS)
$(GTKSRCS)
MPLAYEROBJS = $(MPLAYERSRCS:.c=.o)
SRCS = $(SKINSRC) $(BITMAPSRCS) wm/ws.c wm/wsconv.c app.c events.c timer.c error.c interface.c
SRCS = $(SKINSRC) $(BITMAPSRCS) wm/ws.c wm/wsconv.c app.c events.c interface.c
OBJS = $(SRCS:.c=.o)

View File

@ -1,9 +1,31 @@
#include <string.h>
#include "ws.h"
#include "mplayer/play.h"
#include "interface.h"
#include "../mplayer.h"
#include "mplayer/widgets.h"
#include "mplayer/mplayer.h"
#include "app.h"
#include "../libvo/x11_common.h"
guiInterface_t guiIntfStruct;
void guiInit( int argc,char* argv[], char *envp[] )
{
memset( &guiIntfStruct,0,sizeof( guiIntfStruct ) );
appInit( argc,argv,envp,(void*)mDisplay );
}
void guiDone( void )
{
mp_msg( MSGT_GPLAYER,MSGL_V,"[mplayer] exit.\n" );
mplStop();
gtkDone();
wsXDone();
}
void guiGetEvent( int type,char * arg )
{
@ -11,15 +33,16 @@ void guiGetEvent( int type,char * arg )
{
case guiXEvent:
wsEvents( wsDisplay,(XEvent *)arg,NULL );
break;
gtkEventHandling();
break;
case guiCEvent:
break;
break;
}
}
void guiEventHandling( void )
{
if ( use_gui && !mplShMem->Playing ) wsHandleEvents();
mplTimerHandler(0); // handle GUI timer events
if ( mplShMem->SkinChange ) { ChangeSkin(); mplShMem->SkinChange=0; }
if ( use_gui && !guiIntfStruct.Playing ) wsHandleEvents();
gtkEventHandling();
mplTimerHandler(); // handle GUI timer events
}

View File

@ -2,13 +2,112 @@
#ifndef _INTERFACE_H
#define _INTERFACE_H
#include "../config.h"
#include "mplayer/play.h"
#include "../mplayer.h"
#ifdef USE_DVDREAD
#include "../libmpdemux/stream.h"
#endif
typedef struct
{
int x;
int y;
int width;
int height;
} guiResizeStruct;
typedef struct
{
int signal;
char module[512];
} guiUnknowErrorStruct;
typedef struct
{
int seek;
int format;
int width;
int height;
char codecdll[128];
} guiVideoStruct;
#ifdef USE_DVDREAD
typedef struct
{
int titles;
int chapters;
int angles;
int current_chapter;
int current_title;
int current_angle;
int nr_of_audio_channels;
stream_language_t audio_streams[32];
int nr_of_subtitles;
stream_language_t subtitles[32];
} guiDVDStruct;
#endif
typedef struct
{
int message;
guiResizeStruct resize;
guiVideoStruct videodata;
guiUnknowErrorStruct error;
#ifdef USE_DVDREAD
guiDVDStruct DVD;
int DVDChanged;
#endif
int Playing;
float Position;
int MovieWidth;
int MovieHeight;
float Volume;
int VolumeChanged;
float Balance;
int Mute;
int Track;
int AudioType;
int StreamType;
int TimeSec;
int LengthInSec;
int FrameDrop;
char * Filename;
int FilenameChanged;
char * Subtitlename;
int SubtitleChanged;
char * Othername;
int OtherChanged;
int SkinChange;
} guiInterface_t;
extern guiInterface_t guiIntfStruct;
#define guiXEvent 0
#define guiCEvent 1
extern void guiInit( int argc,char* argv[], char *envp[] );
extern void guiGetEvent( int type,char * arg );
extern void guiEventHandling( void );
#define guiSetFilename( s,n ) \
{ if ( s ) free( s ); s=NULL; s=strdup( n ); }
#define guiSetDF( s,d,n ) \
{ \
if ( s ) free( s ); s=NULL; \
s=malloc( strlen( d ) + strlen( n ) + 5 ); \
sprintf( s,"%s/%s",d,n ); \
}
#endif

View File

@ -1,45 +0,0 @@
// --- labels ---
char * langAbout = "About";
char * langFileSelect = "Select file ...";
char * langMessageBox = "MessageBox";
char * langPlayList = "PlayList";
char * langSkinBrowser = "Skin Browser";
// --- buttons ---
char * langOk = "Ok";
char * langCancel = "Cancel";
char * langAdd = "Add";
char * langRemove = "Remove";
// --- error messages ---
char * langNEMDB = "Sorry, not enough memory for draw buffer.";
char * langNEMFMR = "Sorry, not enough memory for menu rendering.";
char * langNEMFMM = "Sorry, not enough memory for main window shape mask.";
#if 0
char * langLIRCSNW = "LIRC support not working. Disabled.";
char * langAudioDriverSelectNotSupported = "Your audio driver DOES NOT support select(). Recompile mplayer with #undef HAVE_AUDIO_SELECT in config.h !";
char * langNotSupportedFileFormat = "Sorry, this file format not recognized/supported. If this file is an AVI, ASF or MPEG stream, please contact the author!";
char * langCodecConfNotFound = "The codecs.conf config file not found. Please copy/link DOCS/codecs.conf to ~/.mplayer/codecs.conf.";
char * langErrorProcessingDVDKey = "Error processing DVD KEY.";
char * langErrorInDVDAuth = "Error in DVD authentication.";
char * langAVIMissing = "AVI_NI: missing video stream!? contact the author, it may be a bug. :(";
char * langAVIMissingVideoStream = "AVI: missing video stream!? contact the author, it may be a bug. :(";
char * langASFMissingVideoStream = "ASF: missing video stream!? contact the author, it may be a bug. :(";
char * langMPEGEOFNotFound = "MPEG: FATAL: EOF while searching for sequence header.";
char * langCannotAllocateSharedMem = "Cannot allocate shared memory. ( Not enough memory ? )";
char * langMPEGCannotReadSeqHeader = "MPEG: FATAL: Cannot read sequence header!";
char * langMPEGBadSeqHeader = "MPEG: Bad sequence header!";
char * langMPEGCannotReadSeqHeaderExt = "MPEG: FATAL: Cannot read sequence header extension!";
char * langMPEGBadSeqHeaderExt = "MPEG: Bad sequence header extension!";
char * langCantFindCodec = "Can't find codec for video format";
char * langSelectedVideoOutIncompTheCodec = "Sorry, selected video_out device is incompatible with this codec.";
char * langMPCompWithoutDSSupport = "MPlayer was compiled WITHOUT directshow support!";
char * langDSCodecNotFound = "ERROR: Couldn't open required DirectShow codec: %s. " \
"Maybe you forget to upgrade your win32 codecs?? It's time to download the new " \
"package from: ftp://thot.banki.hu/esp-team/linux/MPlayer/w32codec.zip! " \
"Or you should disable DShow support.";
char * langCantInitVideoDriver = "FATAL: Cannot initialize video driver!";
char * langUnknowError = "Unknow error. Please contact the developer team.";
#endif

View File

@ -1,7 +0,0 @@
#ifndef __MPLAYER_LANG
#define __MPLAYER_LANG
#include "../help_mp.h"
#endif

View File

@ -10,7 +10,6 @@
void ab_Ok_released( GtkButton * button,gpointer user_data )
{
gtk_widget_hide( AboutBox );
gtkVisibleAboutBox=0;
}
GtkWidget * create_About( void )
@ -157,7 +156,7 @@ GtkWidget * create_About( void )
"Homepage:\n" \
" Design: Chass\n" \
" Contents: Gabucino\n" \
" LGB\n\n" \
" LGB\n\n" \
"English documentation:\n" \
" tech-*.txt: A'rpi\n" \
" all the others: Gabucino\n\n" \

View File

@ -7,14 +7,13 @@
#include <unistd.h>
#include "./mplayer.h"
#include "psignal.h"
#include "../error.h"
#include "pixmaps/up.xpm"
#include "pixmaps/dir.xpm"
#include "pixmaps/file.xpm"
#include "../../events.h"
#include "../../interface.h"
#include "../../../config.h"
#include "../../../help_mp.h"
@ -35,30 +34,30 @@ unsigned char * fsThatDir = ".";
gchar fsFilter[8] = "*";
int fsPressed = 0;
int fsMessage = -1;
int fsType = 0;
int fsMessage = -1;
int fsType = 0;
#define fsNumberOfVideoFilterNames 6
char * fsVideoFilterNames[fsNumberOfVideoFilterNames+1][2] =
char * fsVideoFilterNames[fsNumberOfVideoFilterNames+1][2] =
{ { "MPEG files ( *.mpg )", "*.mpg" },
{ "VOB files ( *.vob )", "*.vob" },
{ "VOB files ( *.vob )", "*.vob" },
{ "AVI files ( *.avi )", "*.avi" },
{ "QT files ( *.mov )", "*.mov" },
{ "ASF files ( *.asf )", "*.asf" },
{ "VIVO files ( *.viv )", "*.viv" },
{ "QT files ( *.mov )", "*.mov" },
{ "ASF files ( *.asf )", "*.asf" },
{ "VIVO files ( *.viv )", "*.viv" },
{ "All files ( * )", "*" } };
#define fsNumberOfSubtitleFilterNames 8
char * fsSubtitleFilterNames[fsNumberOfSubtitleFilterNames+1][2] =
{ { "UTF ( *.utf )", "*.utf" },
{ "SUB ( *.sub )", "*.sub" },
{ "SRT ( *.srt )", "*.str" },
{ "SUB ( *.sub )", "*.sub" },
{ "SRT ( *.srt )", "*.str" },
{ "SMI ( *.smi )", "*.smi" },
{ "RT ( *.rt )", "*.rt" },
{ "TXT ( *.txt )", "*.txt" },
{ "SSA ( *.ssa )", "*.ssa" },
{ "AQT ( *.aqt )", "*.aqt" },
{ "All files ( * )", "*" } };
{ "All files ( * )", "*" } };
#define fsNumberOfOtherFilterNames 0
char * fsOtherFilterNames[fsNumberOfOtherFilterNames+1][2] =
@ -99,7 +98,7 @@ void CheckDir( GtkWidget * list,char * directory )
gtk_widget_hide( list );
gtk_clist_clear( GTK_CLIST( list ) );
str[0][0]=NULL;
pixmap=dpixmap; mask=dmask;
str[0][0]=NULL; str[0][1]=(gchar *)malloc( 3 );
strcpy( str[0][1],"." ); gtk_clist_append( GTK_CLIST( list ),str[0] ); gtk_clist_set_pixmap( GTK_CLIST( list ),0,0,pixmap,mask );
@ -121,9 +120,9 @@ void CheckDir( GtkWidget * list,char * directory )
free( str[0][1] );
}
globfree( &gg );
glob( fsFilter,0,NULL,&gg );
#if 0
if ( !strcmp( fsFilter,"*" ) )
{
@ -132,7 +131,7 @@ void CheckDir( GtkWidget * list,char * directory )
for( i=0;i<strlen( f );i++ )
if ( ( f[i] >= 'A' )&&( f[i] <= 'Z' ) ) f[i]+=32;
glob( f,GLOB_APPEND,NULL,&gg );
for( i=0;i<strlen( f );i++ )
if ( ( f[i] >= 'a' )&&( f[i] <= 'z' ) ) f[i]-=32;
glob( f,GLOB_APPEND,NULL,&gg );
@ -163,13 +162,13 @@ void CheckDir( GtkWidget * list,char * directory )
void ShowFileSelect( int type )
{
int i;
if ( gtkVisibleFileSelect ) gtk_widget_hide( FileSelect );
gtk_widget_hide( FileSelect );
fsType=type;
switch ( type )
{
case fsVideoSelector:
fsMessage=evFileLoaded;
gtk_window_set_title( GTK_WINDOW( fsFileSelect ),MSGTR_FileSelect );
gtk_window_set_title( GTK_WINDOW( fsFileSelect ),MSGTR_FileSelect );
fsList_items=NULL;
for( i=0;i<fsNumberOfVideoFilterNames + 1;i++ )
fsList_items=g_list_append( fsList_items,fsVideoFilterNames[i][0] );
@ -178,7 +177,7 @@ void ShowFileSelect( int type )
gtk_entry_set_text( GTK_ENTRY( fsFilterCombo ),fsVideoFilterNames[fsNumberOfVideoFilterNames][0] );
break;
case fsSubtitleSelector:
gtk_window_set_title( GTK_WINDOW( fsFileSelect ),MSGTR_SubtitleSelect );
gtk_window_set_title( GTK_WINDOW( fsFileSelect ),MSGTR_SubtitleSelect );
fsList_items=NULL;
for( i=0;i<fsNumberOfSubtitleFilterNames + 1;i++ )
fsList_items=g_list_append( fsList_items,fsSubtitleFilterNames[i][0] );
@ -187,7 +186,7 @@ void ShowFileSelect( int type )
gtk_entry_set_text( GTK_ENTRY( fsFilterCombo ),fsSubtitleFilterNames[fsNumberOfSubtitleFilterNames][0] );
break;
case fsOtherSelector:
gtk_window_set_title( GTK_WINDOW( fsFileSelect ),MSGTR_OtherSelect );
gtk_window_set_title( GTK_WINDOW( fsFileSelect ),MSGTR_OtherSelect );
fsList_items=NULL;
for( i=0;i<fsNumberOfSubtitleFilterNames + 1;i++ )
fsList_items=g_list_append( fsList_items,fsOtherFilterNames[i][0] );
@ -197,15 +196,11 @@ void ShowFileSelect( int type )
break;
}
gtk_widget_show( FileSelect );
gtkVisibleFileSelect=1;
}
void HideFileSelect( void )
{
gtk_widget_hide( fsFileSelect );
gtkVisibleFileSelect=0;
gtkShMem->vs.window=evLoad;
gtkSendMessage( evHideWindow );
}
void fs_fsFileSelect_destroy( GtkObject * object,gpointer user_data )
@ -223,35 +218,35 @@ void fs_fsFilterCombo_changed( GtkEditable * editable,gpointer user_data )
int i;
str=gtk_entry_get_text( GTK_ENTRY(user_data ) );
switch ( fsType )
{
case fsVideoSelector:
for( i=0;i<fsNumberOfVideoFilterNames+1;i++ )
if( !strcmp( str,fsVideoFilterNames[i][0] ) )
if( !strcmp( str,fsVideoFilterNames[i][0] ) )
{
strcpy( fsFilter,fsVideoFilterNames[i][1] );
CheckDir( fsFNameList,get_current_dir_name() );
break;
}
break;
strcpy( fsFilter,fsVideoFilterNames[i][1] );
CheckDir( fsFNameList,get_current_dir_name() );
break;
}
break;
case fsSubtitleSelector:
for( i=0;i<fsNumberOfSubtitleFilterNames+1;i++ )
if( !strcmp( str,fsSubtitleFilterNames[i][0] ) )
if( !strcmp( str,fsSubtitleFilterNames[i][0] ) )
{
strcpy( fsFilter,fsSubtitleFilterNames[i][1] );
CheckDir( fsFNameList,get_current_dir_name() );
break;
}
strcpy( fsFilter,fsSubtitleFilterNames[i][1] );
CheckDir( fsFNameList,get_current_dir_name() );
break;
}
break;
case fsOtherSelector:
for( i=0;i<fsNumberOfOtherFilterNames+1;i++ )
if( !strcmp( str,fsOtherFilterNames[i][0] ) )
if( !strcmp( str,fsOtherFilterNames[i][0] ) )
{
strcpy( fsFilter,fsOtherFilterNames[i][1] );
CheckDir( fsFNameList,get_current_dir_name() );
break;
}
strcpy( fsFilter,fsOtherFilterNames[i][1] );
CheckDir( fsFNameList,get_current_dir_name() );
break;
}
break;
}
}
@ -313,18 +308,10 @@ void fs_Ok_released( GtkButton * button,gpointer user_data )
{
case 1:
fsSelectedDirectory=(unsigned char *)get_current_dir_name();
// printf("[gtk-fs] 1-fsSelectedFile: %s\n",fsSelectedFile);
// #ifdef DEBUG
// dbprintf( 1,"[gtk-fs] fsSelectedFile: %s\n",fsSelectedFile );
// #endif
break;
case 2:
str=gtk_entry_get_text( GTK_ENTRY( fsPathCombo ) );
fsSelectedFile=str;
// printf("[gtk-fs] 2-fsSelectedFile: '%s' \n",fsSelectedFile);
// #ifdef DEBUG
// dbprintf( 1,"[gtk-fs] fsSelectedFile: %s\n",fsSelectedFile );
// #endif
if ( !fsFileExist( fsSelectedFile ) ) return;
fsSelectedDirectory=fsSelectedFile;
size=strlen( fsSelectedDirectory );
@ -337,31 +324,21 @@ void fs_Ok_released( GtkButton * button,gpointer user_data )
break;
}
}
// printf("[gtk-fs-xxx] fsSelectedFile: '%s' \n",fsSelectedFile);
// printf("[gtk-fs-xxx] fsSelectedDirectory: '%s' \n",fsSelectedDirectory);
break;
}
// printf( "----gtk---> directory: %s\n",fsSelectedDirectory );
// printf( "----gtk---> filename: %s\n",fsSelectedFile );
switch ( fsType )
{
case fsVideoSelector:
strcpy( gtkShMem->fs.dir,fsSelectedDirectory );
strcpy( gtkShMem->fs.filename,fsSelectedFile );
// printf( "----gtksm-> directory: %s\n",gtkShMem->fs.dir );
// printf( "----gtksm-> filename: %s\n",gtkShMem->fs.filename );
gtkSendMessage( evFileLoaded );
break;
guiSetDF( guiIntfStruct.Filename,fsSelectedDirectory,fsSelectedFile );
guiIntfStruct.StreamType=STREAMTYPE_FILE;
guiIntfStruct.FilenameChanged=1;
break;
case fsSubtitleSelector:
strcpy( gtkShMem->fs.subtitlename,fsSelectedDirectory );
strcat( gtkShMem->fs.subtitlename,"/" );
strcat( gtkShMem->fs.subtitlename,fsSelectedFile );
gtkSendMessage( evSubtitleLoaded );
guiSetDF( guiIntfStruct.Subtitlename,fsSelectedDirectory,fsSelectedFile );
guiIntfStruct.SubtitleChanged=1;
break;
case fsOtherSelector:
strcpy( gtkShMem->fs.otherfilename,fsSelectedDirectory );
strcat( gtkShMem->fs.subtitlename,"/" );
strcat( gtkShMem->fs.otherfilename,fsSelectedFile );
guiSetDF( guiIntfStruct.Othername,fsSelectedDirectory,fsSelectedFile );
break;
}
item=fsTopList_items;
@ -375,6 +352,7 @@ void fs_Ok_released( GtkButton * button,gpointer user_data )
fsTopList_items=g_list_prepend( fsTopList_items,(gchar *)get_current_dir_name() );
gtk_combo_set_popdown_strings( GTK_COMBO( user_data ),fsTopList_items );
}
if ( mplMainAutoPlay ) mplEventHandling( evPlay,0 );
}
void fs_Cancel_released( GtkButton * button,gpointer user_data )
@ -382,7 +360,7 @@ void fs_Cancel_released( GtkButton * button,gpointer user_data )
void fs_fsFNameList_select_row( GtkWidget * widget,gint row,gint column,GdkEventButton *bevent,gpointer user_data )
{
gtk_clist_get_text( GTK_CLIST(widget ),row,1,&fsSelectedFile );
gtk_clist_get_text( GTK_CLIST(widget ),row,1,&fsSelectedFile );
fsPressed=1;
if( !bevent ) return;
if( bevent->type == GDK_2BUTTON_PRESS ) gtk_button_released( GTK_BUTTON( fsOk ) );

View File

@ -21,14 +21,11 @@ void on_MessageBox_destroy( GtkObject * object,gpointer user_data )
}
*/
gtk_widget_hide( MessageBox );
gtkVisibleMessageBox=0;
}
void on_Ok_released( GtkButton * button,gpointer user_data )
{
gtk_widget_hide( MessageBox );
gtkVisibleMessageBox=0;
gtkSendMessage( evMessageBox );
}
GtkWidget * create_MessageBox( int type )

View File

@ -14,10 +14,9 @@
void ActivateMenuItem( int Item )
{
// fprintf( stderr,"[menu] item: %d.%d\n",Item&0xffff,Item>>16 );
gtkShMem->popupmenu=Item & 0x0000ffff;
gtkShMem->popupmenuparam=Item >> 16;
gtkShMem->visiblepopupmenu=0;
gtkSendMessage( evShowPopUpMenu );
gtkPopupMenu=Item & 0x0000ffff;
gtkPopupMenuParam=Item >> 16;
mplEventHandling( Item & 0x0000ffff,Item >> 16 );
}
GtkWidget * AddMenuItem( GtkWidget * Menu,char * label,int Number )
@ -246,6 +245,7 @@ char * GetLanguage( int language )
int i;
for ( i=0;i<sizeof( Languages ) / sizeof( Languages_t );i++ )
if ( Languages[i].id == language ) return Languages[i].name;
return NULL;
}
GtkWidget * DVDSubMenu;
@ -293,61 +293,61 @@ GtkWidget * create_PopUpMenu( void )
AddMenuItem( DVDSubMenu,MSGTR_MENU_ShowDVDMenu, evNone );
AddSeparator( DVDSubMenu );
DVDTitleMenu=AddSubMenu( DVDSubMenu,MSGTR_MENU_Titles );
if ( gtkShMem->DVD.titles )
if ( guiIntfStruct.DVD.titles )
{
char tmp[32]; int i;
for ( i=0;i<gtkShMem->DVD.titles;i++ )
for ( i=0;i < guiIntfStruct.DVD.titles;i++ )
{
sprintf( tmp,MSGTR_MENU_Title,i+1 );
AddMenuItem( DVDTitleMenu,tmp,( (i+1) << 16 ) + evSetDVDTitle );
}
}
else
else
{
MenuItem=AddMenuItem( DVDTitleMenu,MSGTR_MENU_None,evNone );
gtk_widget_set_sensitive( MenuItem,FALSE );
}
DVDChapterMenu=AddSubMenu( DVDSubMenu,MSGTR_MENU_Chapters );
if ( gtkShMem->DVD.chapters )
if ( guiIntfStruct.DVD.chapters )
{
char tmp[32]; int i;
for ( i=0;i<gtkShMem->DVD.chapters;i++ )
for ( i=0;i < guiIntfStruct.DVD.chapters;i++ )
{
sprintf( tmp,MSGTR_MENU_Chapter,i+1 );
AddMenuItem( DVDChapterMenu,tmp,( (i+1) << 16 ) + evSetDVDChapter );
}
}
else
else
{
MenuItem=AddMenuItem( DVDChapterMenu,MSGTR_MENU_None,evNone );
gtk_widget_set_sensitive( MenuItem,FALSE );
}
DVDAudioLanguageMenu=AddSubMenu( DVDSubMenu,MSGTR_MENU_AudioLanguages );
if ( gtkShMem->DVD.nr_of_audio_channels )
if ( guiIntfStruct.DVD.nr_of_audio_channels )
{
char tmp[64]; int i;
for ( i=0;i<gtkShMem->DVD.nr_of_audio_channels;i++ )
for ( i=0;i < guiIntfStruct.DVD.nr_of_audio_channels;i++ )
{
strcpy( tmp,GetLanguage( gtkShMem->DVD.audio_streams[i].language ) );
AddMenuItem( DVDAudioLanguageMenu,tmp,( gtkShMem->DVD.audio_streams[i].id << 16 ) + evSetDVDAudio );
strcpy( tmp,GetLanguage( guiIntfStruct.DVD.audio_streams[i].language ) );
AddMenuItem( DVDAudioLanguageMenu,tmp,( guiIntfStruct.DVD.audio_streams[i].id << 16 ) + evSetDVDAudio );
}
}
else
else
{
MenuItem=AddMenuItem( DVDAudioLanguageMenu,MSGTR_MENU_None,evNone );
gtk_widget_set_sensitive( MenuItem,FALSE );
}
DVDSubtitleLanguageMenu=AddSubMenu( DVDSubMenu,MSGTR_MENU_SubtitleLanguages );
if ( gtkShMem->DVD.nr_of_subtitles )
if ( guiIntfStruct.DVD.nr_of_subtitles )
{
char tmp[64]; int i;
for ( i=0;i<gtkShMem->DVD.nr_of_subtitles;i++ )
for ( i=0;i < guiIntfStruct.DVD.nr_of_subtitles;i++ )
{
strcpy( tmp,GetLanguage( gtkShMem->DVD.subtitles[i].language ) );
AddMenuItem( DVDSubtitleLanguageMenu,tmp,( gtkShMem->DVD.subtitles[i].id << 16 ) + evSetDVDSubtitle );
strcpy( tmp,GetLanguage( guiIntfStruct.DVD.subtitles[i].language ) );
AddMenuItem( DVDSubtitleLanguageMenu,tmp,( guiIntfStruct.DVD.subtitles[i].id << 16 ) + evSetDVDSubtitle );
}
}
else
else
{
MenuItem=AddMenuItem( DVDSubtitleLanguageMenu,MSGTR_MENU_None,evNone );
gtk_widget_set_sensitive( MenuItem,FALSE );

View File

@ -1,7 +1,8 @@
#include <stdlib.h>
#include <stdio.h>
#include "./mplayer.h"
#include "psignal.h"
#include "../error.h"
#include "../../events.h"
#include "../../../config.h"
@ -27,14 +28,11 @@ GtkWidget * opAutoFullscreenCheckBox;
GtkWidget * opOk;
GtkWidget * opCancel;
int opShift = False;
int opShift = 0;
void HideOptions( void )
{
gtk_widget_hide( Options );
gtkVisibleOptions=0;
gtkShMem->vs.window=evPreferences;
gtkSendMessage( evHideWindow );
}
gboolean on_window2_key_press_event( GtkWidget * widget,GdkEventKey * event,gpointer user_data )
@ -43,10 +41,10 @@ gboolean on_window2_key_press_event( GtkWidget * widget,GdkEventKey * event,gpoi
{
case GDK_Shift_L:
case GDK_Shift_R:
opShift=True;
opShift=1;
break;
}
return FALSE;
return 0;
}
gboolean on_window2_key_release_event( GtkWidget * widget,GdkEventKey * event,gpointer user_data )
@ -66,7 +64,7 @@ gboolean on_window2_key_release_event( GtkWidget * widget,GdkEventKey * event,gp
break;
case GDK_Shift_L:
case GDK_Shift_R:
opShift=False;
opShift=0;
break;
}
return FALSE;

View File

@ -9,9 +9,6 @@
void HidePlayList( void )
{
gtk_widget_hide( PlayList );
gtkVisiblePlayList=0;
gtkShMem->vs.window=evPlayList;
gtkSendMessage( evHideWindow );
}
void pl_PlayList_destroy( GtkObject * object,gpointer user_data )

View File

@ -4,6 +4,7 @@
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include "sb.h"
#include "../../events.h"
@ -18,16 +19,7 @@ char * sbSelectedSkin=NULL;
char * sbMPlayerDirInHome=NULL;
char * sbMPlayerPrefixDir=NULL;
void HideSkinBrowser( void )
{
gtk_widget_hide( SkinBrowser );
gtkVisibleSkinBrowser=0;
gtkShMem->vs.window=evSkinBrowser;
gtkSendMessage( evHideWindow );
gtkSendMessage( evSkinBrowser );
}
char gtkOldSkin[128];
char * gtkOldSkin;
int gtkFillSkinList( gchar * mdir )
{
@ -37,7 +29,7 @@ int gtkFillSkinList( gchar * mdir )
glob_t gg;
struct stat fs;
strcpy( gtkOldSkin,gtkShMem->sb.name );
gtkOldSkin=strdup( skinName );
if ( ( str[0]=(char *)calloc( 1,7 ) ) == NULL )
{
gtkMessageBox( GTK_MB_FATAL,MSGTR_SKINBROWSER_NotEnoughMemory );
@ -68,21 +60,28 @@ int gtkFillSkinList( gchar * mdir )
}
void on_SkinBrowser_destroy( GtkObject * object,gpointer user_data )
{ HideSkinBrowser(); }
{ gtk_widget_hide( SkinBrowser ); }
void on_SkinBrowser_Cancel( GtkObject * object,gpointer user_data )
{
strcpy( gtkShMem->sb.name,gtkOldSkin );
HideSkinBrowser();
ChangeSkin( skinName );
gtk_widget_hide( SkinBrowser );
}
void on_SkinBrowser_Ok( GtkObject * object,gpointer user_data )
{
ChangeSkin( sbSelectedSkin );
if ( skinName ) free( skinName );
skinName=strdup( sbSelectedSkin );
gtk_widget_hide( SkinBrowser );
}
void on_SkinList_select_row( GtkCList * clist,gint row,gint column,GdkEvent * bevent,gpointer user_data )
{
gtk_clist_get_text( clist,row,0,&sbSelectedSkin );
strcpy( gtkShMem->sb.name,sbSelectedSkin );
gtkSendMessage( evSkinBrowser );
ChangeSkin( sbSelectedSkin );
if( !bevent ) return;
if( bevent->type == GDK_2BUTTON_PRESS ) HideSkinBrowser();
if( bevent->type == GDK_2BUTTON_PRESS ) gtk_widget_hide( SkinBrowser );
}
GtkWidget * create_SkinBrowser( void )
@ -248,7 +247,7 @@ GtkWidget * create_SkinBrowser( void )
gtk_signal_connect( GTK_OBJECT( SkinBrowser ),"destroy",GTK_SIGNAL_FUNC( on_SkinBrowser_destroy ),NULL );
gtk_signal_connect( GTK_OBJECT( SkinList ),"select_row",GTK_SIGNAL_FUNC( on_SkinList_select_row ),NULL );
gtk_signal_connect( GTK_OBJECT( Ok ),"released",GTK_SIGNAL_FUNC( on_SkinBrowser_destroy ),NULL );
gtk_signal_connect( GTK_OBJECT( Ok ),"released",GTK_SIGNAL_FUNC( on_SkinBrowser_Ok ),NULL );
gtk_signal_connect( GTK_OBJECT( Cancel ),"released",GTK_SIGNAL_FUNC( on_SkinBrowser_Cancel ),NULL );
if ( ( sbMPlayerDirInHome=(char *)calloc( 1,strlen( skinDirInHome ) + 4 ) ) != NULL )

View File

@ -100,14 +100,14 @@ void mplHideMenu( int mx,int my )
if ( ( x < 0 ) || ( y < 0 ) ) return;
// printf( "---------> %d %d,%d\n",i,x,y );
// printf( "---------> %d %d,%d\n",i,x,y );
// printf( "--------> mi: %d,%d %dx%d\n",appMPlayer.MenuItems[i].x,appMPlayer.MenuItems[i].y,appMPlayer.MenuItems[i].width,appMPlayer.MenuItems[i].height );
if ( wgIsRect( x,y,
appMPlayer.MenuItems[i].x,appMPlayer.MenuItems[i].y,
appMPlayer.MenuItems[i].x+appMPlayer.MenuItems[i].width,
appMPlayer.MenuItems[i].y+appMPlayer.MenuItems[i].height ) )
{
mplMsgHandle( appMPlayer.MenuItems[i].msg,0 );
mplEventHandling( appMPlayer.MenuItems[i].msg,0 );
}
}
@ -122,7 +122,7 @@ void mplMenuInit( void )
if ( ( mplMenuDrawBuffer = calloc( 1,appMPlayer.menuBase.Bitmap.ImageSize ) ) == NULL )
{
#ifdef DEBUG
dbprintf( 1,MSGTR_NEMFMR );
mp_msg( MSGT_GPLAYER,MSGL_DBG2,"[menu.h] %s",MSGTR_NEMFMR );
#endif
gtkMessageBox( GTK_MB_FATAL,MSGTR_NEMFMR );
return;
@ -133,7 +133,7 @@ void mplMenuInit( void )
wsNoBorder,wsShowMouseCursor|wsHandleMouseButton|wsHandleMouseMove,wsOverredirect|wsHideFrame|wsMaxSize|wsMinSize|wsHideWindow,"MPlayer menu" );
#ifdef DEBUG
dbprintf( 1,"[menu.h] menu: 0x%x\n",(int)appMPlayer.menuWindow.WindowID );
mp_msg( MSGT_GPLAYER,MSGL_DBG2,"[menu.h] menu: 0x%x\n",(int)appMPlayer.menuWindow.WindowID );
#endif
appMPlayer.menuWindow.ReDraw=mplMenuDraw;

View File

@ -7,29 +7,28 @@
#include "./mplayer.h"
#include "../events.h"
#include "../app.h"
#include "../interface.h"
#include "../skin/skin.h"
#include "../skin/font.h"
#include "../wm/ws.h"
#include "../wm/wskeys.h"
#include "../wm/widget.h"
#include "../bitmap/bitmap.h"
#include "../timer.h"
#include "../error.h"
#include "../../config.h"
#include "../../help_mp.h"
#include "../../libvo/x11_common.h"
#include "../../libmpdemux/stream.h"
#include "../../mp_msg.h"
#define mplMouseTimerConst 10
#define mplRedrawTimerConst 5
int mplMouseTimer = mplMouseTimerConst;
int mplRedrawTimer = mplRedrawTimerConst;
int mplGeneralTimer = -1;
int mplTimer = 0;
void mplMsgHandle( int msg,float param );
void mplEventHandling( int msg,float param );
#include "widgets.h"
#include "play.h"
@ -38,31 +37,24 @@ void mplMsgHandle( int msg,float param );
#include "sw.h"
#include "widgets.h"
void mplTimerHandler( int signum )
void mplTimerHandler( void )
{
mplTimer++;
mplMouseTimer--;
mplRedrawTimer--;
mplGeneralTimer--;
if ( mplMouseTimer == 0 ) mplMsgHandle( evHideMouseCursor,0 );
if ( mplRedrawTimer == 0 ) mplMsgHandle( evRedraw,0 );
if ( mplGeneralTimer == 0 ) mplMsgHandle( evGeneralTimer,0 );
if ( mplMouseTimer == 0 ) mplEventHandling( evHideMouseCursor,0 );
if ( mplRedrawTimer == 0 ) mplEventHandling( evRedraw,0 );
}
void mplInit( int argc,char* argv[], char *envp[], void* disp )
{
int i;
// allocates shmem to mplShMem
// init fields of this struct to default values
mplMPlayerInit( argc,argv,envp );
// allocates shmem to gtkShMem
// fork() a process which runs gtkThreadProc() [gtkPID]
gtkInit( argc,argv,envp );
strcpy( gtkShMem->sb.name,skinName );
message=mplErrorHandler; // error messagebox drawing function
// opens X display, checks for extensions (XShape, DGA etc)
wsXInit(disp);
@ -81,7 +73,7 @@ void mplInit( int argc,char* argv[], char *envp[], void* disp )
wsCreateImage( &appMPlayer.subWindow,appMPlayer.sub.Bitmap.Width,appMPlayer.sub.Bitmap.Height );
vo_setwindow( appMPlayer.subWindow.WindowID, appMPlayer.subWindow.wGC );
i=wsHideFrame|wsMaxSize|wsHideWindow;
if ( appMPlayer.mainDecoration ) i=wsShowFrame|wsMaxSize|wsHideWindow;
wsCreateWindow( &appMPlayer.mainWindow,
@ -89,13 +81,13 @@ void mplInit( int argc,char* argv[], char *envp[], void* disp )
wsNoBorder,wsShowMouseCursor|wsHandleMouseButton|wsHandleMouseMove,i,"MPlayer" ); //wsMinSize|
wsSetShape( &appMPlayer.mainWindow,appMPlayer.main.Mask.Image );
mplMenuInit();
#ifdef DEBUG
dbprintf( 1,"[main] Depth on screen: %d\n",wsDepthOnScreen );
dbprintf( 1,"[main] parent: 0x%x\n",(int)appMPlayer.mainWindow.WindowID );
dbprintf( 1,"[main] sub: 0x%x\n",(int)appMPlayer.subWindow.WindowID );
mp_msg( MSGT_GPLAYER,MSGL_DBG2,"[main] Depth on screen: %d\n",wsDepthOnScreen );
mp_msg( MSGT_GPLAYER,MSGL_DBG2,"[main] parent: 0x%x\n",(int)appMPlayer.mainWindow.WindowID );
mp_msg( MSGT_GPLAYER,MSGL_DBG2,"[main] sub: 0x%x\n",(int)appMPlayer.subWindow.WindowID );
#endif
appMPlayer.mainWindow.ReDraw=mplMainDraw;
@ -114,24 +106,13 @@ void mplInit( int argc,char* argv[], char *envp[], void* disp )
wsPostRedisplay( &appMPlayer.mainWindow );
wsPostRedisplay( &appMPlayer.subWindow );
btnModify( evSetVolume,mplShMem->Volume );
btnModify( evSetBalance,mplShMem->Balance );
btnModify( evSetMoviePosition,mplShMem->Position );
btnModify( evSetVolume,guiIntfStruct.Volume );
btnModify( evSetBalance,guiIntfStruct.Balance );
btnModify( evSetMoviePosition,guiIntfStruct.Position );
mplShMem->Playing=0;
guiIntfStruct.Playing=0;
wsVisibleWindow( &appMPlayer.mainWindow,wsShowWindow );
wsVisibleWindow( &appMPlayer.subWindow,wsShowWindow );
}
void mplDone(){
dbprintf( 1,"[mplayer] exit.\n" );
mplStop();
// timerDone();
gtkDone(); // kills the gtkThreadProc() process
wsXDone();
}

View File

@ -4,16 +4,16 @@
extern int mplSubRender;
extern int mplMainRender;
extern int mplGeneralTimer;
extern unsigned char * mplDrawBuffer;
extern unsigned char * mplMenuDrawBuffer;
extern int mainVisible;
extern int mplMainAutoPlay;
extern int mplMiddleMenu;
extern int mplMiddleMenu;
extern void mplInit( int argc,char* argv[], char *envp[], void* disp );
extern void mplMsgHandle( int msg,float param );
extern void mplEventHandling( int msg,float param );
extern void mplTimerHandler( void );
#endif

View File

@ -7,7 +7,7 @@ unsigned char * mplDrawBuffer = NULL;
int mplMainRender = 1;
int mplMainAutoPlay = 0;
int mplMiddleMenu = 0;
int mplMiddleMenu = 0;
int mainVisible = 1;
@ -18,19 +18,19 @@ int i,pot = 0;
inline void TranslateFilename( int c,char * tmp )
{
int i;
switch ( mplShMem->StreamType )
switch ( guiIntfStruct.StreamType )
{
case STREAMTYPE_FILE:
if ( gtkShMem->fs.filename[0] )
if ( ( guiIntfStruct.Filename )&&( guiIntfStruct.Filename[0] ) )
{
strcpy( tmp,gtkShMem->fs.filename );
strcpy( tmp,guiIntfStruct.Filename );
if ( tmp[strlen( tmp ) - 4] == '.' ) tmp[strlen( tmp ) - 4]=0;
if ( tmp[strlen( tmp ) - 5] == '.' ) tmp[strlen( tmp ) - 5]=0;
} else strcpy( tmp,"no file loaded" );
break;
#ifdef USE_DVDREAD
#ifdef USE_DVDREAD
case STREAMTYPE_DVD:
if ( mplShMem->DVD.current_chapter ) sprintf( tmp,"chapter %d",mplShMem->DVD.current_chapter );
if ( guiIntfStruct.DVD.current_chapter ) sprintf( tmp,"chapter %d",guiIntfStruct.DVD.current_chapter );
else strcat( tmp,"no chapter" );
break;
#endif
@ -38,7 +38,7 @@ inline void TranslateFilename( int c,char * tmp )
}
if ( c )
{
for ( i=0;i < strlen( tmp );i++ )
for ( i=0;i < (int)strlen( tmp );i++ )
{
int t=0;
if ( c == 1 ) { if ( ( tmp[i] >= 'A' )&&( tmp[i] <= 'Z' ) ) t=32; }
@ -51,46 +51,46 @@ inline void TranslateFilename( int c,char * tmp )
char * Translate( char * str )
{
static char trbuf[512];
char tmp[128];
char tmp[512];
int i,c;
int t;
memset( trbuf,0,512 );
memset( tmp,0,128 );
for ( c=0,i=0;i < strlen( str );i++ )
for ( c=0,i=0;i < (int)strlen( str );i++ )
{
if ( str[i] != '$' ) { trbuf[c++]=str[i]; trbuf[c]=0; }
else
{
switch ( str[++i] )
{
case 't': sprintf( tmp,"%02d",mplShMem->Track ); strcat( trbuf,tmp ); break;
case 't': sprintf( tmp,"%02d",guiIntfStruct.Track ); strcat( trbuf,tmp ); break;
case 'o': TranslateFilename( 0,tmp ); strcat( trbuf,tmp ); break;
case 'f': TranslateFilename( 1,tmp ); strcat( trbuf,tmp ); break;
case 'F': TranslateFilename( 2,tmp ); strcat( trbuf,tmp ); break;
case '6': t=mplShMem->LengthInSec; goto calclengthhhmmss;
case '1': t=mplShMem->TimeSec;
case '6': t=guiIntfStruct.LengthInSec; goto calclengthhhmmss;
case '1': t=guiIntfStruct.TimeSec;
calclengthhhmmss:
sprintf( tmp,"%02d:%02d:%02d",t/3600,t/60%60,t%60 ); strcat( trbuf,tmp );
break;
case '7': t=mplShMem->LengthInSec; goto calclengthmmmmss;
case '2': t=mplShMem->TimeSec;
case '7': t=guiIntfStruct.LengthInSec; goto calclengthmmmmss;
case '2': t=guiIntfStruct.TimeSec;
calclengthmmmmss:
sprintf( tmp,"%04d:%02d",t/60,t%60 ); strcat( trbuf,tmp );
break;
case '3': sprintf( tmp,"%02d",mplShMem->TimeSec / 3600 ); strcat( trbuf,tmp ); break;
case '4': sprintf( tmp,"%02d",( ( mplShMem->TimeSec / 60 ) % 60 ) ); strcat( trbuf,tmp ); break;
case '5': sprintf( tmp,"%02d",mplShMem->TimeSec % 60 ); strcat( trbuf,tmp ); break;
case '8': sprintf( tmp,"%01d:%02d:%02d",mplShMem->TimeSec / 3600,( mplShMem->TimeSec / 60 ) % 60,mplShMem->TimeSec % 60 ); strcat( trbuf,tmp ); break;
case 'v': sprintf( tmp,"%3.2f%%",mplShMem->Volume ); strcat( trbuf,tmp ); break;
case 'V': sprintf( tmp,"%3.1f",mplShMem->Volume ); strcat( trbuf,tmp ); break;
case 'b': sprintf( tmp,"%3.2f%%",mplShMem->Balance ); strcat( trbuf,tmp ); break;
case 'B': sprintf( tmp,"%3.1f",mplShMem->Balance ); strcat( trbuf,tmp ); break;
case 'd': sprintf( tmp,"%d",mplShMem->FrameDrop ); strcat( trbuf,tmp ); break;
case 's': if ( mplShMem->Playing == 0 ) strcat( trbuf,"s" ); break;
case 'l': if ( mplShMem->Playing == 1 ) strcat( trbuf,"p" ); break;
case 'e': if ( mplShMem->Playing == 2 ) strcat( trbuf,"e" ); break;
case '3': sprintf( tmp,"%02d",guiIntfStruct.TimeSec / 3600 ); strcat( trbuf,tmp ); break;
case '4': sprintf( tmp,"%02d",( ( guiIntfStruct.TimeSec / 60 ) % 60 ) ); strcat( trbuf,tmp ); break;
case '5': sprintf( tmp,"%02d",guiIntfStruct.TimeSec % 60 ); strcat( trbuf,tmp ); break;
case '8': sprintf( tmp,"%01d:%02d:%02d",guiIntfStruct.TimeSec / 3600,( guiIntfStruct.TimeSec / 60 ) % 60,guiIntfStruct.TimeSec % 60 ); strcat( trbuf,tmp ); break;
case 'v': sprintf( tmp,"%3.2f%%",guiIntfStruct.Volume ); strcat( trbuf,tmp ); break;
case 'V': sprintf( tmp,"%3.1f",guiIntfStruct.Volume ); strcat( trbuf,tmp ); break;
case 'b': sprintf( tmp,"%3.2f%%",guiIntfStruct.Balance ); strcat( trbuf,tmp ); break;
case 'B': sprintf( tmp,"%3.1f",guiIntfStruct.Balance ); strcat( trbuf,tmp ); break;
case 'd': sprintf( tmp,"%d",guiIntfStruct.FrameDrop ); strcat( trbuf,tmp ); break;
case 's': if ( guiIntfStruct.Playing == 0 ) strcat( trbuf,"s" ); break;
case 'l': if ( guiIntfStruct.Playing == 1 ) strcat( trbuf,"p" ); break;
case 'e': if ( guiIntfStruct.Playing == 2 ) strcat( trbuf,"e" ); break;
case 'a':
switch ( mplShMem->AudioType )
switch ( guiIntfStruct.AudioType )
{
case 0: strcat( trbuf,"n" ); break;
case 1: strcat( trbuf,"m" ); break;
@ -98,12 +98,12 @@ calclengthmmmmss:
}
break;
case 'T':
switch ( mplShMem->StreamType )
switch ( guiIntfStruct.StreamType )
{
case STREAMTYPE_FILE: strcat( trbuf,"f" ); break;
case STREAMTYPE_VCD: strcat( trbuf,"v" ); break;
case STREAMTYPE_STREAM: strcat( trbuf,"u" ); break;
#ifdef USE_DVDREAD
#ifdef USE_DVDREAD
case STREAMTYPE_DVD: strcat( trbuf,"d" ); break;
#endif
default: strcat( trbuf," " ); break;
@ -131,8 +131,8 @@ inline void PutImage( txSample * bf,int x,int y,int max,int ofs )
buf=(unsigned long *)mplDrawBuffer;
drw=(unsigned long *)bf->Image;
for ( iy=y;iy < y+bf->Height / max;iy++ )
for ( ix=x;ix < x+bf->Width;ix++ )
for ( iy=y;iy < (int)(y+bf->Height / max);iy++ )
for ( ix=x;ix < (int)(x+bf->Width);ix++ )
{
tmp=drw[i++];
if ( tmp != 0x00ff00ff )
@ -150,8 +150,8 @@ void mplMainDraw( wsParamDisplay )
!mainVisible ) return;
// !appMPlayer.mainWindow.Mapped ) return;
btnModify( evSetMoviePosition,mplShMem->Position );
btnModify( evSetVolume,mplShMem->Volume );
btnModify( evSetMoviePosition,guiIntfStruct.Position );
btnModify( evSetVolume,guiIntfStruct.Volume );
if ( mplMainRender )
{
@ -176,7 +176,7 @@ void mplMainDraw( wsParamDisplay )
goto drawrenderedtext;
case itDLabel:
image=fntRender( item->fontid,mplTimer%item->width,item->width,"%s",Translate( item->label ) );
// image=fntRender( item->fontid,( mplRedrawTimer / 10 )%item->width,item->width,"%s",Translate( item->label ) );
//// image=fntRender( item->fontid,( mplRedrawTimer / 10 )%item->width,item->width,"%s",Translate( item->label ) );
drawrenderedtext:
PutImage( image,item->x,item->y,1,0 );
if ( image )
@ -200,7 +200,7 @@ extern void exit_player(char* how);
extern int audio_id;
extern int dvdsub_id;
void mplMsgHandle( int msg,float param )
void mplEventHandling( int msg,float param )
{
int j;
@ -218,69 +218,64 @@ void mplMsgHandle( int msg,float param )
dvd_chapter=1;
dvd_angle=1;
play_dvd_2:
mplShMem->StreamType=STREAMTYPE_DVD;
guiIntfStruct.StreamType=STREAMTYPE_DVD;
#endif
case evPlay:
case evPlaySwitchToPause:
// btnModify( evPlaySwitchToPause,btnDisabled );
// btnModify( evPauseSwitchToPlay,btnReleased );
if ( ( msg == evPlaySwitchToPause )&( mplShMem->Playing == 1 ) ) goto NoPause;
mplMainAutoPlay=0;
if ( ( msg == evPlaySwitchToPause )&( guiIntfStruct.Playing == 1 ) ) goto NoPause;
mplMainRender=1;
switch ( mplShMem->StreamType )
switch ( guiIntfStruct.StreamType )
{
case STREAMTYPE_STREAM:
case STREAMTYPE_STREAM:
case STREAMTYPE_VCD:
case STREAMTYPE_FILE:
dvd_title=0;
break;
case STREAMTYPE_FILE:
dvd_title=0;
break;
#ifdef USE_DVDREAD
case STREAMTYPE_DVD:
strcpy( mplShMem->Filename,"/dev/dvd" );
break;
case STREAMTYPE_DVD:
guiSetFilename( guiIntfStruct.Filename,"/dev/dvd" );
break;
#endif
}
mplPlay();
mplState();
mplState();
break;
case evSetDVDSubtitle:
#ifdef USE_DVDREAD
case evSetDVDSubtitle:
dvdsub_id=(int)param;
dvd_title=mplShMem->DVD.current_title;
dvd_angle=mplShMem->DVD.current_angle;
dvd_chapter=mplShMem->DVD.current_chapter;
mplShMem->DVDChanged=1;
goto play_dvd_2;
#endif
dvd_title=guiIntfStruct.DVD.current_title;
dvd_angle=guiIntfStruct.DVD.current_angle;
dvd_chapter=guiIntfStruct.DVD.current_chapter;
guiIntfStruct.DVDChanged=1;
goto play_dvd_2;
break;
case evSetDVDAudio:
#ifdef USE_DVDREAD
audio_id=(int)param;
dvd_title=mplShMem->DVD.current_title;
dvd_angle=mplShMem->DVD.current_angle;
dvd_chapter=mplShMem->DVD.current_chapter;
mplShMem->DVDChanged=1;
goto play_dvd_2;
#endif
dvd_title=guiIntfStruct.DVD.current_title;
dvd_angle=guiIntfStruct.DVD.current_angle;
dvd_chapter=guiIntfStruct.DVD.current_chapter;
guiIntfStruct.DVDChanged=1;
goto play_dvd_2;
break;
case evSetDVDChapter:
#ifdef USE_DVDREAD
dvd_title=mplShMem->DVD.current_title;
dvd_angle=mplShMem->DVD.current_angle;
dvd_title=guiIntfStruct.DVD.current_title;
dvd_angle=guiIntfStruct.DVD.current_angle;
dvd_chapter=(int)param;
mplShMem->DVDChanged=1;
goto play_dvd_2;
#endif
guiIntfStruct.DVDChanged=1;
goto play_dvd_2;
break;
case evSetDVDTitle:
#ifdef USE_DVDREAD
dvd_title=(int)param;
dvd_chapter=1;
dvd_angle=1;
mplShMem->DVDChanged=1;
goto play_dvd_2;
#endif
dvd_chapter=1;
dvd_angle=1;
guiIntfStruct.DVDChanged=1;
goto play_dvd_2;
break;
#endif
case evPause:
case evPauseSwitchToPlay:
@ -292,42 +287,38 @@ NoPause:
break;
case evStop:
IZE("evStop");
// btnModify( evPlaySwitchToPause,btnReleased );
// btnModify( evPauseSwitchToPlay,btnDisabled );
mplMainRender=1;
mplStop();
mplState();
mplState();
break;
case evLoadPlay:
mplMainAutoPlay=1;
case evLoad:
mplMainRender=1;
gtkSendMessage( evLoad );
gtkShow( evLoad,NULL );
break;
case evLoadSubtitle:
mplMainRender=1;
gtkSendMessage( evLoadSubtitle );
gtkShow( evLoadSubtitle,NULL );
break;
case evPrev:
IZE("evPrev");
mplMainRender=1;
#ifdef DEBUG
dbprintf( 1,"[mw.h] previous stream ...\n" );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[mw.h] previous stream ...\n" );
break;
case evNext:
IZE("evNext");
mplMainRender=1;
#ifdef DEBUG
dbprintf( 1,"[mw.h] next stream ...\n" );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[mw.h] next stream ...\n" );
break;
case evPlayList:
IZE("evPlayList");
mplMainRender=1;
gtkShow( evPlayList,NULL );
#warning disabled old gtk code
#if 0
if ( gtkVisiblePlayList )
{
btnModify( evPlayList,btnReleased );
@ -341,11 +332,12 @@ NoPause:
btnModify( evPlayList,btnPressed );
gtkVisiblePlayList=1;
}
#endif
break;
case evSkinBrowser: gtkSendMessage( evSkinBrowser ); break;
case evAbout: gtkSendMessage( evAbout ); break;
case evPreferences: gtkSendMessage( evPreferences ); break;
case evSkinBrowser: gtkShow( evSkinBrowser,skinName ); break;
case evAbout: gtkShow( evAbout,NULL ); break;
case evPreferences: gtkShow( evPreferences,NULL ); break;
case evForward1min: mplRelSeek( 60 ); break;
case evBackward1min: mplRelSeek( -60 ); break;
@ -355,9 +347,9 @@ NoPause:
case evIncVolume: vo_x11_putkey( wsGrayMul ); break;
case evDecVolume: vo_x11_putkey( wsGrayDiv ); break;
case evMute: mplShMem->Mute=1; break;
case evMute: guiIntfStruct.Mute=1; break;
case evSetVolume:
case evSetBalance: mplShMem->VolumeChanged=1; break;
case evSetBalance: guiIntfStruct.VolumeChanged=1; break;
case evIconify:
@ -368,25 +360,25 @@ NoPause:
}
break;
case evNormalSize:
if ( mplShMem->Playing )
if ( guiIntfStruct.Playing )
{
appMPlayer.subWindow.isFullScreen=True;
appMPlayer.subWindow.OldX=( wsMaxX - moviewidth ) / 2;
appMPlayer.subWindow.OldY=( wsMaxY - movieheight ) / 2;
appMPlayer.subWindow.OldWidth=moviewidth; appMPlayer.subWindow.OldHeight=movieheight;
appMPlayer.subWindow.OldX=( wsMaxX - guiIntfStruct.MovieWidth ) / 2;
appMPlayer.subWindow.OldY=( wsMaxY - guiIntfStruct.MovieHeight ) / 2;
appMPlayer.subWindow.OldWidth=guiIntfStruct.MovieWidth; appMPlayer.subWindow.OldHeight=guiIntfStruct.MovieHeight;
wsFullScreen( &appMPlayer.subWindow );
mplResize( appMPlayer.subWindow.X,appMPlayer.subWindow.Y,moviewidth,movieheight );
mplResize( appMPlayer.subWindow.X,appMPlayer.subWindow.Y,guiIntfStruct.MovieWidth,guiIntfStruct.MovieHeight );
}
break;
case evDoubleSize:
if ( mplShMem->Playing )
if ( guiIntfStruct.Playing )
{
appMPlayer.subWindow.isFullScreen=True;
appMPlayer.subWindow.OldX=( wsMaxX - moviewidth * 2 ) / 2;
appMPlayer.subWindow.OldY=( wsMaxY - movieheight * 2 ) / 2;
appMPlayer.subWindow.OldWidth=moviewidth * 2; appMPlayer.subWindow.OldHeight=movieheight * 2;
appMPlayer.subWindow.OldX=( wsMaxX - guiIntfStruct.MovieWidth * 2 ) / 2;
appMPlayer.subWindow.OldY=( wsMaxY - guiIntfStruct.MovieHeight * 2 ) / 2;
appMPlayer.subWindow.OldWidth=guiIntfStruct.MovieWidth * 2; appMPlayer.subWindow.OldHeight=guiIntfStruct.MovieHeight * 2;
wsFullScreen( &appMPlayer.subWindow );
mplResize( appMPlayer.subWindow.X,appMPlayer.subWindow.Y,moviewidth,movieheight );
mplResize( appMPlayer.subWindow.X,appMPlayer.subWindow.Y,guiIntfStruct.MovieWidth,guiIntfStruct.MovieHeight );
}
break;
case evFullScreen:
@ -410,30 +402,15 @@ NoPause:
case evRedraw:
mplMainRender=1;
wsPostRedisplay( &appMPlayer.mainWindow );
// if ( !mplShMem->Playing )
// wsPostRedisplay( &appMPlayer.subWindow );
XFlush( wsDisplay );
mplRedrawTimer=mplRedrawTimerConst;
break;
case evGeneralTimer:
if ( mplMainAutoPlay )
{
mplMainRender=1;
mplMainAutoPlay=0;
mplPlay();
}
if ( mplMiddleMenu )
{
mplMiddleMenu=0;
mplMsgHandle( gtkShMem->popupmenu,gtkShMem->popupmenuparam );
}
break;
// --- system events
case evNone:
dbprintf( 1,"[mw] event none received.\n" );
mp_msg( MSGT_GPLAYER,MSGL_STATUS,"[mw] event none received.\n" );
break;
default:
dbprintf( 1,"[mw] unknown event received ( %d,%.2f ).\n",msg,param );
mp_msg( MSGT_GPLAYER,MSGL_STATUS,"[mw] unknown event received ( %d,%.2f ).\n",msg,param );
break;
}
}
@ -503,24 +480,21 @@ void mplMainMouseHandle( int Button,int X,int Y,int RX,int RY )
switch ( item->msg )
{
case evSetVolume:
mplShMem->VolumeChanged=1;
mplShMem->Volume=item->value;
guiIntfStruct.VolumeChanged=1;
guiIntfStruct.Volume=item->value;
break;
}
value=item->value;
break;
}
mplMsgHandle( item->msg,value );
mplEventHandling( item->msg,value );
mplMainRender=1;
itemtype=0;
break;
case wsPMMouseButton:
#ifdef USE_DVDREAD
memcpy( &gtkShMem->DVD,&mplShMem->DVD,sizeof( mplDVDStruct ) );
#endif
gtkSendMessage( evShowPopUpMenu );
break;
gtkShow( evShowPopUpMenu,NULL );
break;
// --- rolled mouse ... de szar :)))
case wsP5MouseButton: value=-2.5f; goto rollerhandled;
@ -535,11 +509,11 @@ rollerhandled:
switch ( item->msg )
{
case evSetVolume:
mplShMem->VolumeChanged=1;
mplShMem->Volume=item->value;
guiIntfStruct.VolumeChanged=1;
guiIntfStruct.Volume=item->value;
break;
}
mplMsgHandle( item->msg,item->value );
mplEventHandling( item->msg,item->value );
mplMainRender=1;
}
break;
@ -567,11 +541,11 @@ potihandled:
switch ( item->msg )
{
case evSetVolume:
mplShMem->VolumeChanged=1;
mplShMem->Volume=item->value;
guiIntfStruct.VolumeChanged=1;
guiIntfStruct.Volume=item->value;
break;
}
mplMsgHandle( item->msg,item->value );
mplEventHandling( item->msg,item->value );
mplMainRender=1; wsPostRedisplay( &appMPlayer.mainWindow );
break;
}
@ -615,7 +589,7 @@ void mplMainKeyHandle( int State,int Type,int Key )
case wsS: msg=evStop; break;
case wsp:
case wsP: msg=evPlayList; break;
case wsXF86LowerVolume: msg=evDecVolume; break;
case wsXF86RaiseVolume: msg=evIncVolume; break;
case wsXF86Mute: msg=evMute; break;
@ -629,7 +603,7 @@ void mplMainKeyHandle( int State,int Type,int Key )
}
if ( msg != evNone )
{
mplMsgHandle( msg,0 );
mplEventHandling( msg,0 );
// mplMainRender=1;
// wsPostRedisplay( &appMPlayer.mainWindow );
}

View File

@ -5,30 +5,23 @@
#include <unistd.h>
#include <signal.h>
int mplParent = 1;
int moviex,moviey,moviewidth,movieheight;
#include "../app.h"
#include "../wm/ws.h"
#include "../wm/wskeys.h"
#include "../wm/widget.h"
#include "../../config.h"
#include "../../help_mp.h"
#include "../../libvo/x11_common.h"
#include "../app.h"
#include "../wm/wskeys.h"
#include "../wm/widget.h"
#include "../interface.h"
#include "widgets.h"
#include "./mplayer.h"
#include "psignal.h"
#include "play.h"
#include "../skin/skin.h"
#include "../error.h"
mplCommStruct * mplShMem;
char * Filename = NULL;
#include "../skin/font.h"
extern float rel_seek_secs;
extern int abs_seek_pos;
@ -53,7 +46,7 @@ void mplFullScreen( void )
wsWindowDecoration( &appMPlayer.subWindow,0 );
appMPlayer.subWindow.isFullScreen=1;
}
if ( mplShMem->Playing ) wsSetBackgroundRGB( &appMPlayer.subWindow,0,0,0 );
if ( guiIntfStruct.Playing ) wsSetBackgroundRGB( &appMPlayer.subWindow,0,0,0 );
else wsSetBackgroundRGB( &appMPlayer.subWindow,appMPlayer.subR,appMPlayer.subG,appMPlayer.subB );
wsVisibleWindow( &appMPlayer.subWindow,wsShowWindow );
mplResize( 0,0,appMPlayer.subWindow.Width,appMPlayer.subWindow.Height );
@ -63,11 +56,11 @@ extern int mplSubRender;
void mplStop()
{
mplShMem->Playing=0;
mplShMem->TimeSec=0;
mplShMem->Position=0;
mplShMem->AudioType=0;
// if ( !mplShMem->Playing ) return;
guiIntfStruct.Playing=0;
guiIntfStruct.TimeSec=0;
guiIntfStruct.Position=0;
guiIntfStruct.AudioType=0;
// if ( !guiIntfStruct.Playing ) return;
if ( !appMPlayer.subWindow.isFullScreen )
{
wsResizeWindow( &appMPlayer.subWindow,appMPlayer.sub.width,appMPlayer.sub.height );
@ -81,30 +74,31 @@ void mplStop()
void mplPlay( void )
{
if ( ( mplShMem->Filename[0] == 0 )||
( mplShMem->Playing == 1 ) ) return;
if ( mplShMem->Playing == 2 ) { mplPause(); return; }
mplShMem->Playing=1;
if ( ( !guiIntfStruct.Filename )||
( guiIntfStruct.Filename[0] == 0 )||
( guiIntfStruct.Playing == 1 ) ) return;
if ( guiIntfStruct.Playing == 2 ) { mplPause(); return; }
guiIntfStruct.Playing=1;
mplSubRender=0;
wsSetBackgroundRGB( &appMPlayer.subWindow,0,0,0 );
wsClearWindow( appMPlayer.subWindow );
wsClearWindow( appMPlayer.subWindow );
wsPostRedisplay( &appMPlayer.subWindow );
}
void mplPause( void )
{
switch( mplShMem->Playing )
switch( guiIntfStruct.Playing )
{
case 1: // playing
mplShMem->Playing=2;
// btnModify( evPlaySwitchToPause,btnReleased );
// btnModify( evPauseSwitchToPlay,btnDisabled );
break;
guiIntfStruct.Playing=2;
// btnModify( evPlaySwitchToPause,btnReleased );
// btnModify( evPauseSwitchToPlay,btnDisabled );
break;
case 2: // paused
mplShMem->Playing=1;
// btnModify( evPlaySwitchToPause,btnDisabled );
// btnModify( evPauseSwitchToPlay,btnReleased );
break;
guiIntfStruct.Playing=1;
// btnModify( evPlaySwitchToPause,btnDisabled );
// btnModify( evPauseSwitchToPlay,btnReleased );
break;
}
mplState();
mplSubRender=0;
@ -112,12 +106,12 @@ void mplPause( void )
void mplState( void )
{
if ( ( mplShMem->Playing == 0 )||( mplShMem->Playing == 2 ) )
if ( ( guiIntfStruct.Playing == 0 )||( guiIntfStruct.Playing == 2 ) )
{
btnModify( evPlaySwitchToPause,btnReleased );
btnModify( evPauseSwitchToPlay,btnDisabled );
}
else
else
{
btnModify( evPlaySwitchToPause,btnDisabled );
btnModify( evPauseSwitchToPlay,btnReleased );
@ -130,19 +124,13 @@ void mplResize( unsigned int X,unsigned int Y,unsigned int width,unsigned int he
void mplMPlayerInit( int argc,char* argv[], char *envp[] )
{
struct sigaction sa;
mplShMem=calloc( 1,sizeof( mplCommStruct ) );
mplShMem->Balance=50.0f;
mplShMem->StreamType=-1;
memset(&sa, 0, sizeof(sa));
sa.sa_handler = mplMainSigHandler;
sigaction( SIGTYPE,&sa,NULL );
guiIntfStruct.Balance=50.0f;
guiIntfStruct.StreamType=-1;
}
float mplGetPosition( void )
{ // return 0.0 ... 100.0
return mplShMem->Position;
return guiIntfStruct.Position;
}
void mplRelSeek( float s )
@ -157,27 +145,22 @@ void mplAbsSeek( float s )
listItems tmpList;
void ChangeSkin( void )
void ChangeSkin( char * name )
{
int ret;
if ( !strcmp( skinName,gtkShMem->sb.name ) ) return;
#ifdef DEBUG
dbprintf( 1,"[psignal] skin: %s\n",gtkShMem->sb.name );
#endif
// if ( !strcmp( skinName,name ) ) return;
mainVisible=0;
appInitStruct( &tmpList );
skinAppMPlayer=&tmpList;
fntFreeFont();
ret=skinRead( gtkShMem->sb.name );
ret=skinRead( name );
appInitStruct( &tmpList );
skinAppMPlayer=&appMPlayer;
appInitStruct( &appMPlayer );
if ( !ret ) strcpy( skinName,gtkShMem->sb.name );
skinRead( skinName );
if ( ret )
if ( ret ) name=skinName;
if ( skinRead( name ) )
{
mainVisible=1;
return;
@ -187,21 +170,21 @@ void ChangeSkin( void )
{
if ( mplMenuDrawBuffer ) free( mplMenuDrawBuffer );
if ( ( mplMenuDrawBuffer = (unsigned char *)calloc( 1,appMPlayer.menuBase.Bitmap.ImageSize ) ) == NULL )
{ message( False,MSGTR_NEMDB ); return; }
{ mp_msg( MSGT_GPLAYER,MSGL_STATUS,MSGTR_NEMDB ); return; }
wsResizeWindow( &appMPlayer.menuWindow,appMPlayer.menuBase.width,appMPlayer.menuBase.height );
wsResizeImage( &appMPlayer.menuWindow,appMPlayer.menuBase.width,appMPlayer.menuBase.height );
}
if ( appMPlayer.sub.Bitmap.Image ) wsResizeImage( &appMPlayer.subWindow,appMPlayer.sub.Bitmap.Width,appMPlayer.sub.Bitmap.Height );
if ( ( !appMPlayer.subWindow.isFullScreen )&&( !mplShMem->Playing ) )
if ( ( !appMPlayer.subWindow.isFullScreen )&&( !guiIntfStruct.Playing ) )
{
wsResizeWindow( &appMPlayer.subWindow,appMPlayer.sub.width,appMPlayer.sub.height );
wsMoveWindow( &appMPlayer.subWindow,True,appMPlayer.sub.x,appMPlayer.sub.y );
}
}
if ( appMPlayer.sub.Bitmap.Image ) wsConvert( &appMPlayer.subWindow,appMPlayer.sub.Bitmap.Image,appMPlayer.sub.Bitmap.ImageSize );
if ( !mplShMem->Playing )
if ( !guiIntfStruct.Playing )
{
mplSubRender=1;
mplSubRender=1;
wsSetBackgroundRGB( &appMPlayer.subWindow,appMPlayer.subR,appMPlayer.subG,appMPlayer.subB );
wsClearWindow( appMPlayer.subWindow );
wsPostRedisplay( &appMPlayer.subWindow );
@ -209,7 +192,7 @@ void ChangeSkin( void )
if ( mplDrawBuffer ) free( mplDrawBuffer );
if ( ( mplDrawBuffer = (unsigned char *)calloc( 1,appMPlayer.main.Bitmap.ImageSize ) ) == NULL )
{ message( False,MSGTR_NEMDB ); return; }
{ mp_msg( MSGT_GPLAYER,MSGL_STATUS,MSGTR_NEMDB ); return; }
wsVisibleWindow( &appMPlayer.mainWindow,wsHideWindow );
wsResizeWindow( &appMPlayer.mainWindow,appMPlayer.main.width,appMPlayer.main.height );
wsMoveWindow( &appMPlayer.mainWindow,True,appMPlayer.main.x,appMPlayer.main.y );
@ -218,10 +201,10 @@ void ChangeSkin( void )
wsWindowDecoration( &appMPlayer.mainWindow,appMPlayer.mainDecoration );
mainVisible=1; mplMainRender=1; wsPostRedisplay( &appMPlayer.mainWindow );
wsVisibleWindow( &appMPlayer.mainWindow,wsShowWindow );
btnModify( evSetVolume,mplShMem->Volume );
btnModify( evSetBalance,mplShMem->Balance );
btnModify( evSetMoviePosition,mplShMem->Position );
btnModify( evSetVolume,guiIntfStruct.Volume );
btnModify( evSetBalance,guiIntfStruct.Balance );
btnModify( evSetMoviePosition,guiIntfStruct.Position );
btnModify( evFullScreen,!appMPlayer.subWindow.isFullScreen );
}
@ -231,10 +214,12 @@ void mplResizeToMovieSize( unsigned int width,unsigned int height )
{
wsResizeWindow( &appMPlayer.subWindow,width,height );
wsMoveWindow( &appMPlayer.subWindow,True,appMPlayer.sub.x,appMPlayer.sub.y );
}
}
}
void mplSetFileName( char * fname )
{
if ( ( fname )&&( gtkShMem ) ) strcpy( gtkShMem->fs.filename,fname );
if ( !fname ) return;
if ( guiIntfStruct.Filename ) free( guiIntfStruct.Filename );
guiIntfStruct.Filename=strdup( fname );
}

View File

@ -4,99 +4,8 @@
#include "../../config.h"
#include "./psignal.h"
#include "./mplayer.h"
#ifdef USE_DVDREAD
#include "../../libmpdemux/stream.h"
#endif
typedef struct
{
int x;
int y;
int width;
int height;
} mplResizeStruct;
typedef struct
{
int signal;
char module[512];
} mplUnknowErrorStruct;
typedef struct
{
int seek;
int format;
int width;
int height;
char codecdll[128];
} mplVideoStruct;
#ifdef USE_DVDREAD
typedef struct
{
int titles;
int chapters;
int angles;
int current_chapter;
int current_title;
int current_angle;
int nr_of_audio_channels;
stream_language_t audio_streams[32];
int nr_of_subtitles;
stream_language_t subtitles[32];
} mplDVDStruct;
#endif
typedef struct
{
int message;
mplResizeStruct resize;
mplVideoStruct videodata;
mplUnknowErrorStruct error;
#ifdef USE_DVDREAD
mplDVDStruct DVD;
int DVDChanged;
#endif
int Playing;
float Position;
float Volume;
int VolumeChanged;
float Balance;
int Mute;
int Track;
int AudioType;
int StreamType;
int TimeSec;
int LengthInSec;
int FrameDrop;
char Filename[4096];
int FilenameChanged;
char Subtitlename[4096];
int SubtitleChanged;
int SkinChange;
} mplCommStruct;
extern mplCommStruct * mplShMem;
extern char * Filename;
extern int mplParent;
extern int moviex;
extern int moviey;
extern int moviewidth;
extern int movieheight;
extern mplCommStruct * mplShMem;
extern void mplMPlayerInit( int argc,char* argv[], char *envp[] );
extern void mplStop();
@ -118,7 +27,7 @@ extern void mplPlayFork( void );
extern void mplSigHandler( int s );
extern void mplPlayerThread( void );
extern void ChangeSkin( void );
extern void ChangeSkin( char * name );
extern void EventHandling( void );
extern void mplSetFileName( char * fname );

View File

@ -1,234 +0,0 @@
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <signal.h>
#include <unistd.h>
#include <inttypes.h>
#include "widgets.h"
#include "gtk/menu.h"
#include "play.h"
#include "gtk/fs.h"
#include "../app.h"
#include "../../config.h"
#include "../../help_mp.h"
#include "../../libvo/x11_common.h"
#include "../../libmpdemux/stream.h"
#include "../skin/skin.h"
#include "../wm/ws.h"
#include "../error.h"
#include "./mplayer.h"
#define gtkShow( w ) gtkShMem->vs.window=w; gtkSendMessage( evShowWindow );
pid_t mplMPlayerPID = 0;
pid_t mplParentPID = 0;
pid_t gtkPID = 0;
int mplCriticalError = 0;
int gtkIsOk = 0;
void mplErrorHandler( int critical,const char * format, ... )
{
char * p;
va_list ap;
int n;
if ( (p=(char *)malloc( 512 ) ) == NULL ) return;
va_start( ap,format );
n=vsnprintf( p,512,format,ap );
va_end( ap );
mplCriticalError=critical;
gtkMessageBox( GTK_MB_ERROR,p );
}
void gtkSigHandler( int s )
{
if ( s != SIGTYPE ) return;
#ifdef DEBUG
dbprintf( 5,"[psignal] gtk sig handler msg: %d\n",gtkShMem->message );
#endif
switch ( gtkShMem->message )
{
case evHideWindow:
switch ( gtkShMem->vs.window )
{
case evPlayList: gtk_widget_hide( PlayList ); gtkVisiblePlayList=0; break;
case evSkinBrowser: gtk_widget_hide( SkinBrowser ); gtkVisibleSkinBrowser=0; break;
case evLoad: gtk_widget_hide( FileSelect ); gtkVisibleFileSelect=0; break;
}
break;
case evSkinBrowser:
if ( gtkVisibleSkinBrowser ) gtk_widget_hide( SkinBrowser );
gtkClearList( SkinList );
if ( gtkFillSkinList( sbMPlayerPrefixDir )&&gtkFillSkinList( sbMPlayerDirInHome ) )
{
gtkSetDefaultToCList( SkinList,skinName );
gtk_widget_show( SkinBrowser );
gtkVisibleSkinBrowser=1;
gtkShow( evSkinBrowser );
}
break;
case evPreferences:
if ( gtkVisibleOptions ) gtk_widget_hide( Options );
gtk_widget_show( Options );
gtkVisibleOptions=1;
break;
case evPlayList:
if ( gtkVisiblePlayList ) gtk_widget_hide( PlayList );
gtk_widget_show( PlayList );
gtkVisiblePlayList=1;
gtkShow( evPlayList );
break;
case evLoad:
ShowFileSelect( fsVideoSelector );
#if 0
if ( gtkVisibleFileSelect ) gtk_widget_hide( FileSelect );
gtk_widget_show( FileSelect );
gtkVisibleFileSelect=1;
gtkShow( evPlay );
#endif
break;
case evFirstLoad:
ShowFileSelect( fsVideoSelector );
#if 0
if ( gtkVisibleFileSelect ) gtk_widget_hide( FileSelect );
gtk_widget_show( FileSelect );
gtkVisibleFileSelect=1;
gtkShow( evFirstLoad );
#endif
break;
case evLoadSubtitle:
ShowFileSelect( fsSubtitleSelector );
// gtkShow( evPlay );
break;
case evMessageBox:
gtk_label_set_text( GTK_LABEL( gtkMessageBoxText ),gtkShMem->mb.str );
if( gtkVisibleMessageBox ) gtk_widget_hide( MessageBox );
switch( gtkShMem->mb.type)
{
case GTK_MB_FATAL:
gtk_window_set_title( GTK_WINDOW( MessageBox ),MSGTR_MSGBOX_LABEL_FatalError );
gtk_widget_hide( WarningPixmap );
gtk_widget_show( ErrorPixmap );
break;
case GTK_MB_ERROR:
gtk_window_set_title( GTK_WINDOW( MessageBox ),MSGTR_MSGBOX_LABEL_Error );
gtk_widget_hide( WarningPixmap );
gtk_widget_show( ErrorPixmap );
break;
case GTK_MB_WARNING:
gtk_window_set_title( GTK_WINDOW( MessageBox ),MSGTR_MSGBOX_LABEL_Warning );
gtk_widget_show( WarningPixmap );
gtk_widget_hide( ErrorPixmap );
break;
}
gtk_widget_show( MessageBox );
gtkVisibleMessageBox=1;
break;
case evAbout:
if ( gtkVisibleAboutBox ) gtk_widget_hide( AboutBox );
gtk_widget_show( AboutBox );
gtkVisibleAboutBox=1;
break;
case evExit:
gtk_main_quit();
break;
case evShowPopUpMenu:
gtkShMem->popupmenu=evNone; gtkShMem->popupmenuparam=0;
if ( gtkShMem->visiblepopupmenu ) gtk_widget_hide_on_delete( PopUpMenu );
PopUpMenu=create_PopUpMenu();
gtk_menu_popup( GTK_MENU( PopUpMenu ),NULL,NULL,NULL,NULL,0,0 );
gtkShMem->visiblepopupmenu=1;
break;
case evHidePopUpMenu:
if ( gtkShMem->visiblepopupmenu ) gtk_widget_hide_on_delete( PopUpMenu );
gtkShMem->visiblepopupmenu=0;
break;
}
gtkShMem->message=0;
}
void mplMainSigHandler( int s )
{
if ( s != SIGTYPE ) return;
// #ifdef DEBUG
// if ( gtkShMem->message ) dbprintf( 5,"[psignal] main sig handler gtk msg: %d\n",gtkShMem->message );
// if ( mplShMem->message ) dbprintf( 5,"[psignal] main sig handler mpl msg: %d\n",mplShMem->message );
// #endif
switch ( gtkShMem->message )
{
case evGtkIsOk:
#ifdef DEBUG
dbprintf( 5,"[psignal] gtk is ok.\n" );
#endif
gtkIsOk=True;
break;
case evShowWindow:
switch ( gtkShMem->vs.window )
{
case evPlayList: gtkVisiblePlayList=1; break;
case evLoad: gtkVisibleFileSelect=1; break;
case evSkinBrowser: gtkVisibleSkinBrowser=1; break;
}
break;
case evHideWindow:
switch ( gtkShMem->vs.window )
{
case evPlayList:
btnModify( evPlayList,btnReleased ); gtkVisiblePlayList=0;
mplMainRender=1; wsPostRedisplay( &appMPlayer.mainWindow );
break;
case evSkinBrowser: gtkVisibleSkinBrowser=0; break;
case evLoad: gtkVisibleFileSelect=0; break;
}
break;
case evSkinBrowser: mplShMem->SkinChange=1; break;
case evFileLoaded:
printf("*** gtkShMem->fs.dir == '%s' \n",gtkShMem->fs.dir);
printf("*** gtkShMem->fs.filename == '%s' \n",gtkShMem->fs.filename);
strcpy( mplShMem->Filename,gtkShMem->fs.dir );
strcat( mplShMem->Filename,"/" );
strcat( mplShMem->Filename,gtkShMem->fs.filename );
printf( "%%%%%%%% Playing file: %s\n",mplShMem->Filename );
mplShMem->FilenameChanged=1;
mplShMem->StreamType=STREAMTYPE_FILE;
if ( mplMainAutoPlay ) mplGeneralTimer=1;
break;
case evSubtitleLoaded:
printf("*** gtkShMem->fs.subtitlename == '%s' \n",gtkShMem->fs.subtitlename );
strcpy( mplShMem->Subtitlename,gtkShMem->fs.subtitlename );
mplShMem->SubtitleChanged=1;
break;
case evShowPopUpMenu:
fprintf( stderr,"[psignal] PopUpMenu: %d param: %d\n",gtkShMem->popupmenu,gtkShMem->popupmenuparam );
mplMiddleMenu=1; mplGeneralTimer=1;
break;
case evMessageBox:
if ( mplCriticalError )
{ gtkSendMessage( evExit ); exit( 1 ); }
mplCriticalError=0;
break;
}
// switch( mplShMem->message )
// {
// }
gtkShMem->message=0;
// mplShMem->message=0;
}
void gtkSendMessage( int msg )
{
if ( !gtkIsOk ) return;
gtkShMem->message=msg;
kill( gtkPID,SIGTYPE );
}

View File

@ -1,69 +0,0 @@
#ifndef __GUI_SIGNAL
#define __GUI_SIGNAL
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <signal.h>
#define mplNoneEvent 0
#define mplResizeEvent 1
#define mplQuit 2
#define mplPauseEvent 3
#define mplEndOfFile 4
#define mplExposeEvent 5
#define mplSetVideoData 6
#define mplAudioError 7
#define mplUnknowError 8
#define mplSeekEvent 9
#define mplUnknowFileType 10
#define mplCodecConfNotFound 11
#define mplErrorDVDKeyProcess 12
#define mplErrorDVDAuth 13
#define mplErrorAVINI 14
#define mplAVIErrorMissingVideoStream 15
#define mplASFErrorMissingVideoStream 16
#define mplMPEGErrorSeqHeaderSearch 17
#define mplErrorShMemAlloc 18
#define mplMPEGErrorCannotReadSeqHeader 19
#define mplMPEGErrorBadSeqHeader 20
#define mplMPEGErrorCannotReadSeqHeaderExt 21
#define mplMPEGErrorBadSeqHeaderExt 22
#define mplCantFindCodecForVideoFormat 23
#define mplIncompatibleVideoOutDevice 24
#define mplCompileWithoutDSSupport 25
#define mplDSCodecNotFound 26
#define mplCantInitVideoDriver 27
#define mplIncAudioBufferDelay 28
#define mplDecAudioBufferDelay 29
#ifndef SIGTYPE
#ifdef SIGUSR2
#define SIGTYPE SIGUSR2
//#warning should we use SIGUSR1 or SIGUSR2 on linux, bsd, ... too?
#else
#ifdef __bsdi__
#define _NSIG NSIG
#endif
#define SIGTYPE _NSIG - 1
#endif
#endif
extern int gtkIsOk;
extern pid_t mplMPlayerPID;
extern pid_t mplParentPID;
extern pid_t gtkPID;
extern void gtkSigHandler( int s );
extern void mplPlayerSigHandler( int s );
extern void mplMainSigHandler( int s );
extern void gtkSendMessage( int msg );
extern void mplErrorHandler( int critical,const char * format, ... );
#endif

View File

@ -11,7 +11,7 @@ void mplSubDraw( wsParamDisplay )
if ( !appMPlayer.subWindow.Mapped ||
appMPlayer.subWindow.Visible == wsWindowNotVisible ) return;
if ( mplShMem->Playing ) mplSubRender=0;
if ( guiIntfStruct.Playing ) mplSubRender=0;
if ( mplSubRender )
{
@ -28,18 +28,15 @@ void mplSubMouseHandle( int Button,int X,int Y,int RX,int RY )
mplMouseTimer=mplMouseTimerConst;
wsVisibleMouse( &appMPlayer.subWindow,wsShowMouseCursor );
switch( Button )
{
case wsPMMouseButton:
#ifdef USE_DVDREAD
memcpy( &gtkShMem->DVD,&mplShMem->DVD,sizeof( mplDVDStruct ) );
#endif
gtkSendMessage( evShowPopUpMenu );
gtkShow( evShowPopUpMenu,NULL );
break;
case wsPRMouseButton:
if ( gtkShMem->visiblepopupmenu ) gtkSendMessage( evHidePopUpMenu );
gtkShow( evHidePopUpMenu,NULL );
mplShowMenu( RX,RY );
msButton=wsPRMouseButton;
break;
@ -50,13 +47,13 @@ void mplSubMouseHandle( int Button,int X,int Y,int RX,int RY )
// ---
case wsPLMouseButton:
if ( appMPlayer.subWindow.isFullScreen )
{
{
if( ++SubVisible%2 ) wsMoveTopWindow( &appMPlayer.mainWindow );
else wsMoveTopWindow( &appMPlayer.subWindow );
mplSubMoved=1;
break;
}
if ( gtkShMem->visiblepopupmenu ) gtkSendMessage( evHidePopUpMenu );
break;
}
gtkShow( evHidePopUpMenu,NULL );
sx=X; sy=Y;
msButton=wsPLMouseButton;
mplSubMoved=0;

View File

@ -17,12 +17,14 @@
#include "widgets.h"
#include "./mplayer.h"
#include "psignal.h"
#include "../events.h"
#include "gtk/menu.h"
#include "play.h"
#include "gtk/fs.h"
#include "../../config.h"
#include "../../help_mp.h"
#include "../error.h"
GtkWidget * SkinBrowser;
GtkWidget * PlayList;
@ -36,14 +38,8 @@ GtkWidget * MessageBox;
GtkWidget * WarningPixmap;
GtkWidget * ErrorPixmap;
int gtkVisibleSkinBrowser = 0;
int gtkVisiblePlayList = 0;
int gtkVisibleFileSelect = 0;
int gtkVisibleMessageBox = 0;
int gtkVisibleAboutBox = 0;
int gtkVisibleOptions = 0;
gtkCommStruct * gtkShMem;
int gtkPopupMenu = 0;
int gtkPopupMenuParam = 0;
#include "gtk/sb.h"
#include "gtk/pl.h"
@ -64,65 +60,18 @@ void widgetsCreate( void )
// PopUpMenu=create_PopUpMenu();
}
// --- forked function
extern char *mDisplayName;
static void gtkThreadProc( int argc,char * argv[] )
{
struct sigaction sa;
#ifdef HAVE_RTC
setuid( getuid() ); // strongly test, please check this.
#endif
gtk_set_locale();
{
char tmp[128];
sprintf( tmp,"--display=%s",mDisplayName );
argv[argc++]=strdup( tmp );
gtk_init( &argc,&argv );
}
gdk_set_use_xshm( TRUE );
printf( "[gtk] display: %s\n",gdk_get_display() );
widgetsCreate();
gtkPID=getppid();
memset(&sa, 0, sizeof(sa));
sa.sa_handler = gtkSigHandler;
sigaction( SIGTYPE, &sa, NULL );
gtkIsOk=True;
gtkSendMessage( evGtkIsOk );
gtk_main();
printf( "[gtk] exit.\n" );
exit( 0 );
}
// --- init & close gtk
void gtkInit( int argc,char* argv[], char *envp[] )
{
gtkShMem=shmem_alloc( sizeof( gtkCommStruct ) );
if ( ( gtkPID = fork() ) == 0 ) gtkThreadProc( argc,argv );
gtk_set_locale();
gtk_init( &argc,&argv );
gdk_set_use_xshm( TRUE );
widgetsCreate();
}
void gtkDone( void ){
gtkSendMessage(evExit);
usleep(50000); // 50ms should be enough!
printf("gtk killed...\n");
kill( gtkPID,SIGKILL );
}
void gtkMessageBox( int type,gchar * str )
void gtkDone( void )
{
if ( !gtkIsOk ) return;
gtkShMem->mb.type=type;
strcpy( gtkShMem->mb.str,str );
gtkSendMessage( evMessageBox );
}
void gtkClearList( GtkWidget * list )
@ -146,3 +95,82 @@ void gtkSetDefaultToCList( GtkWidget * list,char * item )
if ( ( i=gtkFindCList( list,item ) ) > -1 ) gtk_clist_select_row( GTK_CLIST( list ),i,0 );
}
void gtkEventHandling( void )
{
int i;
for( i=0;i < 25;i++ ) gtk_main_iteration_do( 0 );
}
// --- funcs
void gtkMessageBox( int type,gchar * str )
{
gtk_label_set_text( GTK_LABEL( gtkMessageBoxText ),str );
gtk_widget_hide( MessageBox );
switch( type)
{
case GTK_MB_FATAL:
gtk_window_set_title( GTK_WINDOW( MessageBox ),MSGTR_MSGBOX_LABEL_FatalError );
gtk_widget_hide( WarningPixmap );
gtk_widget_show( ErrorPixmap );
break;
case GTK_MB_ERROR:
gtk_window_set_title( GTK_WINDOW( MessageBox ),MSGTR_MSGBOX_LABEL_Error );
gtk_widget_hide( WarningPixmap );
gtk_widget_show( ErrorPixmap );
break;
case GTK_MB_WARNING:
gtk_window_set_title( GTK_WINDOW( MessageBox ),MSGTR_MSGBOX_LABEL_Warning );
gtk_widget_show( WarningPixmap );
gtk_widget_hide( ErrorPixmap );
break;
}
gtk_widget_show( MessageBox );
}
void gtkShow( int type,char * param )
{
switch( type )
{
case evSkinBrowser:
gtk_widget_hide( SkinBrowser );
gtkClearList( SkinList );
if ( gtkFillSkinList( sbMPlayerPrefixDir )&&gtkFillSkinList( sbMPlayerDirInHome ) )
{
gtkSetDefaultToCList( SkinList,param );
gtk_widget_show( SkinBrowser );
}
break;
case evPreferences:
gtk_widget_hide( Options );
gtk_widget_show( Options );
break;
case evPlayList:
gtk_widget_hide( PlayList );
gtk_widget_show( PlayList );
break;
case evLoad:
ShowFileSelect( fsVideoSelector );
break;
case evFirstLoad:
ShowFileSelect( fsVideoSelector );
break;
case evLoadSubtitle:
ShowFileSelect( fsSubtitleSelector );
break;
case evAbout:
gtk_widget_hide( AboutBox );
gtk_widget_show( AboutBox );
break;
case evShowPopUpMenu:
gtkPopupMenu=evNone;
gtkPopupMenuParam=0;
gtk_widget_hide_on_delete( PopUpMenu );
PopUpMenu=create_PopUpMenu();
gtk_menu_popup( GTK_MENU( PopUpMenu ),NULL,NULL,NULL,NULL,0,0 );
break;
case evHidePopUpMenu:
gtk_widget_hide_on_delete( PopUpMenu );
break;
}
}

View File

@ -2,12 +2,16 @@
#ifndef __MY_WIDGET
#define __MY_WIDGET
#include <stdio.h>
#include <stdlib.h>
#include <gdk/gdkkeysyms.h>
#include <gtk/gtk.h>
#include "../../config.h"
#include "../../linux/shmem.h"
#include "play.h"
#include "mplayer.h"
#include "../interface.h"
#define GTK_MB_SIMPLE 0
#define GTK_MB_MODAL 1
@ -15,59 +19,6 @@
#define GTK_MB_ERROR 4
#define GTK_MB_WARNING 8
typedef struct
{
char dir[ 2048 ];
char filename[ 2048 ];
char subtitlename[ 4096 ];
char otherfilename[ 4096 ];
} gtkFileSelectorStruct;
typedef struct
{
int sx;
int sy;
int tsx;
int tsy;
int type;
char str[512];
} gtkMessageBoxStruct;
typedef struct
{
char name[128];
} gtkSkinStruct;
typedef struct
{
int window;
} gtkVisibleStruct;
typedef struct
{
int i;
} gtkOptionsStruct;
typedef struct
{
int message;
gtkFileSelectorStruct fs;
gtkMessageBoxStruct mb;
gtkSkinStruct sb;
gtkVisibleStruct vs;
gtkOptionsStruct op;
#ifdef USE_DVDREAD
mplDVDStruct DVD;
#endif
int popupmenu;
int popupmenuparam;
int visiblepopupmenu;
} gtkCommStruct;
extern gtkCommStruct * gtkShMem;
extern GtkWidget * SkinBrowser;
extern GtkWidget * PlayList;
extern GtkWidget * FileSelect;
@ -83,12 +34,8 @@ extern GtkWidget * ErrorPixmap;
extern GtkWidget * SkinList;
extern GtkWidget * gtkMessageBoxText;
extern int gtkVisibleSkinBrowser;
extern int gtkVisiblePlayList;
extern int gtkVisibleFileSelect;
extern int gtkVisibleMessageBox;
extern int gtkVisibleAboutBox;
extern int gtkVisibleOptions;
extern int gtkPopupMenu;
extern int gtkPopupMenuParam;
extern char * sbMPlayerDirInHome;
extern char * sbMPlayerPrefixDir;
@ -97,10 +44,15 @@ extern void widgetsCreate( void );
extern void gtkInit( int argc,char* argv[], char *envp[] );
extern void gtkDone( void );
extern void gtkMessageBox( int type,gchar * str );
extern int gtkFillSkinList( gchar * dir );
extern void gtkClearList( GtkWidget * list );
extern void gtkSetDefaultToCList( GtkWidget * list,char * item );
extern int gtkFindCList( GtkWidget * list,char * item );
extern void gtkEventHandling( void );
extern void gtkShow( int type,char * param );
extern void gtkMessageBox( int type,gchar * str );
#endif

View File

@ -7,7 +7,7 @@
#include "skin.h"
#include "font.h"
#include "cut.h"
#include "../error.h"
#include "../../mp_msg.h"
int items;
@ -44,8 +44,7 @@ int fntRead( char * path,char * fname,int id )
unsigned char * ptmp;
unsigned char command[32];
unsigned char param[256];
int c,i;
int linenumber = 0;
int c,linenumber = 0;
strcpy( tmp,path ); strcat( tmp,fname ); strcat( tmp,".fnt" );
if ( ( f=fopen( tmp,"rt" ) ) == NULL ) return -1;
@ -55,7 +54,7 @@ int fntRead( char * path,char * fname,int id )
c=tmp[ strlen( tmp ) - 1 ]; if ( ( c == '\n' )||( c == '\r' ) ) tmp[ strlen( tmp ) - 1 ]=0;
c=tmp[ strlen( tmp ) - 1 ]; if ( ( c == '\n' )||( c == '\r' ) ) tmp[ strlen( tmp ) - 1 ]=0;
for ( c=0;c < strlen( tmp );c++ )
for ( c=0;c < (int)strlen( tmp );c++ )
if ( tmp[c] == ';' )
{
tmp[c]=0;
@ -76,18 +75,14 @@ int fntRead( char * path,char * fname,int id )
cutItem( param,tmp,',',1 ); Fonts[id]->Fnt[i].y=atoi( tmp );
cutItem( param,tmp,',',2 ); Fonts[id]->Fnt[i].sx=atoi( tmp );
cutItem( param,tmp,',',3 ); Fonts[id]->Fnt[i].sy=atoi( tmp );
#ifdef DEBUG
dbprintf( 3,"[font] char: '%s' params: %d,%d %dx%d\n",command,Fonts[id]->Fnt[i].x,Fonts[id]->Fnt[i].y,Fonts[id]->Fnt[i].sx,Fonts[id]->Fnt[i].sy );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[font] char: '%s' params: %d,%d %dx%d\n",command,Fonts[id]->Fnt[i].x,Fonts[id]->Fnt[i].y,Fonts[id]->Fnt[i].sx,Fonts[id]->Fnt[i].sy );
}
else
{
if ( !strcmp( command,"image" ) )
{
strcpy( tmp,path ); strcat( tmp,param );
#ifdef DEBUG
dbprintf( 3,"[font] font imagefile: %s\n",tmp );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[font] font imagefile: %s\n",tmp );
if ( skinBPRead( tmp,&Fonts[id]->Bitmap ) ) return -2;
}
}
@ -109,7 +104,7 @@ int fntTextWidth( int id,char * str )
int size = 0;
int i;
if ( !Fonts[id] ) return 0;
for ( i=0;i < strlen( str );i++ )
for ( i=0;i < (int)strlen( str );i++ )
if ( Fonts[id]->Fnt[ (int)str[i] ].sx != -1 ) size+=Fonts[id]->Fnt[ (int)str[i] ].sx;
return size;
}
@ -118,7 +113,7 @@ int fntTextHeight( int id,char * str )
{
int max = 0,i;
if ( !Fonts[id] ) return 0;
for ( i=0;i < strlen( str );i++ )
for ( i=0;i < (int)strlen( str );i++ )
if ( Fonts[id]->Fnt[ (int)str[i] ].sy > max ) max=Fonts[id]->Fnt[ (int)str[i] ].sy;
return max;
}
@ -150,7 +145,7 @@ txSample * fntRender( int id,int px,int sx,char * fmt,... )
obuf=(unsigned long *)tmp->Image;
ibuf=(unsigned long *)Fonts[id]->Bitmap.Image;
for ( i=0;i < strlen( p );i++ )
for ( i=0;i < (int)strlen( p );i++ )
{
int c = (int)p[i];
if ( Fonts[id]->Fnt[c].x == -1 ) c=32;

View File

@ -1,10 +1,9 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "cut.h"
#include "error.h"
#include "font.h"
#include "../app.h"
@ -31,14 +30,15 @@ void ERRORMESSAGE( const char * format, ... )
vsnprintf( p,512,format,ap );
va_end( ap );
// message( False,"[skin] error in skin config file on line %d: %s",linenumber,p );
message( False,MSGTR_SKIN_ERRORMESSAGE,linenumber,p );
// message( False,MSGTR_SKIN_ERRORMESSAGE,linenumber,p );
mp_msg( MSGT_GPLAYER,MSGL_STATUS,MSGTR_SKIN_ERRORMESSAGE,linenumber,p );
}
#define CHECKDEFLIST( str ) \
{ \
if ( defList == NULL ) \
{ \
message( False,MSGTR_SKIN_WARNING1,linenumber,str ); \
mp_msg( MSGT_GPLAYER,MSGL_STATUS,MSGTR_SKIN_WARNING1,linenumber,str ); \
return 1; \
} \
}
@ -47,7 +47,7 @@ void ERRORMESSAGE( const char * format, ... )
{ \
if ( !strlen( winList ) ) \
{ \
message( False,MSGTR_SKIN_WARNING2,linenumber,str ); \
mp_msg( MSGT_GPLAYER,MSGL_STATUS,MSGTR_SKIN_WARNING2,linenumber,str ); \
return 1; \
} \
}
@ -55,7 +55,7 @@ void ERRORMESSAGE( const char * format, ... )
char * strlower( char * in )
{
int i;
for( i=0;i<strlen( in );i++ ) in[i]=( in[i] >= 'A' ? ( in[i] <= 'Z' ? in[i]+='A' : in[i] ) : in[i] );
for( i=0;i<(int)strlen( in );i++ ) in[i]=( in[i] >= 'A' ? ( in[i] <= 'Z' ? in[i]+='A' : in[i] ) : in[i] );
return in;
}
@ -81,9 +81,7 @@ int __section( char * in )
strlower( in );
defList=NULL;
if ( !strcmp( in,"movieplayer" ) ) defList=skinAppMPlayer;
#ifdef DEBUG
dbprintf( 3,"\n[skin] sectionname: %s\n",in );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"\n[skin] sectionname: %s\n",in );
return 0;
}
@ -91,9 +89,7 @@ int __end( char * in )
{
if ( strlen( winList ) ) winList[0]=0;
else defList=NULL;
#ifdef DEBUG
dbprintf( 3,"\n[skin] end section\n" );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"\n[skin] end section\n" );
return 0;
}
@ -103,9 +99,7 @@ int __window( char * in )
strlower( in );
strcpy( winList,in );
#ifdef DEBUG
dbprintf( 3,"\n[skin] window: %s\n",winList );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"\n[skin] window: %s\n",winList );
return 0;
}
@ -114,7 +108,7 @@ int __base( char * in )
unsigned char fname[512];
unsigned char tmp[512];
int x,y;
int sx=0,sy=0;
int sx=0,sy=0;
CHECKDEFLIST( "base" );
CHECKWINLIST( "base" );
@ -124,9 +118,7 @@ int __base( char * in )
y=cutItemToInt( in,',',2 );
sx=cutItemToInt( in,',',3 );
sy=cutItemToInt( in,',',4 );
#ifdef DEBUG
dbprintf( 3,"\n[skin] base: %s x: %d y: %d ( %dx%d )\n",fname,x,y,sx,sy );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"\n[skin] base: %s x: %d y: %d ( %dx%d )\n",fname,x,y,sx,sy );
if ( !strcmp( winList,"main" ) )
{
defList->main.x=x;
@ -138,7 +130,7 @@ int __base( char * in )
defList->main.height=defList->main.Bitmap.Height;
#ifdef HAVE_XSHAPE
Convert32to1( &defList->main.Bitmap,&defList->main.Mask,0x00ff00ff );
#if 0
#if 0
{
if ( defList->main.Mask.Image != NULL )
{
@ -148,15 +140,11 @@ int __base( char * in )
}
}
#endif
#ifdef DEBUG
dbprintf( 3,"[skin] mask: %dx%d\n",defList->main.Mask.Width,defList->main.Mask.Height );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] mask: %dx%d\n",defList->main.Mask.Width,defList->main.Mask.Height );
#else
defList->main.Mask.Image=NULL;
#endif
#ifdef DEBUG
dbprintf( 3,"[skin] width: %d height: %d\n",defList->main.width,defList->main.height );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] width: %d height: %d\n",defList->main.width,defList->main.height );
}
if ( !strcmp( winList,"sub" ) )
{
@ -172,9 +160,7 @@ int __base( char * in )
defList->sub.width=sx;
defList->sub.height=sy;
}
#ifdef DEBUG
dbprintf( 3,"[skin] %d,%d %dx%d\n",defList->sub.x,defList->sub.y,defList->sub.width,defList->sub.height );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] %d,%d %dx%d\n",defList->sub.x,defList->sub.y,defList->sub.width,defList->sub.height );
}
/*
if ( !strcmp( winList,"eq" ) )
@ -186,9 +172,7 @@ int __base( char * in )
if ( skinBPRead( tmp,&defList->eq.Bitmap ) ) return 1;
defList->eq.width=defList->eq.Bitmap.Width;
defList->eq.height=defList->eq.Bitmap.Height;
#ifdef DEBUG
dbprintf( 3,"[skin] width: %d height: %d\n",defList->eq.width,defList->eq.height );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] width: %d height: %d\n",defList->eq.width,defList->eq.height );
}
*/
if ( !strcmp( winList,"menu" ) )
@ -198,9 +182,7 @@ int __base( char * in )
if ( skinBPRead( tmp,&defList->menuBase.Bitmap ) ) return 1;
defList->menuBase.width=defList->menuBase.Bitmap.Width;
defList->menuBase.height=defList->menuBase.Bitmap.Height;
#ifdef DEBUG
dbprintf( 3,"[skin] width: %d height: %d\n",defList->menuBase.width,defList->menuBase.height );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] width: %d height: %d\n",defList->menuBase.width,defList->menuBase.height );
}
return 0;
}
@ -212,12 +194,10 @@ int __background( char * in )
if ( !strcmp( winList,"sub" ) )
{
defList->subR=cutItemToInt( in,',',0 );
defList->subR=cutItemToInt( in,',',0 );
defList->subG=cutItemToInt( in,',',1 );
defList->subB=cutItemToInt( in,',',2 );
#ifdef DEBUG
dbprintf( 3,"\n[skin] subwindow background color is #%x%x%x.\n",defList->subR,defList->subG,defList->subB );
#endif
defList->subB=cutItemToInt( in,',',2 );
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"\n[skin] subwindow background color is #%x%x%x.\n",defList->subR,defList->subG,defList->subB );
}
return 0;
}
@ -227,7 +207,7 @@ int __button( char * in )
unsigned char fname[512];
unsigned char tmp[512];
int x,y,sx,sy;
unsigned char msg[32];
char msg[32];
CHECKDEFLIST( "button" );
CHECKWINLIST( "button" );
@ -245,10 +225,8 @@ int __button( char * in )
defList->Items[ defList->NumberOfItems ].y=y;
defList->Items[ defList->NumberOfItems ].width=sx;
defList->Items[ defList->NumberOfItems ].height=sy;
#ifdef DEBUG
dbprintf( 3,"\n[skin] button: fname: %s\n",fname );
dbprintf( 3,"[skin] x: %d y: %d sx: %d sy: %d\n",x,y,sx,sy );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"\n[skin] button: fname: %s\n",fname );
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] x: %d y: %d sx: %d sy: %d\n",x,y,sx,sy );
if ( ( defList->Items[ defList->NumberOfItems ].msg=appFindMessage( msg ) ) == -1 )
{ ERRORMESSAGE( MSGTR_SKIN_BITMAP_UnknownMessage,msg ); return 1; }
@ -256,10 +234,7 @@ int __button( char * in )
if ( defList->Items[ defList->NumberOfItems ].msg == evPauseSwitchToPlay ) defList->Items[ defList->NumberOfItems ].pressed=btnDisabled;
defList->Items[ defList->NumberOfItems ].tmp=1;
#ifdef DEBUG
dbprintf( 3,"[skin] message: %d\n",
defList->Items[ defList->NumberOfItems ].msg );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] message: %d\n",defList->Items[ defList->NumberOfItems ].msg );
defList->Items[ defList->NumberOfItems ].Bitmap.Image=NULL;
if ( strcmp( fname,"NULL" ) )
@ -281,15 +256,11 @@ int __selected( char * in )
cutItem( in,fname,',',0 );
defList->menuSelected.type=itBase;
strcpy( tmp,path ); strcat( tmp,fname );
#ifdef DEBUG
dbprintf( 3,"\n[skin] selected: %s\n",fname );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"\n[skin] selected: %s\n",fname );
if ( skinBPRead( tmp,&defList->menuSelected.Bitmap ) ) return 1;
defList->menuSelected.width=defList->menuSelected.Bitmap.Width;
defList->menuSelected.height=defList->menuSelected.Bitmap.Height;
#ifdef DEBUG
dbprintf( 3,"[skin] width: %d height: %d\n",defList->menuSelected.width,defList->menuSelected.height );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] width: %d height: %d\n",defList->menuSelected.width,defList->menuSelected.height );
return 0;
}
@ -313,17 +284,13 @@ int __menu( char * in )
defList->MenuItems[ defList->NumberOfMenuItems ].width=sx;
defList->MenuItems[ defList->NumberOfMenuItems ].height=sy;
#ifdef DEBUG
dbprintf( 3,"\n[skin] menuitem: %d\n",defList->NumberOfMenuItems );
dbprintf( 3,"[skin] x: %d y: %d sx: %d sy: %d\n",x,y,sx,sy );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"\n[skin] menuitem: %d\n",defList->NumberOfMenuItems );
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] x: %d y: %d sx: %d sy: %d\n",x,y,sx,sy );
if ( ( defList->MenuItems[ defList->NumberOfMenuItems ].msg=msg ) == -1 )
ERRORMESSAGE( MSGTR_SKIN_BITMAP_UnknownMessage,tmp );
#ifdef DEBUG
dbprintf( 3,"[skin] message: %d\n",defList->Items[ defList->NumberOfItems ].msg );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] message: %d\n",defList->Items[ defList->NumberOfItems ].msg );
defList->MenuItems[ defList->NumberOfMenuItems ].Bitmap.Image=NULL;
return 0;
@ -352,14 +319,12 @@ int __hpotmeter( char * in )
sy=cutItemToInt( in,',',9 );
cutItem( in,tmp,',',10 ); msg=appFindMessage( tmp );
#ifdef DEBUG
dbprintf( 3,"\n[skin] hpotmeter: pointer filename: '%s'\n",pfname );
dbprintf( 3, "[skin] pointer size is %dx%d\n",psx,psy );
dbprintf( 3, "[skin] phasebitmaps filename: '%s'\n",phfname );
dbprintf( 3, "[skin] position: %d,%d %dx%d\n",x,y,sx,sy );
dbprintf( 3, "[skin] default value: %d\n",d );
dbprintf( 3, "[skin] message: %d\n",msg );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"\n[skin] hpotmeter: pointer filename: '%s'\n",pfname );
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] pointer size is %dx%d\n",psx,psy );
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] phasebitmaps filename: '%s'\n",phfname );
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] position: %d,%d %dx%d\n",x,y,sx,sy );
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] default value: %d\n",d );
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] message: %d\n",msg );
defList->NumberOfItems++;
item=&defList->Items[ defList->NumberOfItems ];
@ -407,13 +372,11 @@ int __potmeter( char * in )
sy=cutItemToInt( in,',',6 );
cutItem( in,tmp,',',7 ); msg=appFindMessage( tmp );
#ifdef DEBUG
dbprintf( 3,"\n[skin] potmeter: phases filename: '%s'\n",phfname );
dbprintf( 3, "[skin] position: %d,%d %dx%d\n",x,y,sx,sy );
dbprintf( 3, "[skin] phases: %d\n",ph );
dbprintf( 3, "[skin] default value: %d\n",d );
dbprintf( 3, "[skin] message: %d\n",msg );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"\n[skin] potmeter: phases filename: '%s'\n",phfname );
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] position: %d,%d %dx%d\n",x,y,sx,sy );
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] phases: %d\n",ph );
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] default value: %d\n",d );
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] message: %d\n",msg );
defList->NumberOfItems++;
item=&defList->Items[ defList->NumberOfItems ];
@ -445,10 +408,8 @@ int __font( char * in )
cutItem( in,name,',',0 );
cutItem( in,id,',',1 );
#ifdef DEBUG
dbprintf( 3,"\n[skin] font\n" );
dbprintf( 3, "[skin] name: %s\n",name );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"\n[skin] font\n" );
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] name: %s\n",name );
defList->NumberOfItems++;
item=&defList->Items[ defList->NumberOfItems ];
@ -460,9 +421,7 @@ int __font( char * in )
case -2: ERRORMESSAGE( MSGTR_SKIN_FONT_TooManyFontsDeclared ); return 1;
}
#ifdef DEBUG
dbprintf( 3, "[skin] id: %s ( %d )\n",id,item->fontid );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] id: %s ( %d )\n",id,item->fontid );
switch ( fntRead( path,name,item->fontid ) )
{
@ -483,9 +442,7 @@ int __slabel( char * in )
CHECKDEFLIST( "slabel" );
CHECKWINLIST( "slabel" );
#ifdef DEBUG
dbprintf( 3,"\n[skin] slabel\n" );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"\n[skin] slabel\n" );
x=cutItemToInt( in,',',0 );
y=cutItemToInt( in,',',1 );
@ -493,11 +450,9 @@ int __slabel( char * in )
if ( id < 0 ) { ERRORMESSAGE( MSGTR_SKIN_FONT_NonExistentFontID,sid ); return 1; }
cutItem( in,tmp,',',3 ); cutItem( tmp,tmp,'"',1 );
#ifdef DEBUG
dbprintf( 3, "[skin] pos: %d,%d\n",x,y );
dbprintf( 3, "[skin] id: %s ( %d )\n",sid,id );
dbprintf( 3, "[skin] str: '%s'\n",tmp );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] pos: %d,%d\n",x,y );
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] id: %s ( %d )\n",sid,id );
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] str: '%s'\n",tmp );
defList->NumberOfItems++;
item=&defList->Items[ defList->NumberOfItems ];
@ -521,23 +476,19 @@ int __dlabel( char * in )
CHECKDEFLIST( "dlabel" );
CHECKWINLIST( "dlabel" );
#ifdef DEBUG
dbprintf( 3,"\n[skin] dlabel\n" );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"\n[skin] dlabel\n" );
x=cutItemToInt( in,',',0 );
y=cutItemToInt( in,',',1 );
sx=cutItemToInt( in,',',2 );
a=cutItemToInt( in,',',3 );
a=cutItemToInt( in,',',3 );
cutItem( in,sid,',',4 ); id=fntFindID( sid );
if ( id < 0 ) { ERRORMESSAGE( MSGTR_SKIN_FONT_NonExistentFontID,sid ); return 1; }
cutItem( in,tmp,',',5 ); cutItem( tmp,tmp,'"',1 );
#ifdef DEBUG
dbprintf( 3,"[skin] pos: %d,%d width: %d align: %d\n",x,y,sx,a );
dbprintf( 3,"[skin] id: %s ( %d )\n",sid,id );
dbprintf( 3,"[skin] str: '%s'\n",tmp );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] pos: %d,%d width: %d align: %d\n",x,y,sx,a );
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] id: %s ( %d )\n",sid,id );
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] str: '%s'\n",tmp );
defList->NumberOfItems++;
item=&defList->Items[ defList->NumberOfItems ];
@ -558,17 +509,13 @@ int __decoration( char * in )
CHECKDEFLIST( "decoration" );
CHECKWINLIST( "decoration" );
#ifdef DEBUG
dbprintf( 0,"\n[skin] window decoration is %s\n",in );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"\n[skin] window decoration is %s\n",in );
cutItem( in,tmp,',',0 );
if ( strcmp( tmp,"enable" )&&strcmp( tmp,"disable" ) ) { ERRORMESSAGE( MSGTR_SKIN_UnknownParameter,tmp ); return 1; }
if ( strcmp( tmp,"enable" ) ) defList->mainDecoration=0;
else defList->mainDecoration=1;
#ifdef DEBUG
dbprintf( 3,"\n[skin] window decoration is %s\n",(defList->mainDecoration?"enabled":"disabled") );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"\n[skin] window decoration is %s\n",(defList->mainDecoration?"enabled":"disabled") );
return 0;
}
@ -596,7 +543,7 @@ _item skinItem[] =
{ "menu", __menu }
};
#define ITEMS ( sizeof( skinItem )/sizeof( _item ) )
#define ITEMS (int)( sizeof( skinItem )/sizeof( _item ) )
char * strdelspacesbeforecommand( char * in )
{
@ -617,7 +564,7 @@ char * strswap( char * in,char what,char whereof )
{
int i;
if ( strlen( in ) == 0 ) return NULL;
for ( i=0;i<strlen( in );i++ )
for ( i=0;i<(int)strlen( in );i++ )
if ( in[i] == what ) in[i]=whereof;
return in;
}
@ -626,12 +573,12 @@ char * strdelspaces( char * in )
{
int c = 0,i = 0,id = 0;
if ( strlen( in ) == 0 ) return NULL;
while ( c != strlen( in ) )
while ( c != (int)strlen( in ) )
{
if ( in[c] == '"' ) id=!id;
if ( ( in[c] == ' ' )&&( !id ) )
{
for ( i=0;i<strlen( in ) - c; i++ ) in[c+i]=in[c+i+1];
for ( i=0;i<(int)strlen( in ) - c; i++ ) in[c+i]=in[c+i+1];
continue;
}
c++;
@ -658,14 +605,12 @@ int skinRead( char * dname )
setname( skinDirInHome,dname );
if ( ( skinFile = fopen( fn,"rt" ) ) == NULL )
{
dbprintf( 3,"[skin] file ( %s ) not found.\n",fn );
mp_msg( MSGT_GPLAYER,MSGL_STATUS,"[skin] file ( %s ) not found.\n",fn );
return -1;
}
}
#ifdef DEBUG
dbprintf( 3,"[skin] file: %s\n",fn );
#endif
mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[skin] file: %s\n",fn );
appInitStruct( &appMPlayer );
@ -676,7 +621,7 @@ int skinRead( char * dname )
c=tmp[ strlen( tmp ) - 1 ]; if ( c == '\n' || c == '\r' ) tmp[ strlen( tmp ) - 1 ]=0;
c=tmp[ strlen( tmp ) - 1 ]; if ( c == '\n' || c == '\r' ) tmp[ strlen( tmp ) - 1 ]=0;
for ( c=0;c<strlen( tmp );c++ )
for ( c=0;c<(int)strlen( tmp );c++ )
if ( tmp[c] == ';' )
{
tmp[c]=0;

View File

@ -1,37 +0,0 @@
#include <signal.h>
#include <time.h>
#include <sys/time.h>
#include "timer.h"
static struct itimerval it;
static struct sigaction sa;
timerTSigHandler timerSigHandler;
void timerSetHandler( timerTSigHandler handler )
{ timerSigHandler=handler; }
void timerInit( void )
{
sa.sa_handler=timerSigHandler;
sa.sa_flags=SA_RESTART;
sigemptyset( &sa.sa_mask );
sigaction( SIGALRM,&sa,NULL );
it.it_interval.tv_sec=0;
it.it_interval.tv_usec=20000;
it.it_value.tv_sec=0;
it.it_value.tv_usec=50000;
setitimer( ITIMER_REAL,&it,NULL );
}
void timerDone( void )
{
it.it_interval.tv_sec=0;
it.it_interval.tv_usec=0;
it.it_value.tv_sec=0;
it.it_value.tv_usec=0;
setitimer( ITIMER_REAL,&it,NULL );
}

View File

@ -1,12 +0,0 @@
#ifndef __MYTIMER
#define __MYTIMER
typedef void (* timerTSigHandler)( int signum );
extern timerTSigHandler timerSigHandler;
extern void timerSetHandler( timerTSigHandler handler );
extern void timerInit( void );
extern void timerDone( void );
#endif

View File

@ -18,9 +18,9 @@
#include <inttypes.h>
#include "../../config.h"
#include "ws.h"
#include "wsconv.h"
#include "../../config.h"
#include "../../postproc/rgb2rgb.h"
#include <X11/extensions/XShm.h>
@ -381,9 +381,9 @@ void wsCreateWindow( wsTWindow * win,int X,int Y,int wX,int hY,int bW,int cV,uns
{
char buf[32]; int i;
sprintf( buf,"_%s_REMOTE",label );
for( i=0;i<strlen( buf );i++ )
for( i=0;i < (int)strlen( buf );i++ )
if ( ( buf[i] >= 'a' )&&( buf[i] <= 'z' ) ) buf[i]=buf[i] - 32;
for( i=0;i<strlen( buf );i++ )
for( i=0;i < (int)strlen( buf );i++ )
if ( buf[i] == ' ' ) buf[i]='_';
fprintf( stderr,"[ws] atomname: %s\n",buf );
win->AtomRemote=XInternAtom( wsDisplay,buf,False );
@ -681,11 +681,11 @@ buttonreleased:
wsWindowList[l]->MouseHandler( i,Event->xbutton.x,Event->xbutton.y,Event->xmotion.x_root,Event->xmotion.y_root );
break;
case GravityNotify:
// case GravityNotify:
// #ifdef DEBUG
fprintf( stderr,"[ws] window ( 0x%x ) gravity: %d,%d\n",wsWindowList[l]->WindowID,Event->xgravity.x,Event->xgravity.y );
// fprintf( stderr,"[ws] window ( 0x%x ) gravity: %d,%d\n",wsWindowList[l]->WindowID,Event->xgravity.x,Event->xgravity.y );
// #endif
break;
// break;
case PropertyNotify:
// break;
@ -730,8 +730,7 @@ buttonreleased:
Bool wsDummyEvents( Display * display,XEvent * Event,XPointer arg )
{ return True; }
// mplTimerHandler(0); // handle timer event
void wsHandleEvents(){
void wsHandleEvents( void ){
// handle pending events
while ( XPending(wsDisplay) ){
XNextEvent( wsDisplay,&wsEvent );
@ -740,6 +739,8 @@ void wsHandleEvents(){
}
}
extern void mplTimerHandler( void );
void wsMainLoop( void )
{
int delay=20;
@ -758,7 +759,7 @@ while(wsTrue){
wsEvents( wsDisplay,&wsEvent,NULL );
delay=0;
}
mplTimerHandler(0); // handle timer event
mplTimerHandler(); // handle timer event
usleep(delay*1000); // FIXME!
if(delay<10*20) delay+=20; // pump up delay up to 0.2 sec (low activity)
}

View File

@ -194,6 +194,8 @@ extern int wsGetDepthOnScreen( void );
extern void wsDoExit( void );
extern void wsMainLoop( void );
extern Bool wsEvents( Display * display,XEvent * Event,XPointer arg );
extern void wsHandleEvents( void );
// ----------------------------------------------------------------------------------------------
// wsCrateWindow: create a new window on the screen.

View File

@ -18,7 +18,7 @@ wsTConvFunc wsConvFunc = NULL;
#define SWAP_RGB_24(src,dst) dst[1]=src[0];dst[1]=src[1];dst[2]=src[0]
void BGR8880_to_RGB555_c( const unsigned char * in_pixels, unsigned char * out_pixels, unsigned num_pixels)
void BGR8880_to_RGB555_c( const unsigned char * in_pixels, unsigned char * out_pixels, int num_pixels)
{
unsigned short pixel;
int i;
@ -31,7 +31,7 @@ void BGR8880_to_RGB555_c( const unsigned char * in_pixels, unsigned char * out_p
}
}
void BGR8880_to_BGR555_c( const unsigned char * in_pixels, unsigned char * out_pixels, unsigned num_pixels)
void BGR8880_to_BGR555_c( const unsigned char * in_pixels, unsigned char * out_pixels, int num_pixels)
{
unsigned short pixel;
int i;
@ -44,7 +44,7 @@ void BGR8880_to_BGR555_c( const unsigned char * in_pixels, unsigned char * out_p
}
}
void BGR8880_to_RGB565_c( const unsigned char * in_pixels, unsigned char * out_pixels, unsigned num_pixels)
void BGR8880_to_RGB565_c( const unsigned char * in_pixels, unsigned char * out_pixels, int num_pixels)
{
unsigned short pixel;
int i;
@ -57,7 +57,7 @@ void BGR8880_to_RGB565_c( const unsigned char * in_pixels, unsigned char * out_p
}
}
void BGR8880_to_BGR565_c( const unsigned char * in_pixels, unsigned char * out_pixels, unsigned num_pixels)
void BGR8880_to_BGR565_c( const unsigned char * in_pixels, unsigned char * out_pixels, int num_pixels)
{
unsigned short pixel;
int i;
@ -70,7 +70,7 @@ void BGR8880_to_BGR565_c( const unsigned char * in_pixels, unsigned char * out_p
}
}
void BGR8880_to_RGB888_c( const unsigned char * in_pixels, unsigned char * out_pixels,unsigned num_pixels )
void BGR8880_to_RGB888_c( const unsigned char * in_pixels, unsigned char * out_pixels,int num_pixels )
{
int i;
for(i = 0; i < num_pixels / 4; i++)
@ -81,7 +81,7 @@ void BGR8880_to_RGB888_c( const unsigned char * in_pixels, unsigned char * out_p
}
}
void BGR8880_to_BGR888_c( const unsigned char * in_pixels, unsigned char * out_pixels,unsigned num_pixels )
void BGR8880_to_BGR888_c( const unsigned char * in_pixels, unsigned char * out_pixels,int num_pixels )
{
int i;
for(i = 0; i < num_pixels / 4; i++)
@ -92,7 +92,7 @@ void BGR8880_to_BGR888_c( const unsigned char * in_pixels, unsigned char * out_p
}
}
void BGR8880_to_BGR8880_c( const unsigned char * in_pixels, unsigned char * out_pixels,unsigned num_pixels )
void BGR8880_to_BGR8880_c( const unsigned char * in_pixels, unsigned char * out_pixels,int num_pixels )
{
int i;
for(i = 0; i < num_pixels / 4; i++)
@ -103,7 +103,7 @@ void BGR8880_to_BGR8880_c( const unsigned char * in_pixels, unsigned char * out_
}
}
void BGR8880_to_RGB8880_c( const unsigned char * in_pixels, unsigned char * out_pixels,unsigned num_pixels )
void BGR8880_to_RGB8880_c( const unsigned char * in_pixels, unsigned char * out_pixels,int num_pixels )
{ memcpy( out_pixels,in_pixels,num_pixels ); }
/*
@ -119,7 +119,7 @@ unsigned char * map_6_to_8[64];
#define RGB16_MIDDLE_MASK 0x07e0
#define RGB16_UPPER_MASK 0xf800
void RGB565_to_RGB888_c( const unsigned char * in_pixels, unsigned char * out_pixels,unsigned num_pixels)
void RGB565_to_RGB888_c( const unsigned char * in_pixels, unsigned char * out_pixels,int num_pixels)
{
unsigned short in_pixel;
int i;

View File

@ -19,14 +19,14 @@
typedef void(*wsTConvFunc)( const unsigned char * in_pixels, unsigned char * out_pixels, unsigned num_pixels );
extern wsTConvFunc wsConvFunc;
extern void BGR8880_to_RGB555_c( const unsigned char * in_pixels, unsigned char * out_pixels, unsigned num_pixels );
extern void BGR8880_to_BGR555_c( const unsigned char * in_pixels, unsigned char * out_pixels, unsigned num_pixels );
extern void BGR8880_to_RGB565_c( const unsigned char * in_pixels, unsigned char * out_pixels, unsigned num_pixels );
extern void BGR8880_to_BGR565_c( const unsigned char * in_pixels, unsigned char * out_pixels, unsigned num_pixels );
extern void BGR8880_to_RGB888_c( const unsigned char * in_pixels, unsigned char * out_pixels, unsigned num_pixels );
extern void BGR8880_to_BGR888_c( const unsigned char * in_pixels, unsigned char * out_pixels, unsigned num_pixels );
extern void BGR8880_to_BGR8880_c( const unsigned char * in_pixels, unsigned char * out_pixels,unsigned num_pixels );
extern void BGR8880_to_RGB8880_c( const unsigned char * in_pixels, unsigned char * out_pixels,unsigned num_pixels );
extern void BGR8880_to_RGB555_c( const unsigned char * in_pixels, unsigned char * out_pixels, int num_pixels );
extern void BGR8880_to_BGR555_c( const unsigned char * in_pixels, unsigned char * out_pixels, int num_pixels );
extern void BGR8880_to_RGB565_c( const unsigned char * in_pixels, unsigned char * out_pixels, int num_pixels );
extern void BGR8880_to_BGR565_c( const unsigned char * in_pixels, unsigned char * out_pixels, int num_pixels );
extern void BGR8880_to_RGB888_c( const unsigned char * in_pixels, unsigned char * out_pixels, int num_pixels );
extern void BGR8880_to_BGR888_c( const unsigned char * in_pixels, unsigned char * out_pixels, int num_pixels );
extern void BGR8880_to_BGR8880_c( const unsigned char * in_pixels, unsigned char * out_pixels,int num_pixels );
extern void BGR8880_to_RGB8880_c( const unsigned char * in_pixels, unsigned char * out_pixels,int num_pixels );
#ifdef xHAVE_MMX
extern void BGR8880_to_RGB888_mmx( const unsigned char * in_pixels,unsigned char * out_pixels,unsigned num_pixels);

View File

@ -1,4 +1,7 @@
#ifndef _MP_MSG_H
#define _MP_MSG_H
extern int verbose; // defined in mplayer.c
// verbosity elevel:
@ -86,3 +89,5 @@ void mp_msg_c( int x, const char *format, ... );
#define mp_dbg(mod,lev, ... )
#endif
#endif
#endif

106
mplayer.c
View File

@ -283,7 +283,7 @@ extern char *ao_subdevice;
static stream_t* stream=NULL;
static char* current_module=NULL; // for debugging
char* current_module=NULL; // for debugging
static unsigned int inited_flags=0;
#define INITED_VO 1
@ -332,7 +332,7 @@ void uninit_player(unsigned int mask){
if(mask&INITED_GUI){
inited_flags&=~INITED_GUI;
current_module="uninit_gui";
mplDone();
guiDone();
}
#endif
@ -643,9 +643,9 @@ if(!parse_codec_cfg(get_path("codecs.conf"))){
// It's time to init the GUI code: (and fork() the GTK process)
#ifdef HAVE_NEW_GUI
if(use_gui){
appInit( argc,argv,envp,(void*)mDisplay );
guiInit( argc,argv,envp );
inited_flags|=INITED_GUI;
mplShMem->Playing= (gui_no_filename) ? 0 : 1;
guiIntfStruct.Playing= (gui_no_filename) ? 0 : 1;
mplState();
}
#endif
@ -728,18 +728,18 @@ play_next_file:
if ( use_gui ) {
#ifdef USE_DVDREAD
if ( mplShMem->DVDChanged )
if ( guiIntfStruct.DVDChanged )
{
mplShMem->DVDChanged=0;
mplShMem->Playing=1;
guiIntfStruct.DVDChanged=0;
guiIntfStruct.Playing=1;
filename="/dev/dvd";
goto play_dvd;
}
#endif
if(filename && !mplShMem->FilenameChanged) strcpy( mplShMem->Filename,filename );
// mplShMem->Playing= (gui_no_filename) ? 0 : 1;
while(mplShMem->Playing!=1){
if(filename && !guiIntfStruct.FilenameChanged) guiSetFilename( guiIntfStruct.Filename,filename );
// guiIntfStruct.Playing= (gui_no_filename) ? 0 : 1;
while(guiIntfStruct.Playing!=1){
usleep(20000);
guiEventHandling();
}
@ -747,17 +747,17 @@ play_next_file:
play_dvd:
#ifdef USE_SUB
if ( mplShMem->SubtitleChanged || !mplShMem->FilenameChanged )
if ( guiIntfStruct.SubtitleChanged || !guiIntfStruct.FilenameChanged )
{
if ( mplShMem->Subtitlename[0] != 0 ) sub_name=mplShMem->Subtitlename;
mplShMem->SubtitleChanged=0;
if ( ( guiIntfStruct.Subtitlename )&&( guiIntfStruct.Subtitlename[0] != 0 ) ) sub_name=guiIntfStruct.Subtitlename;
guiIntfStruct.SubtitleChanged=0;
}
#endif
if ( mplShMem->FilenameChanged || !filename )
if ( guiIntfStruct.FilenameChanged || !filename )
{
filename=mplShMem->Filename;
mplShMem->FilenameChanged=0;
filename=strdup( guiIntfStruct.Filename );
guiIntfStruct.FilenameChanged=0;
}
}
#endif
@ -1049,17 +1049,17 @@ sh_video=d_video->sh;
if ( use_gui && stream->type == STREAMTYPE_DVD )
{
dvd_priv_t * dvdp = stream->priv;
mplShMem->DVD.titles=dvdp->vmg_file->tt_srpt->nr_of_srpts;
mplShMem->DVD.chapters=dvdp->vmg_file->tt_srpt->title[dvd_title].nr_of_ptts;
mplShMem->DVD.angles=dvdp->vmg_file->tt_srpt->title[dvd_title].nr_of_angles;
mplShMem->DVD.nr_of_audio_channels=dvdp->nr_of_channels;
memcpy( mplShMem->DVD.audio_streams,dvdp->audio_streams,sizeof( dvdp->audio_streams ) );
mplShMem->DVD.nr_of_subtitles=dvdp->nr_of_subtitles;
memcpy( mplShMem->DVD.subtitles,dvdp->subtitles,sizeof( dvdp->subtitles ) );
mplShMem->DVD.current_title=dvd_title + 1;
mplShMem->DVD.current_chapter=dvd_chapter + 1;
mplShMem->DVD.current_angle=dvd_angle + 1;
mplShMem->Track=dvd_title + 1;
guiIntfStruct.DVD.titles=dvdp->vmg_file->tt_srpt->nr_of_srpts;
guiIntfStruct.DVD.chapters=dvdp->vmg_file->tt_srpt->title[dvd_title].nr_of_ptts;
guiIntfStruct.DVD.angles=dvdp->vmg_file->tt_srpt->title[dvd_title].nr_of_angles;
guiIntfStruct.DVD.nr_of_audio_channels=dvdp->nr_of_channels;
memcpy( guiIntfStruct.DVD.audio_streams,dvdp->audio_streams,sizeof( dvdp->audio_streams ) );
guiIntfStruct.DVD.nr_of_subtitles=dvdp->nr_of_subtitles;
memcpy( guiIntfStruct.DVD.subtitles,dvdp->subtitles,sizeof( dvdp->subtitles ) );
guiIntfStruct.DVD.current_title=dvd_title + 1;
guiIntfStruct.DVD.current_chapter=dvd_chapter + 1;
guiIntfStruct.DVD.current_angle=dvd_angle + 1;
guiIntfStruct.Track=dvd_title + 1;
}
#endif
#endif
@ -1179,13 +1179,13 @@ if(sh_audio){
mp_msg(MSGT_CPLAYER,MSGL_ERR,MSGTR_CouldntInitAudioCodec);
sh_audio=d_audio->sh=NULL;
#ifdef HAVE_NEW_GUI
if ( use_gui ) mplShMem->AudioType=0;
if ( use_gui ) guiIntfStruct.AudioType=0;
#endif
} else {
mp_msg(MSGT_CPLAYER,MSGL_INFO,"AUDIO: srate=%d chans=%d bps=%d sfmt=0x%X ratio: %d->%d\n",sh_audio->samplerate,sh_audio->channels,sh_audio->samplesize,
sh_audio->sample_format,sh_audio->i_bps,sh_audio->o_bps);
#ifdef HAVE_NEW_GUI
if ( use_gui ) mplShMem->AudioType=sh_audio->channels;
if ( use_gui ) guiIntfStruct.AudioType=sh_audio->channels;
#endif
}
}
@ -1359,10 +1359,10 @@ current_module="init_libvo";
if ( use_gui )
{
mplResizeToMovieSize( sh_video->disp_w,sh_video->disp_h );
moviewidth=sh_video->disp_w;
movieheight=sh_video->disp_h;
mplShMem->StreamType=stream->type;
mplSetFileName( filename );
guiIntfStruct.MovieWidth=sh_video->disp_w;
guiIntfStruct.MovieHeight=sh_video->disp_h;
guiIntfStruct.StreamType=stream->type;
guiIntfStruct.Filename=filename;
}
#endif
@ -1964,7 +1964,7 @@ read_input:
fflush(stdout);
}
#ifdef HAVE_NEW_GUI
if(use_gui) mplShMem->Playing=2;
if(use_gui) guiIntfStruct.Playing=2;
#endif
if (video_out && sh_video)
video_out->control(VOCTRL_PAUSE, NULL);
@ -2002,7 +2002,7 @@ read_input:
#ifdef HAVE_NEW_GUI
if(use_gui){
guiEventHandling();
if(mplShMem->Playing!=2 || (rel_seek_secs || abs_seek_pos))
if(guiIntfStruct.Playing!=2 || (rel_seek_secs || abs_seek_pos))
{ gui_pause_flag=1; break; } // end of pause or seek
}
#endif
@ -2021,7 +2021,7 @@ read_input:
video_out->control(VOCTRL_RESUME, NULL); // resume video
(void)GetRelativeTime(); // keep TF around FT in next cycle
#ifdef HAVE_NEW_GUI
if(use_gui && !gui_pause_flag) mplShMem->Playing=1; // play from keyboard
if(use_gui && !gui_pause_flag) guiIntfStruct.Playing=1; // play from keyboard
#endif
}
@ -2660,36 +2660,36 @@ if(rel_seek_secs || abs_seek_pos){
if(use_gui){
if(demuxer->file_format==DEMUXER_TYPE_AVI && sh_video->video.dwLength>2){
// get pos from frame number / total frames
mplShMem->Position=(float)d_video->pack_no*100.0f/sh_video->video.dwLength;
guiIntfStruct.Position=(float)d_video->pack_no*100.0f/sh_video->video.dwLength;
} else {
// get pos from file position / filesize
int len=((demuxer->movi_end-demuxer->movi_start));
int pos=(demuxer->file_format==DEMUXER_TYPE_AVI)?demuxer->filepos:d_video->pos;
mplShMem->Position=(len<=0)?0:((float)(pos-demuxer->movi_start) / len * 100.0f);
guiIntfStruct.Position=(len<=0)?0:((float)(pos-demuxer->movi_start) / len * 100.0f);
}
mplShMem->TimeSec=d_video->pts;
if(mplShMem->Playing==0) break; // STOP
if(mplShMem->Playing==2) osd_function=OSD_PAUSE;
if ( mplShMem->VolumeChanged )
guiIntfStruct.TimeSec=d_video->pts;
if(guiIntfStruct.Playing==0) break; // STOP
if(guiIntfStruct.Playing==2) osd_function=OSD_PAUSE;
if ( guiIntfStruct.VolumeChanged )
{
mixer_setvolume( mplShMem->Volume,mplShMem->Volume );
mplShMem->VolumeChanged=0;
mixer_setvolume( guiIntfStruct.Volume,guiIntfStruct.Volume );
guiIntfStruct.VolumeChanged=0;
#ifdef USE_OSD
if ( osd_level )
{
osd_visible=sh_video->fps; // 1 sec
vo_osd_progbar_type=OSD_VOLUME;
vo_osd_progbar_value=( ( mplShMem->Volume ) * 256.0 ) / 100.0;
vo_osd_progbar_value=( ( guiIntfStruct.Volume ) * 256.0 ) / 100.0;
}
#endif
}
mplShMem->Volume=(float)mixer_getbothvolume();
guiIntfStruct.Volume=(float)mixer_getbothvolume();
#ifdef USE_DVDREAD
if ( mplShMem->DVDChanged ) goto goto_next_file;
if ( guiIntfStruct.DVDChanged ) goto goto_next_file;
if ( stream->type == STREAMTYPE_DVD )
{
dvd_priv_t * dvdp = stream->priv;
mplShMem->DVD.current_chapter=dvdp->cur_cell + 1;
guiIntfStruct.DVD.current_chapter=dvdp->cur_cell + 1;
}
#endif
}
@ -2787,7 +2787,6 @@ mp_msg(MSGT_GLOBAL,MSGL_V,"EOF code: %d \n",eof);
goto_next_file: // don't jump here after ao/vo/getch initialization!
if(benchmark){
double tot=video_time_usage+vout_time_usage+audio_time_usage;
double total_time_usage;
@ -2836,7 +2835,7 @@ if(eof == 0) eof = 1;
if(use_gui)
{
#ifdef USE_DVDREAD
if ( !mplShMem->DVDChanged )
if ( !guiIntfStruct.DVDChanged )
#endif
mplStop();
}
@ -2855,7 +2854,7 @@ while(playtree_iter != NULL) {
if(use_gui || playtree_iter != NULL
#if defined( HAVE_NEW_GUI ) && defined( USE_DVDREAD )
|| (mplShMem && mplShMem->DVDChanged)
|| guiIntfStruct.DVDChanged
#endif
){
@ -2874,8 +2873,9 @@ if(use_gui || playtree_iter != NULL
sub_free( subtitles );
sub_name=NULL;
vo_sub=NULL;
subtitles=NULL;
}
video_out=NULL;
audio_out=NULL;
eof = 0;

View File

@ -3,5 +3,6 @@
#define __MPLAYER_MAIN
extern int use_gui;
extern char* current_module;
#endif