Frontend builds sdl2transition
authorunc0rr
Mon, 11 Nov 2013 00:15:20 +0400
branchsdl2transition
changeset 9701 7f6786625667
parent 9699 fab319c85a39
child 9703 966d180184b4
Frontend builds
QTfrontend/CMakeLists.txt
QTfrontend/gameuiconfig.cpp
QTfrontend/util/SDLInteraction.cpp
QTfrontend/util/SDLInteraction.h
project_files/hedgewars.pro
--- a/QTfrontend/CMakeLists.txt	Sun Nov 10 14:04:15 2013 +0400
+++ b/QTfrontend/CMakeLists.txt	Mon Nov 11 00:15:20 2013 +0400
@@ -205,10 +205,20 @@
 list(APPEND HW_LINK_LIBS
     physfs physlayer
     ${QT_LIBRARIES}
-    ${SDL_LIBRARY}
-    ${SDLMIXER_LIBRARY}
     )
 
+if(USESDL12)
+    list(APPEND HW_LINK_LIBS
+        ${SDL_LIBRARY}
+        ${SDLMIXER_LIBRARY}
+        )
+else()
+    list(APPEND HW_LINK_LIBS
+        ${SDL2_LIBRARY}
+        ${SDL2MIXER_LIBRARY}
+        )
+endif()
+
 if(WIN32 AND NOT UNIX)
     if(NOT SDL_LIBRARY)
         list(APPEND HW_LINK_LIBS SDL)
--- a/QTfrontend/gameuiconfig.cpp	Sun Nov 10 14:04:15 2013 +0400
+++ b/QTfrontend/gameuiconfig.cpp	Mon Nov 11 00:15:20 2013 +0400
@@ -86,10 +86,11 @@
     else Form->ui.pageOptions->CBResolution->setCurrentIndex(t);
 
     // Default the windowed resolution to 5/6 of the screen size
-    int screenWidth = SDL_GetVideoInfo()->current_w * 5 / 6;
-    int screenHeight = SDL_GetVideoInfo()->current_h * 5 / 6;
-    QString widthStr; widthStr.setNum(screenWidth);
-    QString heightStr; heightStr.setNum(screenHeight);
+    QSize screenSize = SDLInteraction::instance().getCurrentResolution();
+    screenSize *= 5.0 / 6;
+
+    QString widthStr = QString::number(screenSize.width());
+    QString heightStr = QString::number(screenSize.height());
     QString wWidth = value("video/windowedWidth", widthStr).toString();
     QString wHeight = value("video/windowedHeight", heightStr).toString();
     // If left blank reset the resolution to the default
--- a/QTfrontend/util/SDLInteraction.cpp	Sun Nov 10 14:04:15 2013 +0400
+++ b/QTfrontend/util/SDLInteraction.cpp	Mon Nov 11 00:15:20 2013 +0400
@@ -84,6 +84,18 @@
 {
     QStringList result;
 
+#if SDL_VERSION_ATLEAST(2, 0, 0)
+    int modesNumber = SDL_GetNumDisplayModes(0);
+    SDL_DisplayMode mode;
+
+    for(int i = 0; i < modesNumber; ++i)
+    {
+        SDL_GetDisplayMode(0, i, &mode);
+
+        if ((mode.w >= 640) && (mode.h >= 480))
+            result << QString("%1x%2").arg(mode.w).arg(mode.h);
+    }
+#else
     SDL_Rect **modes;
 
     modes = SDL_ListModes(NULL, SDL_FULLSCREEN);
@@ -98,6 +110,7 @@
             if ((modes[i]->w >= 640) && (modes[i]->h >= 480))
                 result << QString("%1x%2").arg(modes[i]->w).arg(modes[i]->h);
     }
+#endif
 
     return result;
 }
@@ -107,6 +120,9 @@
 {
     QStringList result;
 
+#if SDL_VERSION_ATLEAST(2, 0, 0)
+
+#else
     int i = 0;
     while(i < 1024 && sdlkeys[i][1][0] != '\0')
         i++;
@@ -177,7 +193,8 @@
 
     // Terminate the list
     sdlkeys[i][0][0] = '\0';
-    sdlkeys[i][1][0] = '\0';
+    sdlkeys[i][1][0] = '\0';   
+#endif
 }
 
 
@@ -239,7 +256,7 @@
     if (!m_audioInitialized) return;
 
     if (m_music == NULL)
-        m_music = Mix_LoadMUS_RW(PHYSFSRWOPS_openRead(m_musicTrack.toLocal8Bit().constData()));
+        m_music = Mix_LoadMUS_RW(PHYSFSRWOPS_openRead(m_musicTrack.toLocal8Bit().constData()), 0);
 
     Mix_VolumeMusic(MIX_MAX_VOLUME - 28);
     Mix_FadeInMusic(m_music, -1, 1750);
@@ -260,3 +277,17 @@
     m_isPlayingMusic = false;
 }
 
+
+QSize SDLInteraction::getCurrentResolution()
+{
+#if SDL_VERSION_ATLEAST(2, 0, 0)
+    SDL_DisplayMode mode;
+
+    SDL_GetDesktopDisplayMode(0, &mode);
+
+    return QSize(mode.w, mode.h);
+#else
+    SDL_VideoInfo * vi = SDL_GetVideoInfo();
+    return QSize(vi->current_w, vi->current_h);
+#endif
+}
--- a/QTfrontend/util/SDLInteraction.h	Sun Nov 10 14:04:15 2013 +0400
+++ b/QTfrontend/util/SDLInteraction.h	Mon Nov 11 00:15:20 2013 +0400
@@ -27,6 +27,7 @@
 
 #include <QMap>
 #include <QStringList>
+#include <QSize>
 
 #include "SDL_mixer.h"
 
@@ -103,6 +104,8 @@
 
         /// Fades out and stops the background music (if playing).
         void stopMusic();
+
+        QSize getCurrentResolution();
 };
 
 
--- a/project_files/hedgewars.pro	Sun Nov 10 14:04:15 2013 +0400
+++ b/project_files/hedgewars.pro	Mon Nov 11 00:15:20 2013 +0400
@@ -273,8 +273,8 @@
 }
 
 !macx {
-    LIBS += -lSDL -lSDL_mixer -lSDL_net
+    LIBS += -lSDL2 -lSDL2_mixer -lSDL2_net
     !win32 {
-        INCLUDEPATH += /usr/local/include/SDL /usr/include/SDL
+        INCLUDEPATH += /usr/local/include/SDL2 /usr/include/SDL2
     }
 }