1 |
|
/* |
2 |
|
* video_sdl.cpp - Video/graphics emulation, SDL specific stuff |
3 |
|
* |
4 |
< |
* Basilisk II (C) 1997-2005 Christian Bauer |
4 |
> |
* Basilisk II (C) 1997-2008 Christian Bauer |
5 |
|
* |
6 |
|
* This program is free software; you can redistribute it and/or modify |
7 |
|
* it under the terms of the GNU General Public License as published by |
136 |
|
static volatile bool cursor_changed = false; // Flag: cursor changed, redraw_func must update the cursor |
137 |
|
static SDL_Color sdl_palette[256]; // Color palette to be used as CLUT and gamma table |
138 |
|
static bool sdl_palette_changed = false; // Flag: Palette changed, redraw thread must set new colors |
139 |
< |
static const int sdl_eventmask = SDL_MOUSEBUTTONDOWNMASK | SDL_MOUSEBUTTONUPMASK | SDL_MOUSEMOTIONMASK | SDL_KEYUPMASK | SDL_KEYDOWNMASK | SDL_VIDEOEXPOSEMASK | SDL_QUITMASK; |
139 |
> |
static const int sdl_eventmask = SDL_MOUSEEVENTMASK | SDL_KEYEVENTMASK | SDL_VIDEOEXPOSEMASK | SDL_QUITMASK | SDL_ACTIVEEVENTMASK; |
140 |
|
|
141 |
|
// Mutex to protect SDL events |
142 |
|
static SDL_mutex *sdl_events_lock = NULL; |
1543 |
|
#ifdef SHEEPSHAVER |
1544 |
|
bool video_can_change_cursor(void) |
1545 |
|
{ |
1546 |
< |
return (display_type == DISPLAY_WINDOW); |
1546 |
> |
static char driver[] = "Quartz?"; |
1547 |
> |
static int quartzok = -1; |
1548 |
> |
|
1549 |
> |
if (display_type != DISPLAY_WINDOW) |
1550 |
> |
return false; |
1551 |
> |
|
1552 |
> |
if (quartzok < 0) { |
1553 |
> |
if (SDL_VideoDriverName(driver, sizeof driver) == NULL || strncmp(driver, "Quartz", sizeof driver)) |
1554 |
> |
quartzok = true; |
1555 |
> |
else { |
1556 |
> |
// Quartz driver bug prevents cursor changing in SDL 1.2.11 and later |
1557 |
> |
const SDL_version *vp = SDL_Linked_Version(); |
1558 |
> |
quartzok = SDL_VERSIONNUM(vp->major, vp->minor, vp->patch) <= SDL_VERSIONNUM(1, 2, 10); |
1559 |
> |
} |
1560 |
> |
} |
1561 |
> |
|
1562 |
> |
return quartzok; |
1563 |
|
} |
1564 |
|
#endif |
1565 |
|
|
1874 |
|
ADBKeyDown(0x7f); // Power key |
1875 |
|
ADBKeyUp(0x7f); |
1876 |
|
break; |
1877 |
+ |
|
1878 |
+ |
// Application activate/deactivate; consume the event but otherwise ignore it |
1879 |
+ |
case SDL_ACTIVEEVENT: |
1880 |
+ |
break; |
1881 |
|
} |
1882 |
|
} |
1883 |
|
} |
2236 |
|
SDL_FreeCursor(sdl_cursor); |
2237 |
|
sdl_cursor = SDL_CreateCursor(MacCursor + 4, MacCursor + 36, 16, 16, MacCursor[2], MacCursor[3]); |
2238 |
|
if (sdl_cursor) { |
2239 |
+ |
SDL_ShowCursor(private_data == NULL || private_data->cursorVisible); |
2240 |
|
SDL_SetCursor(sdl_cursor); |
2241 |
|
#ifdef WIN32 |
2242 |
|
// XXX Windows apparently needs an extra mouse event to |