2 |
|
* Display_SDL.h - C64 graphics display, emulator window handling, |
3 |
|
* SDL specific stuff |
4 |
|
* |
5 |
< |
* Frodo (C) 1994-1997,2002-2003 Christian Bauer |
5 |
> |
* Frodo Copyright (C) Christian Bauer |
6 |
|
* |
7 |
|
* This program is free software; you can redistribute it and/or modify |
8 |
|
* it under the terms of the GNU General Public License as published by |
76 |
|
int init_graphics(void) |
77 |
|
{ |
78 |
|
// Init SDL |
79 |
< |
if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK) < 0) { |
79 |
> |
if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK | SDL_INIT_AUDIO) < 0) { |
80 |
|
fprintf(stderr, "Couldn't initialize SDL (%s)\n", SDL_GetError()); |
81 |
|
return 0; |
82 |
|
} |
98 |
|
SDL_WM_SetCaption(VERSION_STRING, "Frodo"); |
99 |
|
screen = SDL_SetVideoMode(DISPLAY_X, DISPLAY_Y + 17, 8, SDL_DOUBLEBUF | (ThePrefs.DisplayType == DISPTYPE_SCREEN ? SDL_FULLSCREEN : 0)); |
100 |
|
|
101 |
+ |
// Hide mouse pointer in fullscreen mode |
102 |
+ |
if (ThePrefs.DisplayType == DISPTYPE_SCREEN) |
103 |
+ |
SDL_ShowCursor(0); |
104 |
+ |
|
105 |
|
// LEDs off |
106 |
|
for (int i=0; i<4; i++) |
107 |
|
led_state[i] = old_led_state[i] = LED_OFF; |
126 |
|
|
127 |
|
C64Display::~C64Display() |
128 |
|
{ |
129 |
+ |
pulse_tv.it_interval.tv_sec = 0; |
130 |
+ |
pulse_tv.it_interval.tv_usec = 0; |
131 |
+ |
pulse_tv.it_value.tv_sec = 0; |
132 |
+ |
pulse_tv.it_value.tv_usec = 0; |
133 |
+ |
setitimer(ITIMER_REAL, &pulse_tv, NULL); |
134 |
+ |
|
135 |
|
SDL_Quit(); |
136 |
+ |
|
137 |
+ |
c64_disp = NULL; |
138 |
|
} |
139 |
|
|
140 |
|
|
441 |
|
switch (event.key.keysym.sym) { |
442 |
|
|
443 |
|
case SDLK_F9: // F9: Invoke SAM |
444 |
< |
SAM(TheC64); |
444 |
> |
if (ThePrefs.DisplayType == DISPTYPE_WINDOW) // don't invoke in fullscreen mode |
445 |
> |
SAM(TheC64); |
446 |
|
break; |
447 |
|
|
448 |
< |
case SDLK_F10: // F10: Quit |
449 |
< |
quit_requested = true; |
448 |
> |
case SDLK_F10: // F10: Prefs/Quit |
449 |
> |
TheC64->Pause(); |
450 |
> |
if (ThePrefs.DisplayType == DISPTYPE_SCREEN) { // exit fullscreen mode |
451 |
> |
SDL_WM_ToggleFullScreen(screen); |
452 |
> |
SDL_ShowCursor(1); |
453 |
> |
} |
454 |
> |
|
455 |
> |
if (!TheApp->RunPrefsEditor()) { |
456 |
> |
quit_requested = true; |
457 |
> |
} |
458 |
> |
|
459 |
> |
if (ThePrefs.DisplayType == DISPTYPE_SCREEN) { // enter fullscreen mode |
460 |
> |
SDL_ShowCursor(0); |
461 |
> |
SDL_WM_ToggleFullScreen(screen); |
462 |
> |
} |
463 |
> |
|
464 |
> |
TheC64->Resume(); |
465 |
|
break; |
466 |
|
|
467 |
|
case SDLK_F11: // F11: NMI (Restore) |
626 |
|
* Show a requester (error message) |
627 |
|
*/ |
628 |
|
|
629 |
< |
long int ShowRequester(char *a,char *b,char *) |
629 |
> |
long int ShowRequester(const char *a, const char *b, const char *) |
630 |
|
{ |
631 |
|
printf("%s: %s\n", a, b); |
632 |
|
return 1; |