[colobot] 06/377: Finalized SDL2 migration

Didier Raboud odyx at moszumanska.debian.org
Wed Mar 30 13:33:52 UTC 2016


This is an automated email from the git hooks/post-receive script.

odyx pushed a commit to branch debian/master
in repository colobot.

commit a0034f8000c424ad5f4b2d709db4ee9e13d13a05
Author: krzys-h <krzys_h at interia.pl>
Date:   Fri Sep 25 21:26:49 2015 +0200

    Finalized SDL2 migration
---
 src/app/app.cpp                    | 41 ++++++++++++---------------
 src/app/input.cpp                  | 22 +++++++++------
 src/common/event.cpp               |  9 ++++--
 src/common/event.h                 | 58 +++++++++++---------------------------
 src/common/image.cpp               |  1 -
 src/common/key.h                   |  4 ++-
 src/common/restext.cpp             | 15 ++++------
 src/graphics/engine/text.cpp       |  1 -
 src/graphics/opengl/gl21device.cpp |  2 --
 src/graphics/opengl/gl33device.cpp |  2 --
 src/graphics/opengl/gldevice.cpp   |  2 --
 11 files changed, 62 insertions(+), 95 deletions(-)

diff --git a/src/app/app.cpp b/src/app/app.cpp
index c57b682..94976a7 100644
--- a/src/app/app.cpp
+++ b/src/app/app.cpp
@@ -579,8 +579,6 @@ bool CApplication::Create()
         }
     }
 
-    //SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL); //TODO: ?
-
     // Don't generate joystick events
     SDL_JoystickEventState(SDL_IGNORE);
 
@@ -1002,30 +1000,34 @@ Event CApplication::ProcessSystemEvent()
     }
     else if (m_private->currentEvent.type == SDL_WINDOWEVENT)
     {
-        if (m_private->currentEvent.window.event == SDL_WINDOWEVENT_SIZE_CHANGED) {
+        if (m_private->currentEvent.window.event == SDL_WINDOWEVENT_SIZE_CHANGED)
+        {
             Gfx::DeviceConfig newConfig = m_deviceConfig;
             newConfig.size.x = m_private->currentEvent.window.data1;
             newConfig.size.y = m_private->currentEvent.window.data2;
             if (newConfig.size != m_deviceConfig.size)
                 ChangeVideoConfig(newConfig);
         }
-        // TODO: EVENT_ACTIVE
-        /*{
-            event.type = EVENT_ACTIVE;
 
-            auto data = MakeUnique<ActiveEventData>();
+        if (m_private->currentEvent.window.event == SDL_WINDOWEVENT_ENTER)
+        {
+            event.type = EVENT_MOUSE_ENTER;
+        }
 
-            if (m_private->currentEvent.active.type & SDL_APPINPUTFOCUS)
-                data->flags |= ACTIVE_INPUT;
-            if (m_private->currentEvent.active.type & SDL_APPMOUSEFOCUS)
-                data->flags |= ACTIVE_MOUSE;
-            if (m_private->currentEvent.active.type & SDL_APPACTIVE)
-                data->flags |= ACTIVE_APP;
+        if (m_private->currentEvent.window.event == SDL_WINDOWEVENT_LEAVE)
+        {
+            event.type = EVENT_MOUSE_LEAVE;
+        }
 
-            data->gain = m_private->currentEvent.active.gain == 1;
+        if (m_private->currentEvent.window.event == SDL_WINDOWEVENT_FOCUS_GAINED)
+        {
+            event.type = EVENT_FOCUS_GAINED;
+        }
 
-            event.data = std::move(data);
-        }*/
+        if (m_private->currentEvent.window.event == SDL_WINDOWEVENT_FOCUS_LOST)
+        {
+            event.type = EVENT_FOCUS_LOST;
+        }
     }
     else if ( (m_private->currentEvent.type == SDL_KEYDOWN) ||
               (m_private->currentEvent.type == SDL_KEYUP) )
@@ -1190,13 +1192,6 @@ void CApplication::LogEvent(const Event &event)
                     l->Trace(" button = %d\n", data->button);
                     break;
                 }
-                case EVENT_ACTIVE:
-                {
-                    auto data = event.GetData<ActiveEventData>();
-                    l->Trace(" flags = 0x%x\n", data->flags);
-                    l->Trace(" gain  = %s\n", data->gain ? "true" : "false");
-                    break;
-                }
                 default:
                     break;
             }
diff --git a/src/app/input.cpp b/src/app/input.cpp
index 32400dc..1ffecf8 100644
--- a/src/app/input.cpp
+++ b/src/app/input.cpp
@@ -330,6 +330,7 @@ InputSlot CInput::FindBinding(unsigned int key)
 void CInput::SaveKeyBindings()
 {
     std::stringstream key;
+    CConfigFile::GetInstancePointer()->SetStringProperty("Keybindings", "_Version", "SDL2");
     for (int i = 0; i < INPUT_SLOT_MAX; i++)
     {
         InputBinding b = GetInputBinding(static_cast<InputSlot>(i));
@@ -355,19 +356,22 @@ void CInput::LoadKeyBindings()
 {
     std::stringstream skey;
     std::string keys;
-    for (int i = 0; i < INPUT_SLOT_MAX; i++)
+    if (CConfigFile::GetInstancePointer()->GetStringProperty("Keybindings", "_Version", keys) && keys == "SDL2") // Keybindings from SDL1.2 are incompatible with SDL2 !!
     {
-        InputBinding b;
+        for (int i = 0; i < INPUT_SLOT_MAX; i++)
+        {
+            InputBinding b;
 
-        if (!CConfigFile::GetInstancePointer()->GetStringProperty("Keybindings", m_keyTable[static_cast<InputSlot>(i)], keys))
-            continue;
-        skey.clear();
-        skey.str(keys);
+            if (!CConfigFile::GetInstancePointer()->GetStringProperty("Keybindings", m_keyTable[static_cast<InputSlot>(i)], keys))
+                continue;
+            skey.clear();
+            skey.str(keys);
 
-        skey >> b.primary;
-        skey >> b.secondary;
+            skey >> b.primary;
+            skey >> b.secondary;
 
-        SetInputBinding(static_cast<InputSlot>(i), b);
+            SetInputBinding(static_cast<InputSlot>(i), b);
+        }
     }
 
     for (int i = 0; i < JOY_AXIS_SLOT_MAX; i++)
diff --git a/src/common/event.cpp b/src/common/event.cpp
index de326bb..5fce71b 100644
--- a/src/common/event.cpp
+++ b/src/common/event.cpp
@@ -52,17 +52,20 @@ void InitializeEventTypeTexts()
     EVENT_TYPE_TEXT[EVENT_MOUSE_BUTTON_UP]   = "EVENT_MOUSE_BUTTON_UP";
     EVENT_TYPE_TEXT[EVENT_MOUSE_WHEEL]       = "EVENT_MOUSE_WHEEL";
     EVENT_TYPE_TEXT[EVENT_MOUSE_MOVE]        = "EVENT_MOUSE_MOVE";
+    EVENT_TYPE_TEXT[EVENT_MOUSE_MOVE]        = "EVENT_MOUSE_ENTER";
+    EVENT_TYPE_TEXT[EVENT_MOUSE_MOVE]        = "EVENT_MOUSE_LEAVE";
+
     EVENT_TYPE_TEXT[EVENT_KEY_DOWN]          = "EVENT_KEY_DOWN";
     EVENT_TYPE_TEXT[EVENT_KEY_UP]            = "EVENT_KEY_UP";
-
-    EVENT_TYPE_TEXT[EVENT_ACTIVE]            = "EVENT_ACTIVE";
-
     EVENT_TYPE_TEXT[EVENT_TEXT_INPUT]        = "EVENT_TEXT_INPUT";
 
     EVENT_TYPE_TEXT[EVENT_JOY_AXIS]          = "EVENT_JOY_AXIS";
     EVENT_TYPE_TEXT[EVENT_JOY_BUTTON_DOWN]   = "EVENT_JOY_BUTTON_DOWN";
     EVENT_TYPE_TEXT[EVENT_JOY_BUTTON_UP]     = "EVENT_JOY_BUTTON_UP";
 
+    EVENT_TYPE_TEXT[EVENT_FOCUS_GAINED]      = "EVENT_FOCUS_GAINED";
+    EVENT_TYPE_TEXT[EVENT_FOCUS_LOST]        = "EVENT_FOCUS_LOST";
+
 
     EVENT_TYPE_TEXT[EVENT_UPDINTERFACE]      = "EVENT_UPDINTERFACE";
     EVENT_TYPE_TEXT[EVENT_WIN]               = "EVENT_WIN";
diff --git a/src/common/event.h b/src/common/event.h
index d7230b0..0da1518 100644
--- a/src/common/event.h
+++ b/src/common/event.h
@@ -62,23 +62,29 @@ enum EventType
     EVENT_MOUSE_WHEEL       = 5,
     //! Event sent after moving the mouse
     EVENT_MOUSE_MOVE        = 7,
+    //! Event sent when mouse enters the window
+    EVENT_MOUSE_ENTER       = 8,
+    //! Event sent when mouse leaves the window
+    EVENT_MOUSE_LEAVE       = 9,
+
     //! Event sent after pressing a key
-    EVENT_KEY_DOWN          = 8,
+    EVENT_KEY_DOWN          = 10,
     //! Event sent after releasing a key
-    EVENT_KEY_UP            = 9,
-
-    //! Event sent when application window loses/gains focus
-    EVENT_ACTIVE            = 10,
-
+    EVENT_KEY_UP            = 11,
     //! Event sent when user inputs some character
-    EVENT_TEXT_INPUT        = 11,
+    EVENT_TEXT_INPUT        = 12,
 
     //! Event sent after moving joystick axes
-    EVENT_JOY_AXIS          = 12,
+    EVENT_JOY_AXIS          = 13,
     //! Event sent after pressing a joystick button
-    EVENT_JOY_BUTTON_DOWN   = 13,
+    EVENT_JOY_BUTTON_DOWN   = 14,
     //! Event sent after releasing a joystick button
-    EVENT_JOY_BUTTON_UP     = 14,
+    EVENT_JOY_BUTTON_UP     = 15,
+
+    //! Event sent when the app winddow gains focus
+    EVENT_FOCUS_GAINED      = 16,
+    //! Event sent when the app winddow loses focus
+    EVENT_FOCUS_LOST        = 17,
 
     //!< Maximum value of system events
     EVENT_SYS_MAX,
@@ -679,38 +685,6 @@ struct JoyButtonEventData : public EventData
 };
 
 /**
- * \enum ActiveEventFlags
- * \brief Type of focus gained/lost
- */
-enum ActiveEventFlags
-{
-    //! Application window focus
-    ACTIVE_APP   = 0x01,
-    //! Input focus
-    ACTIVE_INPUT = 0x02,
-    //! Mouse focus
-    ACTIVE_MOUSE = 0x04
-
-};
-
-/**
- * \struct ActiveEventData
- * \brief Additional data for active event
- */
-struct ActiveEventData : public EventData
-{
-    std::unique_ptr<EventData> Clone() const override
-    {
-        return MakeUnique<ActiveEventData>(*this);
-    }
-
-    //! Flags (bitmask of enum values ActiveEventFlags)
-    unsigned char flags = 0;
-    //! True if the focus was gained; false otherwise
-    bool gain = false;
-};
-
-/**
  * \struct Event
  * \brief Event sent by system, interface or game
  *
diff --git a/src/common/image.cpp b/src/common/image.cpp
index 845eb06..dd57b61 100644
--- a/src/common/image.cpp
+++ b/src/common/image.cpp
@@ -238,7 +238,6 @@ void CImage::ConvertToRGBA()
 
 void CImage::BlitToNewRGBASurface(int width, int height)
 {
-    //m_data->surface->flags &= (~SDL_SRCALPHA); //TODO: ?
     SDL_Surface* convertedSurface = SDL_CreateRGBSurface(0, width, height, 32, 0x00FF0000, 0x0000FF00,
                                                          0x000000FF, 0xFF000000);
     assert(convertedSurface != nullptr);
diff --git a/src/common/key.h b/src/common/key.h
index a0d6658..d57dd09 100644
--- a/src/common/key.h
+++ b/src/common/key.h
@@ -26,7 +26,9 @@
 
 
 #include <SDL_keycode.h>
-#define SDLK_LAST (SDLK_SCANCODE_MASK << 1) //TODO
+
+// TODO: This is a bit ugly hack
+#define SDLK_LAST (SDLK_SCANCODE_MASK << 1)
 
 /* Key definitions are specially defined here so that it is clear in other parts of the code
   that these are used. It is to avoid having SDL-related enum values or #defines lying around
diff --git a/src/common/restext.cpp b/src/common/restext.cpp
index 40d17ab..1c1a27f 100644
--- a/src/common/restext.cpp
+++ b/src/common/restext.cpp
@@ -866,18 +866,17 @@ bool GetResource(ResType type, unsigned int num, std::string& text)
     }
     else
     {
-        // TODO: fix signed/unsigned comparations
-        if (num == KEY_INVALID)
+        if (num == static_cast<unsigned int>(KEY_INVALID))
             text.clear();
-        else if (num == VIRTUAL_KMOD_CTRL)
+        else if (num == static_cast<unsigned int>(VIRTUAL_KMOD(CTRL)))
             text = "Ctrl";
-        else if (num == VIRTUAL_KMOD_SHIFT)
+        else if (num == static_cast<unsigned int>(VIRTUAL_KMOD(SHIFT)))
             text = "Shift";
-        else if (num == VIRTUAL_KMOD_ALT)
+        else if (num == static_cast<unsigned int>(VIRTUAL_KMOD(ALT)))
             text = "Alt";
-        else if (num == VIRTUAL_KMOD_GUI)
+        else if (num == static_cast<unsigned int>(VIRTUAL_KMOD(GUI)))
             text = "Win"; // TODO: Better description of this key?
-        else if (num > VIRTUAL_JOY(0))
+        else if (num > static_cast<unsigned int>(VIRTUAL_JOY(0)))
         {
             text = gettext("Button %1");
             text = StrUtils::Replace(text, "%1", StrUtils::ToString<int>(1 + num - VIRTUAL_JOY(0)));
@@ -885,8 +884,6 @@ bool GetResource(ResType type, unsigned int num, std::string& text)
         else
         {
             text = SDL_GetKeyName(static_cast<SDL_Keycode>(num));
-            text = boost::regex_replace(text, boost::regex("\\[(.*)\\]"), "\\1");
-            text[0] = toupper(text[0]);
         }
         return true;
     }
diff --git a/src/graphics/engine/text.cpp b/src/graphics/engine/text.cpp
index 5cf724c..d100344 100644
--- a/src/graphics/engine/text.cpp
+++ b/src/graphics/engine/text.cpp
@@ -1017,7 +1017,6 @@ CharTexture CText::CreateCharTexture(UTF8Char ch, CachedFont* font)
     int w = Math::NextPowerOfTwo(textSurface->w);
     int h = Math::NextPowerOfTwo(textSurface->h);
 
-    //textSurface->flags = textSurface->flags & (~SDL_SRCALPHA); //TODO: ?
     SDL_Surface* textureSurface = SDL_CreateRGBSurface(0, w, h, 32, 0x00ff0000, 0x0000ff00,
                                                        0x000000ff, 0xff000000);
     SDL_BlitSurface(textSurface, nullptr, textureSurface, nullptr);
diff --git a/src/graphics/opengl/gl21device.cpp b/src/graphics/opengl/gl21device.cpp
index d07c6be..1c63deb 100644
--- a/src/graphics/opengl/gl21device.cpp
+++ b/src/graphics/opengl/gl21device.cpp
@@ -727,8 +727,6 @@ Texture CGL21Device::CreateTexture(ImageData *data, const TextureCreateParams &p
         SDL_PixelFormat format;
         format.BytesPerPixel = 4;
         format.BitsPerPixel = 32;
-        //format.alpha = 0; //TODO: ?
-        //format.colorkey = 0; //TODO: ?
         format.Aloss = format.Bloss = format.Gloss = format.Rloss = 0;
         format.Amask = 0xFF000000;
         format.Ashift = 24;
diff --git a/src/graphics/opengl/gl33device.cpp b/src/graphics/opengl/gl33device.cpp
index 65a8584..a3cc625 100644
--- a/src/graphics/opengl/gl33device.cpp
+++ b/src/graphics/opengl/gl33device.cpp
@@ -754,8 +754,6 @@ Texture CGL33Device::CreateTexture(ImageData *data, const TextureCreateParams &p
         SDL_PixelFormat format;
         format.BytesPerPixel = 4;
         format.BitsPerPixel = 32;
-        //format.alpha = 0; //TODO: ?
-        //format.colorkey = 0; //TODO: ?
         format.Aloss = format.Bloss = format.Gloss = format.Rloss = 0;
         format.Amask = 0xFF000000;
         format.Ashift = 24;
diff --git a/src/graphics/opengl/gldevice.cpp b/src/graphics/opengl/gldevice.cpp
index 102fa9b..f283a0a 100644
--- a/src/graphics/opengl/gldevice.cpp
+++ b/src/graphics/opengl/gldevice.cpp
@@ -696,8 +696,6 @@ Texture CGLDevice::CreateTexture(ImageData *data, const TextureCreateParams &par
         SDL_PixelFormat format;
         format.BytesPerPixel = 4;
         format.BitsPerPixel = 32;
-        //format.alpha = 0; //TODO: ?
-        //format.colorkey = 0; //TODO: ?
         format.Aloss = format.Bloss = format.Gloss = format.Rloss = 0;
         format.Amask = 0xFF000000;
         format.Ashift = 24;

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/colobot.git



More information about the Pkg-games-commits mailing list