mirror of
https://github.com/elasota/Aerofoil.git
synced 2025-09-23 23:00:42 +00:00
Add full-screen option
This commit is contained in:
@@ -74,7 +74,7 @@
|
|||||||
"enabled" : true
|
"enabled" : true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name" : "Adjust resolution to fit window",
|
"name" : "Scale to fit window",
|
||||||
"itemType" : "CheckBox",
|
"itemType" : "CheckBox",
|
||||||
"pos" : [ 8, 105 ],
|
"pos" : [ 8, 105 ],
|
||||||
"size" : [ 256, 18 ],
|
"size" : [ 256, 18 ],
|
||||||
@@ -97,6 +97,14 @@
|
|||||||
"id" : 0,
|
"id" : 0,
|
||||||
"enabled" : true
|
"enabled" : true
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name" : "Full screen mode",
|
||||||
|
"itemType" : "CheckBox",
|
||||||
|
"pos" : [ 8, 172 ],
|
||||||
|
"size" : [ 256, 18 ],
|
||||||
|
"id" : 0,
|
||||||
|
"enabled" : true
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name" : "",
|
"name" : "",
|
||||||
"itemType" : "UserItem",
|
"itemType" : "UserItem",
|
||||||
|
@@ -10,6 +10,8 @@
|
|||||||
#include "PLKeyEncoding.h"
|
#include "PLKeyEncoding.h"
|
||||||
#include "Externs.h"
|
#include "Externs.h"
|
||||||
#include "Environ.h"
|
#include "Environ.h"
|
||||||
|
#include "HostDisplayDriver.h"
|
||||||
|
#include "IGpDisplayDriver.h"
|
||||||
#include "IOStream.h"
|
#include "IOStream.h"
|
||||||
#include "House.h"
|
#include "House.h"
|
||||||
#include "WindowManager.h"
|
#include "WindowManager.h"
|
||||||
@@ -215,6 +217,10 @@ void ReadInPrefs (void)
|
|||||||
doPrettyMap = false;
|
doPrettyMap = false;
|
||||||
doBitchDialogs = true;
|
doBitchDialogs = true;
|
||||||
|
|
||||||
|
IGpDisplayDriver *displayDriver = PortabilityLayer::HostDisplayDriver::GetInstance();
|
||||||
|
if (!displayDriver->IsFullScreen())
|
||||||
|
displayDriver->RequestToggleFullScreen(0);
|
||||||
|
|
||||||
modulePrefs.Dispose();
|
modulePrefs.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -41,9 +41,10 @@
|
|||||||
#define kScaleResolutionItem 10
|
#define kScaleResolutionItem 10
|
||||||
#define kUseICCProfileItem 11
|
#define kUseICCProfileItem 11
|
||||||
#define kDoColorFadeItem 12
|
#define kDoColorFadeItem 12
|
||||||
#define kBorder2Item 13
|
#define kFullScreenItem 13
|
||||||
#define kBorder3Item 14
|
#define kBorder2Item 14
|
||||||
#define kDispDefault 15
|
#define kBorder3Item 15
|
||||||
|
#define kDispDefault 16
|
||||||
|
|
||||||
// Sound dialog
|
// Sound dialog
|
||||||
#define kSofterItem 4
|
#define kSofterItem 4
|
||||||
@@ -106,7 +107,7 @@ Str15 tempLeftStr, tempRightStr, tempBattStr, tempBandStr;
|
|||||||
long tempLeftMap, tempRightMap, tempBattMap, tempBandMap;
|
long tempLeftMap, tempRightMap, tempBattMap, tempBandMap;
|
||||||
short whichCtrl, wasDepthPref;
|
short whichCtrl, wasDepthPref;
|
||||||
Boolean wasFade, wasIdle, wasPlay, wasTransit, wasZooms, wasBackground;
|
Boolean wasFade, wasIdle, wasPlay, wasTransit, wasZooms, wasBackground;
|
||||||
Boolean wasEscPauseKey, wasDemos, wasAutoScale, wasUseICCProfile, nextRestartChange, wasErrorCheck, needResolutionReset;
|
Boolean wasEscPauseKey, wasDemos, wasAutoScale, wasUseICCProfile, nextRestartChange, wasErrorCheck, wasFullscreenPref, needResolutionReset;
|
||||||
Boolean wasPrettyMap, wasBitchDialogs;
|
Boolean wasPrettyMap, wasBitchDialogs;
|
||||||
|
|
||||||
extern short numNeighbors, isDepthPref, maxFiles, willMaxFiles;
|
extern short numNeighbors, isDepthPref, maxFiles, willMaxFiles;
|
||||||
@@ -918,6 +919,9 @@ void DisplayUpdate (Dialog *theDialog)
|
|||||||
SetDialogItemValue(theDialog, kScaleResolutionItem, (short)isAutoScale);
|
SetDialogItemValue(theDialog, kScaleResolutionItem, (short)isAutoScale);
|
||||||
SetDialogItemValue(theDialog, kUseICCProfileItem, (short)isUseICCProfile);
|
SetDialogItemValue(theDialog, kUseICCProfileItem, (short)isUseICCProfile);
|
||||||
|
|
||||||
|
wasFullscreenPref = PortabilityLayer::HostDisplayDriver::GetInstance()->IsFullScreen();
|
||||||
|
SetDialogItemValue(theDialog, kFullScreenItem, wasFullscreenPref);
|
||||||
|
|
||||||
FrameDisplayIcon(theDialog, StdColors::Red());
|
FrameDisplayIcon(theDialog, StdColors::Red());
|
||||||
FrameDialogItemC(theDialog, kBorder1Item, kRedOrangeColor8);
|
FrameDialogItemC(theDialog, kBorder1Item, kRedOrangeColor8);
|
||||||
FrameDialogItemC(theDialog, kBorder2Item, kRedOrangeColor8);
|
FrameDialogItemC(theDialog, kBorder2Item, kRedOrangeColor8);
|
||||||
@@ -1090,6 +1094,11 @@ void DoDisplayPrefs (void)
|
|||||||
SetDialogItemValue(prefDlg, kUseICCProfileItem, (short)wasUseICCProfile);
|
SetDialogItemValue(prefDlg, kUseICCProfileItem, (short)wasUseICCProfile);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case kFullScreenItem:
|
||||||
|
wasFullscreenPref = !wasFullscreenPref;
|
||||||
|
SetDialogItemValue(prefDlg, kFullScreenItem, (short)wasFullscreenPref);
|
||||||
|
break;
|
||||||
|
|
||||||
case kDispDefault:
|
case kDispDefault:
|
||||||
FrameDisplayIcon(prefDlg, StdColors::White());
|
FrameDisplayIcon(prefDlg, StdColors::White());
|
||||||
DisplayDefaults();
|
DisplayDefaults();
|
||||||
@@ -1334,6 +1343,14 @@ void DoSettingsMain (void)
|
|||||||
nextRestartChange = false;
|
nextRestartChange = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
IGpDisplayDriver *displayDriver = PortabilityLayer::HostDisplayDriver::GetInstance();
|
||||||
|
|
||||||
|
if (displayDriver->IsFullScreen() != (wasFullscreenPref != 0))
|
||||||
|
{
|
||||||
|
displayDriver->RequestToggleFullScreen(0);
|
||||||
|
needResolutionReset = false;
|
||||||
|
}
|
||||||
|
|
||||||
if (needResolutionReset)
|
if (needResolutionReset)
|
||||||
{
|
{
|
||||||
PortabilityLayer::HostDisplayDriver::GetInstance()->RequestResetVirtualResolution();
|
PortabilityLayer::HostDisplayDriver::GetInstance()->RequestResetVirtualResolution();
|
||||||
|
@@ -47,6 +47,8 @@ public:
|
|||||||
virtual void RequestToggleFullScreen(uint32_t timestamp) = 0;
|
virtual void RequestToggleFullScreen(uint32_t timestamp) = 0;
|
||||||
virtual void RequestResetVirtualResolution() = 0;
|
virtual void RequestResetVirtualResolution() = 0;
|
||||||
|
|
||||||
|
virtual bool IsFullScreen() const = 0;
|
||||||
|
|
||||||
virtual const GpDisplayDriverProperties &GetProperties() const = 0;
|
virtual const GpDisplayDriverProperties &GetProperties() const = 0;
|
||||||
virtual IGpPrefsHandler *GetPrefsHandler() const = 0;
|
virtual IGpPrefsHandler *GetPrefsHandler() const = 0;
|
||||||
};
|
};
|
||||||
|
@@ -1458,7 +1458,7 @@ void GpDisplayDriverD3D11::SetUseICCProfile(bool useICCProfile)
|
|||||||
void GpDisplayDriverD3D11::RequestToggleFullScreen(uint32_t timestamp)
|
void GpDisplayDriverD3D11::RequestToggleFullScreen(uint32_t timestamp)
|
||||||
{
|
{
|
||||||
// Alt-Enter gets re-sent after a full-screen toggle, so we ignore toggle requests until half a second has elapsed
|
// Alt-Enter gets re-sent after a full-screen toggle, so we ignore toggle requests until half a second has elapsed
|
||||||
if (timestamp > m_lastFullScreenToggleTimeStamp + 30)
|
if (timestamp == 0 || timestamp > m_lastFullScreenToggleTimeStamp + 30)
|
||||||
{
|
{
|
||||||
m_isFullScreenDesired = !m_isFullScreenDesired;
|
m_isFullScreenDesired = !m_isFullScreenDesired;
|
||||||
m_lastFullScreenToggleTimeStamp = timestamp;
|
m_lastFullScreenToggleTimeStamp = timestamp;
|
||||||
@@ -1470,6 +1470,11 @@ void GpDisplayDriverD3D11::RequestResetVirtualResolution()
|
|||||||
m_isResolutionResetDesired = true;
|
m_isResolutionResetDesired = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool GpDisplayDriverD3D11::IsFullScreen() const
|
||||||
|
{
|
||||||
|
return m_isFullScreenDesired;
|
||||||
|
}
|
||||||
|
|
||||||
const GpDisplayDriverProperties &GpDisplayDriverD3D11::GetProperties() const
|
const GpDisplayDriverProperties &GpDisplayDriverD3D11::GetProperties() const
|
||||||
{
|
{
|
||||||
return m_properties;
|
return m_properties;
|
||||||
|
@@ -58,6 +58,8 @@ public:
|
|||||||
void RequestToggleFullScreen(uint32_t timestamp) override;
|
void RequestToggleFullScreen(uint32_t timestamp) override;
|
||||||
void RequestResetVirtualResolution() override;
|
void RequestResetVirtualResolution() override;
|
||||||
|
|
||||||
|
bool IsFullScreen() const override;
|
||||||
|
|
||||||
const GpDisplayDriverProperties &GetProperties() const override;
|
const GpDisplayDriverProperties &GetProperties() const override;
|
||||||
IGpPrefsHandler *GetPrefsHandler() const override;
|
IGpPrefsHandler *GetPrefsHandler() const override;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user