From 120e0b5b384566c89984aeea86ae517909ebaac1 Mon Sep 17 00:00:00 2001
From: Andrei Karas <akaras@inbox.ru>
Date: Thu, 17 Dec 2015 22:52:07 +0300
Subject: Add support for full screen in nacl.

---
 src/actions/actions.cpp              |  4 ++--
 src/gui/widgets/tabs/setup_video.cpp |  6 ++++--
 src/gui/windowmanager.cpp            | 13 +++++++++++++
 src/gui/windowmanager.h              |  2 ++
 4 files changed, 21 insertions(+), 4 deletions(-)

diff --git a/src/actions/actions.cpp b/src/actions/actions.cpp
index 663c7d475..dec8539d3 100644
--- a/src/actions/actions.cpp
+++ b/src/actions/actions.cpp
@@ -41,6 +41,7 @@
 #include "gui/gui.h"
 #include "gui/popupmanager.h"
 #include "gui/sdlinput.h"
+#include "gui/windowmanager.h"
 
 #include "gui/popups/popupmenu.h"
 
@@ -909,8 +910,7 @@ impHandler0(attackHuman)
 
 impHandler0(safeVideoMode)
 {
-    if (mainGraphics)
-        mainGraphics->setFullscreen(false);
+    WindowManager::setFullScreen(false);
 
     return true;
 }
diff --git a/src/gui/widgets/tabs/setup_video.cpp b/src/gui/widgets/tabs/setup_video.cpp
index e96320762..1212da022 100644
--- a/src/gui/widgets/tabs/setup_video.cpp
+++ b/src/gui/widgets/tabs/setup_video.cpp
@@ -177,7 +177,9 @@ Setup_Video::Setup_Video(const Widget2 *const widget) :
 #else
     mNoFrameCheckBox->setEnabled(false);
     mEnableResizeCheckBox->setEnabled(false);
+#ifndef __native_client__
     mFsCheckBox->setEnabled(false);
+#endif  // __native_client__
 #endif
 
     int width = 600;
@@ -214,10 +216,10 @@ void Setup_Video::apply()
         if (intToRenderType(config.getIntValue("opengl")) == RENDER_SOFTWARE)
         {
 #endif
-            if (!mainGraphics->setFullscreen(fullscreen))
+            if (!WindowManager::setFullScreen(fullscreen))
             {
                 fullscreen = !fullscreen;
-                if (!mainGraphics->setFullscreen(fullscreen))
+                if (!WindowManager::setFullScreen(fullscreen))
                 {
                     std::stringstream errorMsg;
                     if (fullscreen)
diff --git a/src/gui/windowmanager.cpp b/src/gui/windowmanager.cpp
index dfc72ab73..1959ac4a1 100644
--- a/src/gui/windowmanager.cpp
+++ b/src/gui/windowmanager.cpp
@@ -243,6 +243,19 @@ void WindowManager::resizeVideo(int actualWidth,
     }
 }
 
+bool WindowManager::setFullScreen(const bool fs)
+{
+#ifdef __native_client__
+    naclPostMessage("set-fullscreen",
+        fs ? "on" : "off");
+    return true;
+#else
+    if (!mainGraphics)
+        return false;
+    return mainGraphics->setFullscreen(fs);
+#endif
+}
+
 void WindowManager::applyGrabMode()
 {
     SDL::grabInput(mainGraphics->getWindow(),
diff --git a/src/gui/windowmanager.h b/src/gui/windowmanager.h
index 8acdce0fd..79a4a383a 100644
--- a/src/gui/windowmanager.h
+++ b/src/gui/windowmanager.h
@@ -57,6 +57,8 @@ namespace WindowManager
                      int actualHeight,
                      const bool always);
 
+    bool setFullScreen(const bool fs);
+
     void applyScale();
 
 #ifndef USE_SDL2
-- 
cgit v1.2.3-70-g09d2