Since the Windows port of GNU patch was being a bitch, did LIRC support again. Bleh!
This commit is contained in:
parent
eac8b888a3
commit
64e3165091
166
src/sdl/SDL.cpp
166
src/sdl/SDL.cpp
|
@ -362,6 +362,56 @@ struct option sdlOptions[] = {
|
||||||
{ NULL, no_argument, NULL, 0 }
|
{ NULL, no_argument, NULL, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifdef WITH_LIRC
|
||||||
|
//LIRC code
|
||||||
|
bool LIRCEnabled = false;
|
||||||
|
int LIRCfd = 0;
|
||||||
|
static struct lirc_config *LIRCConfigInfo;
|
||||||
|
|
||||||
|
void StartLirc(void)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "Trying to start LIRC: ");
|
||||||
|
//init LIRC and Record output
|
||||||
|
LIRCfd = lirc_init( "vbam",1 );
|
||||||
|
if( LIRCfd == -1 ) {
|
||||||
|
//it failed
|
||||||
|
fprintf(stderr, "Failed\n");
|
||||||
|
} else {
|
||||||
|
fprintf(stderr, "Success\n");
|
||||||
|
//read the config file
|
||||||
|
char LIRCConfigLoc[2048];
|
||||||
|
sprintf(LIRCConfigLoc, "%s/%s/%s", homeDir, DOT_DIR, "lircrc");
|
||||||
|
fprintf(stderr, "LIRC Config file:");
|
||||||
|
if( lirc_readconfig(LIRCConfigLoc,&LIRCConfigInfo,NULL) == 0 ) {
|
||||||
|
//check vbam dir for lircrc
|
||||||
|
fprintf(stderr, "Loaded (%s)\n", LIRCConfigLoc );
|
||||||
|
} else if( lirc_readconfig(NULL,&LIRCConfigInfo,NULL) == 0 ) {
|
||||||
|
//check default lircrc location
|
||||||
|
fprintf(stderr, "Loaded\n");
|
||||||
|
} else {
|
||||||
|
//it all failed
|
||||||
|
fprintf(stderr, "Failed\n");
|
||||||
|
LIRCEnabled = false;
|
||||||
|
}
|
||||||
|
LIRCEnabled = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void StopLirc(void)
|
||||||
|
{
|
||||||
|
//did we actually get lirc working at the start
|
||||||
|
if(LIRCEnabled) {
|
||||||
|
//if so free the config and deinit lirc
|
||||||
|
fprintf(stderr, "Shuting down LIRC\n");
|
||||||
|
lirc_freeconfig(LIRCConfigInfo);
|
||||||
|
lirc_deinit();
|
||||||
|
//set lirc enabled to false
|
||||||
|
LIRCEnabled = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
u32 sdlFromHex(char *s)
|
u32 sdlFromHex(char *s)
|
||||||
{
|
{
|
||||||
u32 value;
|
u32 value;
|
||||||
|
@ -369,6 +419,112 @@ u32 sdlFromHex(char *s)
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef WITH_LIRC
|
||||||
|
void lircCheckInput(void)
|
||||||
|
{
|
||||||
|
if(LIRCEnabled) {
|
||||||
|
//setup a poll (poll.h)
|
||||||
|
struct pollfd pollLIRC;
|
||||||
|
//values fd is the pointer gotten from lircinit and events is what way
|
||||||
|
pollLIRC.fd = LIRCfd;
|
||||||
|
pollLIRC.events = POLLIN;
|
||||||
|
//run the poll
|
||||||
|
if( poll( &pollLIRC, 1, 0 ) > 0 ) {
|
||||||
|
//poll retrieved something
|
||||||
|
char *CodeLIRC;
|
||||||
|
char *CmdLIRC;
|
||||||
|
int ret; //dunno???
|
||||||
|
if( lirc_nextcode(&CodeLIRC) == 0 && CodeLIRC != NULL ) {
|
||||||
|
//retrieve the commands
|
||||||
|
while( ( ret = lirc_code2char( LIRCConfigInfo, CodeLIRC, &CmdLIRC ) ) == 0 && CmdLIRC != NULL ) {
|
||||||
|
//change the text to uppercase
|
||||||
|
char *CmdLIRC_Pointer = CmdLIRC;
|
||||||
|
while(*CmdLIRC_Pointer != '\0') {
|
||||||
|
*CmdLIRC_Pointer = toupper(*CmdLIRC_Pointer);
|
||||||
|
CmdLIRC_Pointer++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( strcmp( CmdLIRC, "QUIT" ) == 0 ) {
|
||||||
|
emulating = 0;
|
||||||
|
} else if( strcmp( CmdLIRC, "PAUSE" ) == 0 ) {
|
||||||
|
paused = !paused;
|
||||||
|
SDL_PauseAudio(paused);
|
||||||
|
if(paused) wasPaused = true;
|
||||||
|
systemConsoleMessage( paused?"Pause on":"Pause off" );
|
||||||
|
systemScreenMessage( paused?"Pause on":"Pause off" );
|
||||||
|
} else if( strcmp( CmdLIRC, "RESET" ) == 0 ) {
|
||||||
|
if(emulating) {
|
||||||
|
emulator.emuReset();
|
||||||
|
systemScreenMessage("Reset");
|
||||||
|
}
|
||||||
|
} else if( strcmp( CmdLIRC, "MUTE" ) == 0 ) {
|
||||||
|
if (sdlSoundToggledOff) { // was off
|
||||||
|
// restore saved state
|
||||||
|
soundEnable(sdlSoundToggledOff);
|
||||||
|
soundDisable(~sdlSoundToggledOff);
|
||||||
|
sdlSoundToggledOff = 0;
|
||||||
|
systemConsoleMessage("Sound toggled on");
|
||||||
|
systemScreenMessage("Sound toggled on");
|
||||||
|
} else { // was on
|
||||||
|
sdlSoundToggledOff= soundGetEnable();
|
||||||
|
soundEnable(0);
|
||||||
|
soundDisable(sdlSoundToggledOff);
|
||||||
|
systemConsoleMessage("Sound toggled off");
|
||||||
|
systemScreenMessage("Sound toggled off");
|
||||||
|
if (!sdlSoundToggledOff) {
|
||||||
|
// if ON actually meant "all channels off" for some reason,
|
||||||
|
// remember that on "toggle to ON" we should unmute everything
|
||||||
|
sdlSoundToggledOff = 0x3ff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if( strcmp( CmdLIRC, "VOLUP" ) == 0 ) {
|
||||||
|
soundVolume++;
|
||||||
|
if( soundVolume > 3 ) soundVolume = 3;
|
||||||
|
else systemScreenMessage("Sound volume Increased");
|
||||||
|
} else if( strcmp( CmdLIRC, "VOLDOWN" ) == 0 ) {
|
||||||
|
soundVolume--;
|
||||||
|
if( soundVolume < 0 ) soundVolume = 0;
|
||||||
|
else systemScreenMessage("Sound volume Decreased");
|
||||||
|
} else if( strcmp( CmdLIRC, "LOADSTATE" ) == 0 ) {
|
||||||
|
sdlReadState(saveSlotPosition);
|
||||||
|
} else if( strcmp( CmdLIRC, "SAVESTATE" ) == 0 ) {
|
||||||
|
sdlWriteState(saveSlotPosition);
|
||||||
|
} else if( strcmp( CmdLIRC, "1" ) == 0 ) {
|
||||||
|
saveSlotPosition = 0;
|
||||||
|
systemScreenMessage("Selected State 1");
|
||||||
|
} else if( strcmp( CmdLIRC, "2" ) == 0 ) {
|
||||||
|
saveSlotPosition = 1;
|
||||||
|
systemScreenMessage("Selected State 2");
|
||||||
|
} else if( strcmp( CmdLIRC, "3" ) == 0 ) {
|
||||||
|
saveSlotPosition = 2;
|
||||||
|
systemScreenMessage("Selected State 3");
|
||||||
|
} else if( strcmp( CmdLIRC, "4" ) == 0 ) {
|
||||||
|
saveSlotPosition = 3;
|
||||||
|
systemScreenMessage("Selected State 4");
|
||||||
|
} else if( strcmp( CmdLIRC, "5" ) == 0 ) {
|
||||||
|
saveSlotPosition = 4;
|
||||||
|
systemScreenMessage("Selected State 5");
|
||||||
|
} else if( strcmp( CmdLIRC, "6" ) == 0 ) {
|
||||||
|
saveSlotPosition = 5;
|
||||||
|
systemScreenMessage("Selected State 6");
|
||||||
|
} else if( strcmp( CmdLIRC, "7" ) == 0 ) {
|
||||||
|
saveSlotPosition = 6;
|
||||||
|
systemScreenMessage("Selected State 7");
|
||||||
|
} else if( strcmp( CmdLIRC, "8" ) == 0 ) {
|
||||||
|
saveSlotPosition = 7;
|
||||||
|
systemScreenMessage("Selected State 8");
|
||||||
|
} else {
|
||||||
|
//do nothing
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//we dont need this code nomore
|
||||||
|
free(CodeLIRC);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef __MSC__
|
#ifdef __MSC__
|
||||||
#define stat _stat
|
#define stat _stat
|
||||||
#define S_IFDIR _S_IFDIR
|
#define S_IFDIR _S_IFDIR
|
||||||
|
@ -2313,6 +2469,9 @@ int main(int argc, char **argv)
|
||||||
systemMessage(0, "Failed to init joystick support: %s", SDL_GetError());
|
systemMessage(0, "Failed to init joystick support: %s", SDL_GetError());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef WITH_LIRC
|
||||||
|
StartLirc();
|
||||||
|
#endif
|
||||||
sdlCheckKeys();
|
sdlCheckKeys();
|
||||||
|
|
||||||
if(cartridgeType == 0) {
|
if(cartridgeType == 0) {
|
||||||
|
@ -2416,6 +2575,9 @@ int main(int argc, char **argv)
|
||||||
SDL_Delay(500);
|
SDL_Delay(500);
|
||||||
}
|
}
|
||||||
sdlPollEvents();
|
sdlPollEvents();
|
||||||
|
#ifdef WITH_LIRC
|
||||||
|
lircCheckInput();
|
||||||
|
#endif
|
||||||
if(mouseCounter) {
|
if(mouseCounter) {
|
||||||
mouseCounter--;
|
mouseCounter--;
|
||||||
if(mouseCounter == 0)
|
if(mouseCounter == 0)
|
||||||
|
@ -2443,6 +2605,10 @@ int main(int argc, char **argv)
|
||||||
filterPix = NULL;
|
filterPix = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef WITH_LIRC
|
||||||
|
StopLirc();
|
||||||
|
#endif
|
||||||
|
|
||||||
SDL_Quit();
|
SDL_Quit();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue