mirror of
https://github.com/ZDoom/raze-gles.git
synced 2025-01-27 09:20:51 +00:00
- moved around a few bits of code to get rid of winbits.cpp/h.
This commit is contained in:
parent
3914eb5f85
commit
773be7db26
7 changed files with 153 additions and 187 deletions
|
@ -474,7 +474,6 @@ endif()
|
||||||
# Start defining source files for Demolition
|
# Start defining source files for Demolition
|
||||||
set( PLAT_WIN32_SOURCES
|
set( PLAT_WIN32_SOURCES
|
||||||
glad/src/glad_wgl.c
|
glad/src/glad_wgl.c
|
||||||
platform/win32/winbits.cpp
|
|
||||||
platform/win32/i_specialpaths.cpp
|
platform/win32/i_specialpaths.cpp
|
||||||
platform/win32/startwin.game.cpp
|
platform/win32/startwin.game.cpp
|
||||||
|
|
||||||
|
|
|
@ -75,7 +75,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
# include <shellapi.h>
|
# include <shellapi.h>
|
||||||
# define UPDATEINTERVAL 604800 // 1w
|
# define UPDATEINTERVAL 604800 // 1w
|
||||||
# include "win32/winbits.h"
|
|
||||||
#else
|
#else
|
||||||
# ifndef GEKKO
|
# ifndef GEKKO
|
||||||
# include <sys/ioctl.h>
|
# include <sys/ioctl.h>
|
||||||
|
|
|
@ -59,10 +59,10 @@
|
||||||
# include "osxbits.h"
|
# include "osxbits.h"
|
||||||
# include <mach/mach.h>
|
# include <mach/mach.h>
|
||||||
# include <mach/mach_time.h>
|
# include <mach/mach_time.h>
|
||||||
#elif defined _WIN32
|
|
||||||
# include "win32/winbits.h"
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
FString progdir;
|
||||||
|
|
||||||
CVAR(Int, r_displayindex, 0, CVAR_ARCHIVE | CVAR_VIDEOCONFIG)
|
CVAR(Int, r_displayindex, 0, CVAR_ARCHIVE | CVAR_VIDEOCONFIG)
|
||||||
CVAR(Int, r_borderless, 2, CVAR_ARCHIVE | CVAR_VIDEOCONFIG)
|
CVAR(Int, r_borderless, 2, CVAR_ARCHIVE | CVAR_VIDEOCONFIG)
|
||||||
CVAR(Int, maxrefreshfreq, 0, CVAR_ARCHIVE | CVAR_VIDEOCONFIG)
|
CVAR(Int, maxrefreshfreq, 0, CVAR_ARCHIVE | CVAR_VIDEOCONFIG)
|
||||||
|
@ -156,6 +156,71 @@ uint16_t joydead[9], joysatur[9];
|
||||||
|
|
||||||
#define MAX_ERRORTEXT 4096
|
#define MAX_ERRORTEXT 4096
|
||||||
|
|
||||||
|
//==========================================================================
|
||||||
|
//
|
||||||
|
// CalculateCPUSpeed
|
||||||
|
//
|
||||||
|
// Make a decent guess at how much time elapses between TSC steps. This can
|
||||||
|
// vary over runtime depending on power management settings, so should not
|
||||||
|
// be used anywhere that truely accurate timing actually matters.
|
||||||
|
//
|
||||||
|
//==========================================================================
|
||||||
|
|
||||||
|
double PerfToSec, PerfToMillisec;
|
||||||
|
#include "stats.h"
|
||||||
|
|
||||||
|
static void CalculateCPUSpeed()
|
||||||
|
{
|
||||||
|
LARGE_INTEGER freq;
|
||||||
|
|
||||||
|
QueryPerformanceFrequency(&freq);
|
||||||
|
|
||||||
|
if (freq.QuadPart != 0)
|
||||||
|
{
|
||||||
|
LARGE_INTEGER count1, count2;
|
||||||
|
cycle_t ClockCalibration;
|
||||||
|
DWORD min_diff;
|
||||||
|
|
||||||
|
ClockCalibration.Reset();
|
||||||
|
|
||||||
|
// Count cycles for at least 55 milliseconds.
|
||||||
|
// The performance counter may be very low resolution compared to CPU
|
||||||
|
// speeds today, so the longer we count, the more accurate our estimate.
|
||||||
|
// On the other hand, we don't want to count too long, because we don't
|
||||||
|
// want the user to notice us spend time here, since most users will
|
||||||
|
// probably never use the performance statistics.
|
||||||
|
min_diff = freq.LowPart * 11 / 200;
|
||||||
|
|
||||||
|
// Minimize the chance of task switching during the testing by going very
|
||||||
|
// high priority. This is another reason to avoid timing for too long.
|
||||||
|
SetPriorityClass(GetCurrentProcess(), REALTIME_PRIORITY_CLASS);
|
||||||
|
SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_TIME_CRITICAL);
|
||||||
|
|
||||||
|
// Make sure we start timing on a counter boundary.
|
||||||
|
QueryPerformanceCounter(&count1);
|
||||||
|
do
|
||||||
|
{
|
||||||
|
QueryPerformanceCounter(&count2);
|
||||||
|
} while (count1.QuadPart == count2.QuadPart);
|
||||||
|
|
||||||
|
// Do the timing loop.
|
||||||
|
ClockCalibration.Clock();
|
||||||
|
do
|
||||||
|
{
|
||||||
|
QueryPerformanceCounter(&count1);
|
||||||
|
} while ((count1.QuadPart - count2.QuadPart) < min_diff);
|
||||||
|
ClockCalibration.Unclock();
|
||||||
|
|
||||||
|
SetPriorityClass(GetCurrentProcess(), NORMAL_PRIORITY_CLASS);
|
||||||
|
SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_NORMAL);
|
||||||
|
|
||||||
|
PerfToSec = double(count1.QuadPart - count2.QuadPart) / (double(ClockCalibration.GetRawCounter()) * freq.QuadPart);
|
||||||
|
PerfToMillisec = PerfToSec * 1000.0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
//
|
//
|
||||||
|
@ -362,6 +427,91 @@ void wm_setapptitle(const char *name)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//==========================================================================
|
||||||
|
//
|
||||||
|
// win_buildargs
|
||||||
|
//
|
||||||
|
// This should be removed once everything can use the FArgs list.
|
||||||
|
//
|
||||||
|
//==========================================================================
|
||||||
|
|
||||||
|
|
||||||
|
int32_t win_buildargs(char** argvbuf)
|
||||||
|
{
|
||||||
|
int32_t buildargc = 0;
|
||||||
|
|
||||||
|
FString cmdline_utf8 = FString(GetCommandLineW());
|
||||||
|
|
||||||
|
*argvbuf = Xstrdup(cmdline_utf8.GetChars());
|
||||||
|
|
||||||
|
if (*argvbuf)
|
||||||
|
{
|
||||||
|
char quoted = 0, instring = 0, swallownext = 0;
|
||||||
|
char* wp;
|
||||||
|
for (const char* p = wp = *argvbuf; *p; p++)
|
||||||
|
{
|
||||||
|
if (*p == ' ')
|
||||||
|
{
|
||||||
|
if (instring)
|
||||||
|
{
|
||||||
|
if (!quoted)
|
||||||
|
{
|
||||||
|
// end of a string
|
||||||
|
*(wp++) = 0;
|
||||||
|
instring = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
*(wp++) = *p;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (*p == '"' && !swallownext)
|
||||||
|
{
|
||||||
|
if (instring)
|
||||||
|
{
|
||||||
|
if (quoted && p[1] == ' ')
|
||||||
|
{
|
||||||
|
// end of a string
|
||||||
|
*(wp++) = 0;
|
||||||
|
instring = 0;
|
||||||
|
}
|
||||||
|
quoted = !quoted;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
instring = 1;
|
||||||
|
quoted = 1;
|
||||||
|
buildargc++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (*p == '\\' && p[1] == '"' && !swallownext)
|
||||||
|
swallownext = 1;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!instring)
|
||||||
|
buildargc++;
|
||||||
|
|
||||||
|
instring = 1;
|
||||||
|
*(wp++) = *p;
|
||||||
|
swallownext = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*wp = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Figure out what directory the program resides in.
|
||||||
|
|
||||||
|
wchar_t buffer[256];
|
||||||
|
GetModuleFileNameW(0, buffer, 256);
|
||||||
|
progdir = buffer;
|
||||||
|
progdir.Substitute("\\", "/");
|
||||||
|
auto lastsep = progdir.LastIndexOf('/');
|
||||||
|
if (lastsep != -1)
|
||||||
|
progdir.Truncate(lastsep + 1);
|
||||||
|
|
||||||
|
return buildargc;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
// ---------------------------------------
|
// ---------------------------------------
|
||||||
|
@ -449,6 +599,7 @@ int main(int argc, char *argv[])
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
setenv("__GL_THREADED_OPTIMIZATIONS", "1", 0);
|
setenv("__GL_THREADED_OPTIMIZATIONS", "1", 0);
|
||||||
#endif
|
#endif
|
||||||
|
CalculateCPUSpeed();
|
||||||
|
|
||||||
buildkeytranslationtable();
|
buildkeytranslationtable();
|
||||||
|
|
||||||
|
|
|
@ -65,7 +65,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
# include <shellapi.h>
|
# include <shellapi.h>
|
||||||
# define UPDATEINTERVAL 604800 // 1w
|
# define UPDATEINTERVAL 604800 // 1w
|
||||||
# include "win32/winbits.h"
|
|
||||||
#else
|
#else
|
||||||
# ifndef GEKKO
|
# ifndef GEKKO
|
||||||
# include <sys/ioctl.h>
|
# include <sys/ioctl.h>
|
||||||
|
|
|
@ -1,173 +0,0 @@
|
||||||
// Windows layer-independent code
|
|
||||||
|
|
||||||
#define NOMINMAX
|
|
||||||
#include <Windows.h>
|
|
||||||
#include "compat.h"
|
|
||||||
#include "build.h"
|
|
||||||
#include "baselayer.h"
|
|
||||||
#include "osd.h"
|
|
||||||
|
|
||||||
#include "zstring.h"
|
|
||||||
#include "winbits.h"
|
|
||||||
|
|
||||||
FString progdir;
|
|
||||||
//
|
|
||||||
// CheckWinVersion() -- check to see what version of Windows we happen to be running under (stripped down to what is actually still supported.)
|
|
||||||
//
|
|
||||||
|
|
||||||
//==========================================================================
|
|
||||||
//
|
|
||||||
// win_buildargs
|
|
||||||
//
|
|
||||||
// This should be removed once everything can use the FArgs list.
|
|
||||||
//
|
|
||||||
//==========================================================================
|
|
||||||
|
|
||||||
|
|
||||||
int32_t win_buildargs(char **argvbuf)
|
|
||||||
{
|
|
||||||
int32_t buildargc = 0;
|
|
||||||
|
|
||||||
FString cmdline_utf8 = FString(GetCommandLineW());
|
|
||||||
|
|
||||||
*argvbuf = Xstrdup(cmdline_utf8.GetChars());
|
|
||||||
|
|
||||||
if (*argvbuf)
|
|
||||||
{
|
|
||||||
char quoted = 0, instring = 0, swallownext = 0;
|
|
||||||
char *wp;
|
|
||||||
for (const char *p = wp = *argvbuf; *p; p++)
|
|
||||||
{
|
|
||||||
if (*p == ' ')
|
|
||||||
{
|
|
||||||
if (instring)
|
|
||||||
{
|
|
||||||
if (!quoted)
|
|
||||||
{
|
|
||||||
// end of a string
|
|
||||||
*(wp++) = 0;
|
|
||||||
instring = 0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
*(wp++) = *p;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (*p == '"' && !swallownext)
|
|
||||||
{
|
|
||||||
if (instring)
|
|
||||||
{
|
|
||||||
if (quoted && p[1] == ' ')
|
|
||||||
{
|
|
||||||
// end of a string
|
|
||||||
*(wp++) = 0;
|
|
||||||
instring = 0;
|
|
||||||
}
|
|
||||||
quoted = !quoted;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
instring = 1;
|
|
||||||
quoted = 1;
|
|
||||||
buildargc++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (*p == '\\' && p[1] == '"' && !swallownext)
|
|
||||||
swallownext = 1;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (!instring)
|
|
||||||
buildargc++;
|
|
||||||
|
|
||||||
instring = 1;
|
|
||||||
*(wp++) = *p;
|
|
||||||
swallownext = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*wp = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Figure out what directory the program resides in.
|
|
||||||
|
|
||||||
wchar_t buffer[256];
|
|
||||||
GetModuleFileNameW(0, buffer, 256);
|
|
||||||
progdir = buffer;
|
|
||||||
progdir.Substitute("\\", "/");
|
|
||||||
auto lastsep = progdir.LastIndexOf('/');
|
|
||||||
if (lastsep != -1)
|
|
||||||
progdir.Truncate(lastsep + 1);
|
|
||||||
|
|
||||||
return buildargc;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//==========================================================================
|
|
||||||
//
|
|
||||||
// CalculateCPUSpeed
|
|
||||||
//
|
|
||||||
// Make a decent guess at how much time elapses between TSC steps. This can
|
|
||||||
// vary over runtime depending on power management settings, so should not
|
|
||||||
// be used anywhere that truely accurate timing actually matters.
|
|
||||||
//
|
|
||||||
//==========================================================================
|
|
||||||
|
|
||||||
double PerfToSec, PerfToMillisec;
|
|
||||||
#include "stats.h"
|
|
||||||
|
|
||||||
static void CalculateCPUSpeed()
|
|
||||||
{
|
|
||||||
LARGE_INTEGER freq;
|
|
||||||
|
|
||||||
QueryPerformanceFrequency(&freq);
|
|
||||||
|
|
||||||
if (freq.QuadPart != 0)
|
|
||||||
{
|
|
||||||
LARGE_INTEGER count1, count2;
|
|
||||||
cycle_t ClockCalibration;
|
|
||||||
DWORD min_diff;
|
|
||||||
|
|
||||||
ClockCalibration.Reset();
|
|
||||||
|
|
||||||
// Count cycles for at least 55 milliseconds.
|
|
||||||
// The performance counter may be very low resolution compared to CPU
|
|
||||||
// speeds today, so the longer we count, the more accurate our estimate.
|
|
||||||
// On the other hand, we don't want to count too long, because we don't
|
|
||||||
// want the user to notice us spend time here, since most users will
|
|
||||||
// probably never use the performance statistics.
|
|
||||||
min_diff = freq.LowPart * 11 / 200;
|
|
||||||
|
|
||||||
// Minimize the chance of task switching during the testing by going very
|
|
||||||
// high priority. This is another reason to avoid timing for too long.
|
|
||||||
SetPriorityClass(GetCurrentProcess(), REALTIME_PRIORITY_CLASS);
|
|
||||||
SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_TIME_CRITICAL);
|
|
||||||
|
|
||||||
// Make sure we start timing on a counter boundary.
|
|
||||||
QueryPerformanceCounter(&count1);
|
|
||||||
do
|
|
||||||
{
|
|
||||||
QueryPerformanceCounter(&count2);
|
|
||||||
} while (count1.QuadPart == count2.QuadPart);
|
|
||||||
|
|
||||||
// Do the timing loop.
|
|
||||||
ClockCalibration.Clock();
|
|
||||||
do
|
|
||||||
{
|
|
||||||
QueryPerformanceCounter(&count1);
|
|
||||||
} while ((count1.QuadPart - count2.QuadPart) < min_diff);
|
|
||||||
ClockCalibration.Unclock();
|
|
||||||
|
|
||||||
SetPriorityClass(GetCurrentProcess(), NORMAL_PRIORITY_CLASS);
|
|
||||||
SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_NORMAL);
|
|
||||||
|
|
||||||
PerfToSec = double(count1.QuadPart - count2.QuadPart) / (double(ClockCalibration.GetRawCounter()) * freq.QuadPart);
|
|
||||||
PerfToMillisec = PerfToSec * 1000.0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class Initer
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
Initer() { CalculateCPUSpeed(); }
|
|
||||||
};
|
|
||||||
|
|
||||||
static Initer initer;
|
|
||||||
|
|
|
@ -1,8 +0,0 @@
|
||||||
// Windows layer-independent code
|
|
||||||
|
|
||||||
#include "compat.h"
|
|
||||||
|
|
||||||
# define WindowClass "Demolition"
|
|
||||||
|
|
||||||
extern void win_init(void);
|
|
||||||
extern int32_t win_buildargs(char **argvbuf);
|
|
|
@ -64,7 +64,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
# include <shellapi.h>
|
# include <shellapi.h>
|
||||||
# define UPDATEINTERVAL 604800 // 1w
|
# define UPDATEINTERVAL 604800 // 1w
|
||||||
# include "win32/winbits.h"
|
|
||||||
#else
|
#else
|
||||||
# ifndef GEKKO
|
# ifndef GEKKO
|
||||||
# include <sys/ioctl.h>
|
# include <sys/ioctl.h>
|
||||||
|
|
Loading…
Reference in a new issue