CVS: main/Gui Makefile,NONE,1.1 app.c,NONE,1.1 app.h,NONE,1.1 config.c,NONE,1.1 config.h,NONE,1.1 error.c,NONE,1.1 error.h,NONE,1.1 events.c,NONE,1.1 events.h,NONE,1.1 gui.mak,NONE,1.1 language.c,NONE,1.1 language.h,NONE,1.1 shmem.c,NONE,1.1 shmem.h,NONE,1.1 timer.c,NONE,1.1 timer.h,NONE,1.1
Update of /cvsroot/mplayer/main/Gui In directory mplayer:/var/tmp.root/cvs-serv13203 Added Files: Makefile app.c app.h config.c config.h error.c error.h events.c events.h gui.mak language.c language.h shmem.c shmem.h timer.c timer.h Log Message: GUI version n-1 --- NEW FILE --- LIB = libgui.a include ../config.mak include config.mak include bitmap/bitmap.mak MPLAYERDIR = mplayer/ include gui.mak INCDIR = -I. -I./event -I./wm -I./skin $(GTKINC) OPTIMIZE = $(OPTFLAGS) -fomit-frame-pointer \ -fexpensive-optimizations -malign-double -fschedule-insns2 -mwide-multiply -Wall CFLAGS = $(OPTIMIZE) $(INCDIR) $(DEBUG) .SUFFIXES: .c .o .c.o: $(CC) -c $(CFLAGS) -o $@ $< ### TARGETS ### $(LIB): .depend $(OBJS) $(MAKE) -C mplayer rm -f $(LIB) ar rc $(LIB) $(OBJS) $(MPLAYEROBJS) all: $(LIB) clean: $(MAKE) -C mplayer clean rm -rf $(OBJS) *.o *~ *.bak main $(PRG) $(LIB) .depend #dep: depend # #depend: # makedepend -- $(CFLAGS) -- $(SRCS) &>/dev/null # distclean: clean dep: depend depend: .depend .depend: Makefile config.mak config.h gui.mak bitmap/bitmap.mak $(MAKE) -C mplayer depend $(CC) -MM $(CFLAGS) $(SRCS) 1>.depend # # include dependency files if they exist # ifneq ($(wildcard .depend),) include .depend endif --- NEW FILE --- #include <stdlib.h> #include <stdio.h> #include <string.h> #include "app.h" #include "../config.h" #include "config.h" #include "error.h" #include "wm/wskeys.h" #include "skin/skin.h" #include "mplayer/mplayer.h" listItems appMPlayer; listItems appTV; listItems appRadio; char * appMPlayerDirInHome=NULL; char * appMPlayerDir=NULL; char * skinDirInHome=NULL; char * skinMPlayerDir=NULL; void appClearItem( wItem * item ) { item->type=0; // --- item->x=0; item->y=0; item->width=0; item->height=0; // --- item->px=0; item->py=0; item->psx=0; item->psy=0; // --- item->msg=0; item->msg2=0; item->pressed=0; item->tmp=0; item->key=0; item->key2=0; item->Bitmap.Width=0; item->Bitmap.Height=0; item->Bitmap.BPP=0; item->Bitmap.ImageSize=0; if ( item->Bitmap.Image ) { free( item->Bitmap.Image ); item->Bitmap.Image=NULL; } // --- item->fontid=0; if ( item->label ) free( item->label ); item->label=NULL; item->event=0; } void appCopy( listItems * dest,listItems * source ) { dest->NumberOfItems=source->NumberOfItems; memcpy( &dest->Items,&source->Items,128 * sizeof( wItem ) ); dest->NumberOfMenuItems=source->NumberOfMenuItems; memcpy( &dest->MenuItems,&source->MenuItems,32 * sizeof( wItem ) ); memcpy( &dest->main,&source->main,sizeof( wItem ) ); memcpy( &dest->sub,&source->sub,sizeof( wItem ) ); memcpy( &dest->eq,&source->eq,sizeof( wItem ) ); memcpy( &dest->menuBase,&source->menuBase,sizeof( wItem ) ); memcpy( &dest->menuSelected,&source->menuSelected,sizeof( wItem ) ); } void appInitStruct( listItems * item ) { int i; for ( i=0;i<item->NumberOfItems;i++ ) appClearItem( &item->Items[i] ); for ( i=0;i<item->NumberOfMenuItems;i++ ) appClearItem( &item->MenuItems[i] ); item->NumberOfItems=-1; memset( item->Items,0,128 * sizeof( wItem ) ); item->NumberOfMenuItems=-1; memset( item->MenuItems,0,32 * sizeof( wItem ) ); appClearItem( &item->main ); appClearItem( &item->sub ); item->sub.Bitmap.Width=256; item->sub.Bitmap.Height=256; item->sub.width=256; item->sub.height=256; appClearItem( &item->menuBase ); appClearItem( &item->menuSelected ); item->subR=0; item->subG=0; item->subB=0; } int appFindKey( unsigned char * name ) { int i; for ( i=0;i<wsKeyNumber;i++ ) if ( !strcmp( wsKeyNames[i].name,name ) ) return wsKeyNames[i].code; return -1; } int appFindMessage( unsigned char * str ) { int i; for ( i=0;i<evBoxs;i++ ) if ( !strcmp( evNames[i].name,str ) ) return evNames[i].msg; return -1; } void appInit( int argc,char* argv[], char *envp[] ) { if ( ( appMPlayerDirInHome=(char *)calloc( 1,strlen( getenv( "HOME" ) ) + 9 ) ) != NULL ) { strcpy( appMPlayerDirInHome,getenv( "HOME" ) ); strcat( appMPlayerDirInHome,"/.mplayer" ); } if ( ( skinDirInHome=(char *)calloc( 1,strlen( appMPlayerDirInHome ) + 5 ) ) != NULL ) { strcpy( skinDirInHome,appMPlayerDirInHome ); strcat( skinDirInHome,"/Skin" ); } if ( ( appMPlayerDir=(char *)calloc( 1,strlen( PREFIX ) + 14 ) ) != NULL ) { strcpy( appMPlayerDir,PREFIX ); strcat( appMPlayerDir,"/share/mplayer" ); } if ( ( skinMPlayerDir=(char *)calloc( 1,strlen( appMPlayerDir ) + 5 ) ) != NULL ) { strcpy( skinMPlayerDir,appMPlayerDir ); strcat( skinMPlayerDir,"/Skin" ); } initDebug(); cfgDefaults(); cfgRead(); if ( !strcmp( cfgAppName,"movieplayer" ) ) { appMPlayer.sub.x=-1; appMPlayer.sub.y=-1; appMPlayer.sub.width=512; appMPlayer.sub.height=256; switch ( skinRead( cfgSkin ) ) { case -1: dbprintf( 0,"[app] skin configfile not found.\n" ); exit( 0 ); case -2: dbprintf( 0,"[app] skin configfile read error.\n" ); exit( 0 ); } mplInit( argc,argv,envp ); } } --- NEW FILE --- #ifndef __MY_APPS #define __MY_APPS #include "bitmap/bitmap.h" #include "wm/ws.h" #include "wm/wskeys.h" #include "events.h" #define itNULL 0 #define itButton 101 // button #define itHPotmeter 102 // horizontal potmeter #define itVPotmeter 103 // vertical potmeter #define itSLabel 104 // static label #define itDLabel 105 // dynamic label #define itBase 106 #define itPotmeter 107 #define itFont 108 // --- #define btnPressed 0 #define btnReleased 1 #define btnDisabled 2 // --- typedef struct { int type; // --- int x,y; int width,height; // --- int px,py,psx,psy; // --- int msg,msg2; int pressed,disabled,tmp; int key,key2; int phases; float value; txSample Bitmap; txSample Mask; // --- int fontid; int align; char * label; // --- int event; } wItem; typedef struct { wItem main; wsTWindow mainWindow; wItem sub; wsTWindow subWindow; int subR,subG,subB; int subPixel; wItem eq; wsTWindow eqWindow; wItem menuBase; wItem menuSelected; wsTWindow menuWindow; // --- int NumberOfItems; wItem Items[256]; // --- int NumberOfMenuItems; wItem MenuItems[32]; } listItems; extern listItems appMPlayer; extern listItems appTV; extern listItems appRadio; extern char * appMPlayerDirInHome; extern char * appMPlayerDir; extern char * skinDirInHome; extern char * skinMPlayerDir; extern void appInit( int argc,char* argv[], char *envp[] ); extern void appInitStruct( listItems * item ); extern void appClearItem( wItem * item ); extern void appCopy( listItems * item1,listItems * item2 ); extern int appFindMessage( unsigned char * str ); extern int appFindKey( unsigned char * name ); #endif --- NEW FILE --- #include <stdlib.h> #include <stdio.h> unsigned char * cfgAppName = "movieplayer"; unsigned char * cfgSkin = NULL; void cfgDefaults( void ) { if ( ( cfgSkin=(char *)calloc( 1,256 ) ) == NULL ) { fprintf( stderr,"[config] Not enough memory.\n" ); exit( 1 ); } strcpy( cfgSkin,"default" ); // strcpy( cfgSkin,"blueHeart" ); } int cfgRead( void ) { return 0; } --- NEW FILE --- #ifndef __MYCONFIG #define __MYCONFIG extern unsigned char * cfgAppName; extern unsigned char * cfgSkin; extern int cfgRead( void ); extern void cfgDefaults( void ); #endif --- NEW FILE --- #include <stdlib.h> #include <stdio.h> #include <stdarg.h> #include "error.h" int debug_level = 6; 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; } --- NEW FILE --- #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 --- NEW FILE --- #include "events.h" evName evNames[] = { { evNone, "evNone" }, // 1 { evPlay, "evPlay" }, // 2 { evStop, "evStop" }, // 3 { evPause, "evPause" }, // 4 { evPrev, "evPrev" }, // 7 { evNext, "evNext" }, // 8 { evLoad, "evLoad" }, // 9 { evEqualeaser, "evEqualeaser" }, // 10 { evPlayList, "evPlaylist" }, // 11 { evExit, "evExit" }, // 12 { evPlusVideo, "evPlusVideo" }, // 13 { evMinusVideo, "evMinusVideo" }, // 14 { evIconify, "evIconify" }, // 15 { evPlusBalance, "evPlusBalance" }, // 16 { evMinusBalance, "evMinusBalance" }, // 17 { evFullScreen, "evFullScreen" }, // 18 { evFName, "evFName" }, // 19 { evMovieTime, "evMovieTime" }, // 20 { evAbout, "evAbout" }, // 22 { evLoadPlay, "evLoadPlay" }, // 23 { evPreferences, "evPreferences" }, // 24 { evSkinBrowser, "evSkinBrowser" }, // 25 { evBackward10sec, "evBackward10sec" }, // 26 { evForward10sec, "evForward10sec" }, // 27 { evBackward1min, "evBackward1min" }, // 28 { evForward1min, "evForward1min" }, // 29 { evIncVolume, "evIncVolume" }, // 30 { evDecVolume, "evDecVolume" }, // 31 { evMute, "evMute" }, // 32 { evIncAudioBufDelay, "evIncAudioBufDelay" }, // 33 { evDecAudioBufDelay, "evDecAudioBufDelay" }, // 34 { evPlaySwitchToPause, "evPlaySwitchToPause" }, // 35 { evPauseSwitchToPlay, "evPauseSwitchToPlay" }, // 36 { evNormalSize, "evNormalSize" }, // 37 { evDoubleSize, "evDoubleSize" }, // 38 { evSetMoviePosition, "evSetMoviePosition" }, // 39 { evSetVolume, "evSetVolume" }, // 40 { evSetBalance, "evSetBalance" } // 41 }; const int evBoxs = sizeof( evNames ) / sizeof( evName ); --- NEW FILE --- #ifndef _MYEVENTHANDLER #define _MYEVENTHANDLER // --- User events ------ #define evNone 0 #define evPlay 1 #define evStop 2 #define evPause 3 #define evPrev 6 #define evNext 7 #define evLoad 8 #define evEqualeaser 9 #define evPlayList 10 #define evPlusVideo 11 #define evMinusVideo 12 #define evIconify 13 #define evPlusBalance 14 #define evMinusBalance 15 #define evFullScreen 16 #define evAbout 18 #define evLoadPlay 19 #define evPreferences 20 #define evSkinBrowser 21 #define evBackward10sec 22 #define evForward10sec 23 #define evBackward1min 24 #define evForward1min 25 #define evIncVolume 26 #define evDecVolume 27 #define evMute 28 #define evIncAudioBufDelay 29 #define evDecAudioBufDelay 30 #define evPlaySwitchToPause 31 #define evPauseSwitchToPlay 32 #define evNormalSize 33 #define evDoubleSize 34 #define evSetMoviePosition 35 #define evSetVolume 36 #define evSetBalance 37 #define evExit 1000 // --- General events --- #define evFileLoaded 5000 #define evHideMouseCursor 5001 #define evMessageBox 5002 #define evGeneralTimer 5003 #define evGtkIsOk 5004 #define evFName 7000 #define evMovieTime 7001 #define evRedraw 7002 #define evHideWindow 7003 #define evShowWindow 7004 // ---------------------- typedef struct { int msg; char * name; } evName; extern int evBoxs; extern evName evNames[]; #endif --- NEW FILE --- SKINSRC = skin/skin.c skin/font.c skin/cut.c SKINOBJ = skin/skin.o skin/font.o skin/cut.o MPLAYERSRCS = $(MPLAYERDIR)mplayer.c $(MPLAYERDIR)widgets.c $(MPLAYERDIR)play.c \ $(MPLAYERDIR)psignal.c $(MPLAYERDIR)mixer.c MPLAYEROBJS = $(MPLAYERSRCS:.c=.o) SRCS = $(SKINSRC) $(BITMAPSRCS) wm/ws.c wm/wsconv.c app.c config.c events.c timer.c language.c error.c shmem.c OBJS = $(SRCS:.c=.o) --- NEW FILE --- // --- 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."; 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."; --- NEW FILE --- #ifndef __MPLAYER_LANG #define __MPLAYER_LANG // --- labels --- extern char * langAbout; extern char * langFileSelect; extern char * langMessageBox; extern char * langPlayList; extern char * langSkinBrowser; // --- buttons --- extern char * langOk; extern char * langCancel; extern char * langAdd; extern char * langRemove; // --- error messages --- extern char * langNEMDB; extern char * langNEMFMR; extern char * langNEMFMM; extern char * langLIRCSNW; extern char * langAudioDriverSelectNotSupported; extern char * langNotSupportedFileFormat; extern char * langCodecConfNotFound; extern char * langErrorProcessingDVDKey; extern char * langErrorInDVDAuth; extern char * langAVIMissing; extern char * langAVIMissingVideoStream; extern char * langASFMissingVideoStream; extern char * langMPEGEOFNotFound; extern char * langCannotAllocateSharedMem; extern char * langMPEGCannotReadSeqHeader; extern char * langMPEGBadSeqHeader; extern char * langMPEGCannotReadSeqHeaderExt; extern char * langMPEGBadSeqHeaderExt; extern char * langCantFindCodec; extern char * langSelectedVideoOutIncompTheCodec; extern char * langMPCompWithoutDSSupport; extern char * langDSCodecNotFound; extern char * langCantInitVideoDriver; extern char * langUnknowError; #endif --- NEW FILE --- /* * shmem.c - Shared memory allocation * * based on mpg123's xfermem.c by * Oliver Fromme <oliver.fromme@heim3.tu-clausthal.de> * Sun Apr 6 02:26:26 MET DST 1997 */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <errno.h> #include <sys/types.h> #include <sys/time.h> #include <sys/uio.h> #include <sys/mman.h> #include <sys/socket.h> #include <fcntl.h> #ifdef AIX #include <sys/select.h> #endif #include <sys/ipc.h> #include <sys/shm.h> extern int errno; #if defined(MAP_ANONYMOUS) && !defined(MAP_ANON) #define MAP_ANON MAP_ANONYMOUS #endif static int shmem_type=0; void* shmem_alloc(int size){ void* p; static int devzero = -1; while(1){ switch(shmem_type){ case 0: // ========= MAP_ANON|MAP_SHARED ========== #ifdef MAP_ANON p=mmap(0,size,PROT_READ|PROT_WRITE,MAP_ANON|MAP_SHARED,-1,0); if(p==MAP_FAILED) break; // failed // printf("shmem: %d bytes allocated using mmap anon (%X)\n",size,p); return p; #else // system does not support MAP_ANON at all (e.g. solaris 2.5.1/2.6), just fail break; #endif case 1: // ========= MAP_SHARED + /dev/zero ========== if (devzero == -1 && (devzero = open("/dev/zero", O_RDWR, 0)) == -1) break; p=mmap(0,size,PROT_READ|PROT_WRITE,MAP_SHARED,devzero,0); if(p==MAP_FAILED) break; // failed // printf("shmem: %d bytes allocated using mmap /dev/zero (%X)\n",size,p); return p; case 2: { // ========= shmget() ========== struct shmid_ds shmemds; int shmemid; if ((shmemid = shmget(IPC_PRIVATE, size, IPC_CREAT | 0600)) == -1) break; if ((int)(p = shmat(shmemid, 0, 0)) == -1){ perror ("shmat()"); shmctl (shmemid, IPC_RMID, &shmemds); break; } if (shmctl(shmemid, IPC_RMID, &shmemds) == -1) { perror ("shmctl()"); if (shmdt(p) == -1) perror ("shmdt()"); break; } // printf("shmem: %d bytes allocated using shmget() & shmat() (%X)\n",size,p); return p; } default: printf("FATAL: Cannot alloate %d bytes shared memory :(\n",size); return NULL; } ++shmem_type; } } void shmem_free(void* p){ switch(shmem_type){ case 2: if (shmdt(p) == -1) perror ("shmdt()"); break; } } --- NEW FILE --- void* shmem_alloc(int size); void shmem_free(void* p); --- NEW FILE --- #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 ); } --- NEW FILE --- #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;
participants (1)
-
Arpi of Ize