# HG changeset patch # User koda # Date 1296515905 -3600 # Node ID efcea232bbf64d13818773d50b4a2a8974277b88 # Parent 353781305c0718cc72cf0a0b930333eb72b949ed# Parent 69f8431a5d2018be8529b1b4c9b6f3df393c2fb9 merge 0.9.15 once again diff -r 353781305c07 -r efcea232bbf6 QTfrontend/hwform.cpp --- a/QTfrontend/hwform.cpp Mon Jan 31 21:59:59 2011 +0100 +++ b/QTfrontend/hwform.cpp Tue Feb 01 00:18:25 2011 +0100 @@ -36,6 +36,7 @@ #include #include #include +#include #include "hwform.h" #include "game.h" @@ -104,6 +105,10 @@ if (updater && config->isAutoUpdateEnabled()) updater->checkForUpdates(); #endif +#else + // ctrl+q closes frontend for consistency + QShortcut *closeFrontend = new QShortcut(QKeySequence("Ctrl+Q"), this); + connect (closeFrontend, SIGNAL(activated()), this, SLOT(close())); #endif UpdateTeamsLists(); diff -r 353781305c07 -r efcea232bbf6 gameServer/Actions.hs --- a/gameServer/Actions.hs Mon Jan 31 21:59:59 2011 +0100 +++ b/gameServer/Actions.hs Tue Feb 01 00:18:25 2011 +0100 @@ -391,8 +391,10 @@ answerLobbyNicks = [AnswerThisClient ("LOBBY:JOINED": lobbyNicks) | not $ Prelude.null lobbyNicks] -processAction (clID, serverInfo, clients, rooms) (KickClient kickID) = - liftM2 replaceID (return clID) (processAction (kickID, serverInfo, clients, rooms) $ ByeClient "Kicked") +processAction (clID, serverInfo, clients, rooms) (KickClient kickID) = do + let client = clients ! kickID + currentTime <- getCurrentTime + liftM2 replaceID (return clID) (processAction (kickID, serverInfo{lastLogins = (host client, (addUTCTime 60 $ currentTime, "60 seconds ban")) : lastLogins serverInfo}, clients, rooms) $ ByeClient "Kicked") processAction (clID, serverInfo, clients, rooms) (BanClient banNick) = @@ -419,12 +421,13 @@ infoM "Clients" (show (clientUID client) ++ ": New client. Time: " ++ show (connectTime client)) writeChan (sendChan client) ["CONNECTED", "Hedgewars server http://www.hedgewars.org/"] - let newLogins = takeWhile (\(_ , time) -> (connectTime client) `diffUTCTime` time <= 11) $ lastLogins serverInfo + let newLogins = takeWhile (\(_ , (time, _)) -> (connectTime client) `diffUTCTime` time <= 0) $ lastLogins serverInfo - if isJust $ host client `Prelude.lookup` newLogins then - processAction (clID, serverInfo{lastLogins = newLogins}, updatedClients, rooms) $ ByeClient "Reconnected too fast" + let info = host client `Prelude.lookup` newLogins + if isJust info then + processAction (clID, serverInfo{lastLogins = newLogins}, updatedClients, rooms) $ ByeClient (snd . fromJust $ info) else - return (clID, serverInfo{lastLogins = (host client, connectTime client) : newLogins}, updatedClients, rooms) + return (clID, serverInfo{lastLogins = (host client, (addUTCTime 10 $ connectTime client, "Reconnected too fast")) : newLogins}, updatedClients, rooms) processAction (clID, serverInfo, clients, rooms) PingAll = do diff -r 353781305c07 -r efcea232bbf6 gameServer/CoreTypes.hs --- a/gameServer/CoreTypes.hs Mon Jan 31 21:59:59 2011 +0100 +++ b/gameServer/CoreTypes.hs Tue Feb 01 00:18:25 2011 +0100 @@ -136,14 +136,14 @@ dbHost :: String, dbLogin :: String, dbPassword :: String, - lastLogins :: [(String, UTCTime)], + lastLogins :: [(String, (UTCTime, String))], stats :: TMVar StatisticsInfo, coreChan :: Chan CoreMessage, dbQueries :: Chan DBQuery } instance Show ServerInfo where - show si = "Server Info" + show _ = "Server Info" newServerInfo = ( ServerInfo diff -r 353781305c07 -r efcea232bbf6 hedgewars/hwengine.pas --- a/hedgewars/hwengine.pas Mon Jan 31 21:59:59 2011 +0100 +++ b/hedgewars/hwengine.pas Tue Feb 01 00:18:25 2011 +0100 @@ -243,7 +243,7 @@ if p <> ptMapCurrent then Pathz[p]:= PathPrefix + '/' + Pathz[p]; WriteToConsole('Init SDL... '); - SDLTry(SDL_Init(SDL_INIT_VIDEO) >= 0, true); + SDLTry(SDL_Init(SDL_INIT_VIDEO or SDL_INIT_NOPARACHUTE) >= 0, true); WriteLnToConsole(msgOK); SDL_EnableUNICODE(1); diff -r 353781305c07 -r efcea232bbf6 hedgewars/uStore.pas diff -r 353781305c07 -r efcea232bbf6 project_files/HedgewarsMobile/SDL.patch --- a/project_files/HedgewarsMobile/SDL.patch Mon Jan 31 21:59:59 2011 +0100 +++ b/project_files/HedgewarsMobile/SDL.patch Tue Feb 01 00:18:25 2011 +0100 @@ -1,22 +1,7 @@ -diff -r d716dff4b13e Xcode-iPhoneOS/SDL/SDLiPhoneOS.xcodeproj/project.pbxproj ---- a/Xcode-iPhoneOS/SDL/SDLiPhoneOS.xcodeproj/project.pbxproj Thu Dec 02 11:56:23 2010 -0800 -+++ b/Xcode-iPhoneOS/SDL/SDLiPhoneOS.xcodeproj/project.pbxproj Thu Dec 02 22:38:57 2010 +0100 -@@ -1262,7 +1262,14 @@ - isa = PBXProject; - buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "SDLiPhoneOS" */; - compatibilityVersion = "Xcode 3.1"; -+ developmentRegion = English; - hasScannedForEncodings = 1; -+ knownRegions = ( -+ English, -+ Japanese, -+ French, -+ German, -+ ); - mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */; - projectDirPath = ""; - projectRoot = ../..; -@@ -1549,15 +1556,19 @@ +diff -r f2c2f0ecba5f Xcode-iPhoneOS/SDL/SDLiPhoneOS.xcodeproj/project.pbxproj +--- a/Xcode-iPhoneOS/SDL/SDLiPhoneOS.xcodeproj/project.pbxproj Sun Jan 30 13:42:05 2011 -0800 ++++ b/Xcode-iPhoneOS/SDL/SDLiPhoneOS.xcodeproj/project.pbxproj Mon Jan 31 23:57:58 2011 +0100 +@@ -1564,11 +1564,15 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -32,12 +17,7 @@ IPHONEOS_DEPLOYMENT_TARGET = 3.1; ONLY_ACTIVE_ARCH = NO; PREBINDING = NO; -- SDKROOT = iphoneos3.2; -+ SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; -@@ -1566,14 +1577,19 @@ +@@ -1581,12 +1585,18 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -45,23 +25,21 @@ + ARCHS = "$(ARCHS_STANDARD_32_BIT)"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; GCC_C_LANGUAGE_STANDARD = c99; -+ GCC_OPTIMIZATION_LEVEL = 2; ++ GCC_OPTIMIZATION_LEVEL = s; + GCC_THUMB_SUPPORT = NO; -+ GCC_UNROLL_LOOPS = YES; ++ GCC_UNROLL_LOOPS = NO; + GCC_VERSION = com.apple.compilers.llvmgcc42; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = NO; + HEADER_SEARCH_PATHS = "\"$(SRCROOT)/../../include\""; IPHONEOS_DEPLOYMENT_TARGET = 3.1; ++ OTHER_CFLAGS = ""; PREBINDING = NO; -- SDKROOT = iphoneos3.2; -+ SDKROOT = iphoneos; + SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Release; -diff -r d716dff4b13e Xcode-iPhoneOS/SDL/testsdl-Info.plist ---- a/Xcode-iPhoneOS/SDL/testsdl-Info.plist Thu Dec 02 11:56:23 2010 -0800 -+++ b/Xcode-iPhoneOS/SDL/testsdl-Info.plist Thu Dec 02 22:38:57 2010 +0100 +diff -r f2c2f0ecba5f Xcode-iPhoneOS/SDL/testsdl-Info.plist +--- a/Xcode-iPhoneOS/SDL/testsdl-Info.plist Sun Jan 30 13:42:05 2011 -0800 ++++ b/Xcode-iPhoneOS/SDL/testsdl-Info.plist Mon Jan 31 23:57:58 2011 +0100 @@ -16,7 +16,5 @@ ???? CFBundleVersion @@ -70,19 +48,10 @@ - MainWindow -diff -r d716dff4b13e include/SDL_config_iphoneos.h ---- a/include/SDL_config_iphoneos.h Thu Dec 02 11:56:23 2010 -0800 -+++ b/include/SDL_config_iphoneos.h Thu Dec 02 22:38:57 2010 +0100 -@@ -98,6 +98,8 @@ - #define HAVE_COS 1 - #define HAVE_COSF 1 - #define HAVE_FABS 1 -+#define HAVE_ATAN 1 -+#define HAVE_ATAN2 1 - #define HAVE_FLOOR 1 - #define HAVE_LOG 1 - #define HAVE_POW 1 -@@ -114,7 +116,7 @@ +diff -r f2c2f0ecba5f include/SDL_config_iphoneos.h +--- a/include/SDL_config_iphoneos.h Sun Jan 30 13:42:05 2011 -0800 ++++ b/include/SDL_config_iphoneos.h Mon Jan 31 23:57:58 2011 +0100 +@@ -119,7 +119,7 @@ /* enable iPhone version of Core Audio driver */ #define SDL_AUDIO_DRIVER_COREAUDIOIPHONE 1 /* Enable the dummy audio driver (src/audio/dummy/\*.c) */ @@ -91,7 +60,7 @@ /* Enable the stub haptic driver (src/haptic/dummy/\*.c) */ #define SDL_HAPTIC_DISABLED 1 -@@ -135,7 +137,7 @@ +@@ -140,14 +140,17 @@ /* Supported video drivers */ #define SDL_VIDEO_DRIVER_UIKIT 1 @@ -100,7 +69,18 @@ /* enable OpenGL ES */ #define SDL_VIDEO_OPENGL_ES 1 -@@ -152,4 +154,7 @@ + #define SDL_VIDEO_RENDER_OGL_ES 1 + + /* Enable system power support */ +-#define SDL_POWER_UIKIT 1 ++#define SDL_POWER_UIKIT 0 ++ ++/* enable joystick subsystem */ ++#define SDL_JOYSTICK_DISABLED 1 + + /* enable iPhone keyboard support */ + #define SDL_IPHONE_KEYBOARD 1 +@@ -157,4 +160,7 @@ */ #define SDL_IPHONE_MAX_GFORCE 5.0 @@ -108,109 +88,10 @@ +#define SDL_VIEW_TAG 456987 + #endif /* _SDL_config_iphoneos_h */ -diff -r d716dff4b13e src/SDL_fatal.c ---- a/src/SDL_fatal.c Thu Dec 02 11:56:23 2010 -0800 -+++ b/src/SDL_fatal.c Thu Dec 02 22:38:57 2010 +0100 -@@ -38,9 +38,9 @@ - static void - SDL_Parachute(int sig) - { -- signal(sig, SIG_DFL); -+ /*signal(sig, SIG_DFL); - SDL_Quit(); -- raise(sig); -+ raise(sig);*/ - } - - static const int SDL_fatal_signals[] = { -diff -r d716dff4b13e src/video/SDL_renderer_gles.c ---- a/src/video/SDL_renderer_gles.c Thu Dec 02 11:56:23 2010 -0800 -+++ b/src/video/SDL_renderer_gles.c Thu Dec 02 22:38:57 2010 +0100 -@@ -324,6 +324,9 @@ - data->glDisable(GL_CULL_FACE); - data->updateSize = SDL_TRUE; - -+ data->glEnableClientState(GL_VERTEX_ARRAY); -+ data->glEnableClientState(GL_TEXTURE_COORD_ARRAY); -+ - return renderer; - } - -@@ -665,9 +668,7 @@ - vertices[2*i+1] = (GLshort)points[i].y; - } - data->glVertexPointer(2, GL_SHORT, 0, vertices); -- data->glEnableClientState(GL_VERTEX_ARRAY); - data->glDrawArrays(GL_POINTS, 0, count); -- data->glDisableClientState(GL_VERTEX_ARRAY); - SDL_stack_free(vertices); - - return 0; -@@ -694,7 +695,6 @@ - vertices[2*i+1] = (GLshort)points[i].y; - } - data->glVertexPointer(2, GL_SHORT, 0, vertices); -- data->glEnableClientState(GL_VERTEX_ARRAY); - if (count > 2 && - points[0].x == points[count-1].x && points[0].y == points[count-1].y) { - /* GL_LINE_LOOP takes care of the final segment */ -@@ -703,7 +703,6 @@ - } else { - data->glDrawArrays(GL_LINE_STRIP, 0, count); - } -- data->glDisableClientState(GL_VERTEX_ARRAY); - SDL_stack_free(vertices); - - return 0; -@@ -723,7 +722,6 @@ - (GLfloat) renderer->b * inv255f, - (GLfloat) renderer->a * inv255f); - -- data->glEnableClientState(GL_VERTEX_ARRAY); - for (i = 0; i < count; ++i) { - const SDL_Rect *rect = rects[i]; - GLshort minx = rect->x; -@@ -743,7 +741,6 @@ - data->glVertexPointer(2, GL_SHORT, 0, vertices); - data->glDrawArrays(GL_LINE_LOOP, 0, 4); - } -- data->glDisableClientState(GL_VERTEX_ARRAY); - - return 0; - } -@@ -762,7 +759,6 @@ - (GLfloat) renderer->b * inv255f, - (GLfloat) renderer->a * inv255f); - -- data->glEnableClientState(GL_VERTEX_ARRAY); - for (i = 0; i < count; ++i) { - const SDL_Rect *rect = rects[i]; - GLshort minx = rect->x; -@@ -782,7 +778,6 @@ - data->glVertexPointer(2, GL_SHORT, 0, vertices); - data->glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); - } -- data->glDisableClientState(GL_VERTEX_ARRAY); - - return 0; - } -@@ -925,12 +920,8 @@ - texCoords[7] = maxv; - - data->glVertexPointer(2, GL_SHORT, 0, vertices); -- data->glEnableClientState(GL_VERTEX_ARRAY); - data->glTexCoordPointer(2, GL_FLOAT, 0, texCoords); -- data->glEnableClientState(GL_TEXTURE_COORD_ARRAY); - data->glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); -- data->glDisableClientState(GL_TEXTURE_COORD_ARRAY); -- data->glDisableClientState(GL_VERTEX_ARRAY); - } - - data->glDisable(GL_TEXTURE_2D); -diff -r d716dff4b13e src/video/SDL_video.c ---- a/src/video/SDL_video.c Thu Dec 02 11:56:23 2010 -0800 -+++ b/src/video/SDL_video.c Thu Dec 02 22:38:57 2010 +0100 -@@ -1421,9 +1421,9 @@ +diff -r f2c2f0ecba5f src/video/SDL_video.c +--- a/src/video/SDL_video.c Sun Jan 30 13:42:05 2011 -0800 ++++ b/src/video/SDL_video.c Mon Jan 31 23:57:58 2011 +0100 +@@ -1414,9 +1414,9 @@ SDL_MinimizeWindow(window); } @@ -222,23 +103,20 @@ if ((window->flags & (SDL_WINDOW_INPUT_GRABBED | SDL_WINDOW_FULLSCREEN)) && _this->SetWindowGrab) { _this->SetWindowGrab(_this, window); -diff -r d716dff4b13e src/video/uikit/SDL_uikitopengles.m ---- a/src/video/uikit/SDL_uikitopengles.m Thu Dec 02 11:56:23 2010 -0800 -+++ b/src/video/uikit/SDL_uikitopengles.m Thu Dec 02 22:38:57 2010 +0100 -@@ -114,8 +114,8 @@ - bBits: _this->gl_config.blue_size \ +diff -r f2c2f0ecba5f src/video/uikit/SDL_uikitopengles.m +--- a/src/video/uikit/SDL_uikitopengles.m Sun Jan 30 13:42:05 2011 -0800 ++++ b/src/video/uikit/SDL_uikitopengles.m Mon Jan 31 23:57:58 2011 +0100 +@@ -115,6 +115,7 @@ aBits: _this->gl_config.alpha_size \ depthBits: _this->gl_config.depth_size]; -- -- data->view = view; -+ view.tag = SDL_VIEW_TAG; -+ data->view = view; + ++ view.tag = SDL_VIEW_TAG; + data->view = view; /* add the view to our window */ - [uiwindow addSubview: view ]; -diff -r d716dff4b13e src/video/uikit/SDL_uikitopenglview.m ---- a/src/video/uikit/SDL_uikitopenglview.m Thu Dec 02 11:56:23 2010 -0800 -+++ b/src/video/uikit/SDL_uikitopenglview.m Thu Dec 02 22:38:57 2010 +0100 +diff -r f2c2f0ecba5f src/video/uikit/SDL_uikitopenglview.m +--- a/src/video/uikit/SDL_uikitopenglview.m Sun Jan 30 13:42:05 2011 -0800 ++++ b/src/video/uikit/SDL_uikitopenglview.m Mon Jan 31 23:57:58 2011 +0100 @@ -117,6 +117,8 @@ return NO; } @@ -248,9 +126,9 @@ } return self; } -diff -r d716dff4b13e src/video/uikit/SDL_uikitview.h ---- a/src/video/uikit/SDL_uikitview.h Thu Dec 02 11:56:23 2010 -0800 -+++ b/src/video/uikit/SDL_uikitview.h Thu Dec 02 22:38:57 2010 +0100 +diff -r f2c2f0ecba5f src/video/uikit/SDL_uikitview.h +--- a/src/video/uikit/SDL_uikitview.h Sun Jan 30 13:42:05 2011 -0800 ++++ b/src/video/uikit/SDL_uikitview.h Mon Jan 31 23:57:58 2011 +0100 @@ -23,11 +23,11 @@ #include "SDL_stdinc.h" #include "SDL_events.h" @@ -266,45 +144,18 @@ #endif /* *INDENT-OFF* */ -diff -r d716dff4b13e src/video/uikit/SDL_uikitview.m ---- a/src/video/uikit/SDL_uikitview.m Thu Dec 02 11:56:23 2010 -0800 -+++ b/src/video/uikit/SDL_uikitview.m Thu Dec 02 22:38:57 2010 +0100 -@@ -35,9 +35,6 @@ - @implementation SDL_uikitview - - - (void)dealloc { --#if SDL_IPHONE_KEYBOARD -- [textField release]; --#endif - [super dealloc]; - } - -@@ -220,7 +217,7 @@ - /* Set ourselves up as a UITextFieldDelegate */ - - (void)initializeKeyboard { - -- textField = [[[UITextField alloc] initWithFrame: CGRectZero] autorelease]; -+ textField = [[UITextField alloc] initWithFrame: CGRectZero]; - textField.delegate = self; - /* placeholder so there is something to delete! */ - textField.text = @" "; -@@ -238,6 +235,7 @@ - keyboardVisible = NO; - /* add the UITextField (hidden) to our view */ - [self addSubview: textField]; -+ [textField release]; - } - - /* reveal onscreen virtual keyboard */ -@@ -300,6 +298,7 @@ +diff -r f2c2f0ecba5f src/video/uikit/SDL_uikitview.m +--- a/src/video/uikit/SDL_uikitview.m Sun Jan 30 13:42:05 2011 -0800 ++++ b/src/video/uikit/SDL_uikitview.m Mon Jan 31 23:57:58 2011 +0100 +@@ -298,6 +298,7 @@ /* Terminates the editing session */ - (BOOL)textFieldShouldReturn:(UITextField*)_textField { -+ SDL_SendKeyboardKey(SDL_PRESSED, SDL_SCANCODE_RETURN); ++ SDL_SendKeyboardKey(SDL_PRESSED, SDL_SCANCODE_RETURN); [self hideKeyboard]; return YES; } -@@ -314,7 +313,7 @@ +@@ -312,7 +313,7 @@ int SDL_iPhoneKeyboardShow(SDL_Window * window) { SDL_WindowData *data; @@ -313,7 +164,7 @@ if (NULL == window) { SDL_SetError("Window does not exist"); -@@ -322,7 +321,8 @@ +@@ -320,7 +321,8 @@ } data = (SDL_WindowData *)window->driverdata; @@ -323,7 +174,7 @@ if (nil == view) { SDL_SetError("Window has no view"); -@@ -337,7 +337,7 @@ +@@ -335,7 +337,7 @@ int SDL_iPhoneKeyboardHide(SDL_Window * window) { SDL_WindowData *data; @@ -332,7 +183,7 @@ if (NULL == window) { SDL_SetError("Window does not exist"); -@@ -345,7 +345,8 @@ +@@ -343,7 +345,8 @@ } data = (SDL_WindowData *)window->driverdata; @@ -342,7 +193,7 @@ if (NULL == view) { SDL_SetError("Window has no view"); -@@ -360,7 +361,7 @@ +@@ -358,7 +361,7 @@ SDL_bool SDL_iPhoneKeyboardIsShown(SDL_Window * window) { SDL_WindowData *data; @@ -351,7 +202,7 @@ if (NULL == window) { SDL_SetError("Window does not exist"); -@@ -368,7 +369,8 @@ +@@ -366,7 +369,8 @@ } data = (SDL_WindowData *)window->driverdata; @@ -361,7 +212,7 @@ if (NULL == view) { SDL_SetError("Window has no view"); -@@ -382,7 +384,7 @@ +@@ -380,7 +384,7 @@ int SDL_iPhoneKeyboardToggle(SDL_Window * window) { SDL_WindowData *data; @@ -370,7 +221,7 @@ if (NULL == window) { SDL_SetError("Window does not exist"); -@@ -390,7 +392,8 @@ +@@ -388,7 +392,8 @@ } data = (SDL_WindowData *)window->driverdata; @@ -380,10 +231,10 @@ if (NULL == view) { SDL_SetError("Window has no view"); -diff -r d716dff4b13e src/video/uikit/SDL_uikitwindow.m ---- a/src/video/uikit/SDL_uikitwindow.m Thu Dec 02 11:56:23 2010 -0800 -+++ b/src/video/uikit/SDL_uikitwindow.m Thu Dec 02 22:38:57 2010 +0100 -@@ -144,7 +144,10 @@ +diff -r f2c2f0ecba5f src/video/uikit/SDL_uikitwindow.m +--- a/src/video/uikit/SDL_uikitwindow.m Sun Jan 30 13:42:05 2011 -0800 ++++ b/src/video/uikit/SDL_uikitwindow.m Mon Jan 31 23:57:58 2011 +0100 +@@ -145,7 +145,10 @@ if (SDL_UIKit_supports_multiple_displays) { [uiwindow setScreen:uiscreen]; } @@ -395,9 +246,9 @@ if (SetupWindowData(_this, window, uiwindow, SDL_TRUE) < 0) { [uiwindow release]; return -1; -diff -r d716dff4b13e src/video/uikit/keyinfotable.h ---- a/src/video/uikit/keyinfotable.h Thu Dec 02 11:56:23 2010 -0800 -+++ b/src/video/uikit/keyinfotable.h Thu Dec 02 22:38:57 2010 +0100 +diff -r f2c2f0ecba5f src/video/uikit/keyinfotable.h +--- a/src/video/uikit/keyinfotable.h Sun Jan 30 13:42:05 2011 -0800 ++++ b/src/video/uikit/keyinfotable.h Mon Jan 31 23:57:58 2011 +0100 @@ -54,7 +54,7 @@ /* 10 */ { SDL_SCANCODE_UNKNOWN, 0 }, /* 11 */ { SDL_SCANCODE_UNKNOWN, 0 }, diff -r 353781305c07 -r efcea232bbf6 share/hedgewars/Data/Maps/Blizzard/mask.png