(svn r23241) -Codechange: make the decision when to go to the custom drawn cursor more prominently during the initialisation of OpenTTD

This commit is contained in:
rubidium 2011-11-17 21:09:08 +00:00
parent cc85ef493a
commit 6e31c2f068
10 changed files with 44 additions and 7 deletions

View File

@ -782,6 +782,7 @@ int ttd_main(int argc, char *argv[])
/* restore saved music volume */
_music_driver->SetVolume(_settings_client.music.music_vol);
_video_driver->ClaimMousePointer();
NetworkStartUp(); // initialize network-core

View File

@ -28,14 +28,16 @@
#include <sys/stat.h>
static bool _has_console;
static bool _cursor_disable = true;
static bool _cursor_visible = true;
static bool cursor_visible = true;
bool MyShowCursor(bool show)
bool MyShowCursor(bool show, bool toggle)
{
if (cursor_visible == show) return show;
if (toggle) _cursor_disable = !_cursor_disable;
if (_cursor_disable) return show;
if (_cursor_visible == show) return show;
cursor_visible = show;
_cursor_visible = show;
ShowCursor(show);
return !show;

View File

@ -13,7 +13,7 @@
#define WIN32_H
#include <windows.h>
bool MyShowCursor(bool show);
bool MyShowCursor(bool show, bool toggle = false);
typedef void (*Function)(int);
bool LoadLibraryList(Function proc[], const char *dll);

View File

@ -225,11 +225,23 @@ static bool CreateMainSurface(uint w, uint h)
snprintf(caption, sizeof(caption), "OpenTTD %s", _openttd_revision);
set_window_title(caption);
enable_hardware_cursor();
select_mouse_cursor(MOUSE_CURSOR_ARROW);
show_mouse(_allegro_screen);
GameSizeChanged();
return true;
}
bool VideoDriver_Allegro::ClaimMousePointer()
{
select_mouse_cursor(MOUSE_CURSOR_NONE);
show_mouse(_allegro_screen);
disable_hardware_cursor();
return true;
}
struct VkMapping {
uint16 vk_from;
byte vk_count;

View File

@ -31,6 +31,8 @@ public:
/* virtual */ bool AfterBlitterChange();
/* virtual */ bool ClaimMousePointer();
/* virtual */ const char *GetName() const { return "allegro"; }
};

View File

@ -259,13 +259,18 @@ static bool CreateMainSurface(uint w, uint h)
snprintf(caption, sizeof(caption), "OpenTTD %s", _openttd_revision);
SDL_CALL SDL_WM_SetCaption(caption, caption);
SDL_CALL SDL_ShowCursor(0);
GameSizeChanged();
return true;
}
bool VideoDriver_SDL::ClaimMousePointer()
{
SDL_CALL SDL_ShowCursor(0);
return true;
}
struct VkMapping {
uint16 vk_from;
byte vk_count;

View File

@ -31,6 +31,8 @@ public:
/* virtual */ bool AfterBlitterChange();
/* virtual */ bool ClaimMousePointer();
/* virtual */ const char *GetName() const { return "sdl"; }
};

View File

@ -56,6 +56,11 @@ public:
return true;
}
virtual bool ClaimMousePointer()
{
return true;
}
/**
* Whether the driver has a graphical user interface with the end user.
* Or in other words, whether we should spawn a thread for world generation

View File

@ -81,6 +81,12 @@ static void UpdatePalette(HDC dc, uint start, uint count)
SetDIBColorTable(dc, start, count, rgb);
}
bool VideoDriver_Win32::ClaimMousePointer()
{
MyShowCursor(false, true);
return true;
}
struct VkMapping {
byte vk_from;
byte vk_count;

View File

@ -31,6 +31,8 @@ public:
/* virtual */ bool AfterBlitterChange();
/* virtual */ bool ClaimMousePointer();
/* virtual */ const char *GetName() const { return "win32"; }
bool MakeWindow(bool full_screen);