mirror of
https://github.com/godotengine/godot.git
synced 2024-11-22 12:12:28 +00:00
Fix compilation for UWP
This commit is contained in:
parent
abe09919bf
commit
f7bd21a022
@ -72,7 +72,7 @@ RasterizerScene *RasterizerGLES3::get_scene() {
|
|||||||
#define _EXT_DEBUG_SEVERITY_LOW_ARB 0x9148
|
#define _EXT_DEBUG_SEVERITY_LOW_ARB 0x9148
|
||||||
#define _EXT_DEBUG_OUTPUT 0x92E0
|
#define _EXT_DEBUG_OUTPUT 0x92E0
|
||||||
|
|
||||||
#ifdef WINDOWS_ENABLED
|
#if (defined WINDOWS_ENABLED) && !(defined UWP_ENABLED)
|
||||||
#define GLAPIENTRY APIENTRY
|
#define GLAPIENTRY APIENTRY
|
||||||
#else
|
#else
|
||||||
#define GLAPIENTRY
|
#define GLAPIENTRY
|
||||||
|
@ -34,7 +34,6 @@
|
|||||||
#include "core/os/thread.h"
|
#include "core/os/thread.h"
|
||||||
#include "servers/audio_server.h"
|
#include "servers/audio_server.h"
|
||||||
|
|
||||||
#include <mmreg.h>
|
|
||||||
#include <mmsystem.h>
|
#include <mmsystem.h>
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <wrl/client.h>
|
#include <wrl/client.h>
|
||||||
|
@ -9,6 +9,7 @@ files = [
|
|||||||
'#platform/windows/stream_peer_winsock.cpp',
|
'#platform/windows/stream_peer_winsock.cpp',
|
||||||
'#platform/windows/key_mapping_win.cpp',
|
'#platform/windows/key_mapping_win.cpp',
|
||||||
'joypad_uwp.cpp',
|
'joypad_uwp.cpp',
|
||||||
|
'power_uwp.cpp',
|
||||||
'gl_context_egl.cpp',
|
'gl_context_egl.cpp',
|
||||||
'app.cpp',
|
'app.cpp',
|
||||||
'os_uwp.cpp',
|
'os_uwp.cpp',
|
||||||
|
@ -107,7 +107,7 @@ namespace GodotUWP
|
|||||||
int last_touch_y[32];
|
int last_touch_y[32];
|
||||||
int number_of_contacts;
|
int number_of_contacts;
|
||||||
Windows::Foundation::Point last_mouse_pos;
|
Windows::Foundation::Point last_mouse_pos;
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
/* clang-format on */
|
/* clang-format on */
|
||||||
|
@ -28,24 +28,22 @@
|
|||||||
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
#include "os_uwp.h"
|
#include "os_uwp.h"
|
||||||
#include "drivers/gles2/rasterizer_gles2.h"
|
#include "drivers/gles3/rasterizer_gles3.h"
|
||||||
|
#include "drivers/unix/ip_unix.h"
|
||||||
#include "drivers/windows/dir_access_windows.h"
|
#include "drivers/windows/dir_access_windows.h"
|
||||||
#include "drivers/windows/file_access_windows.h"
|
#include "drivers/windows/file_access_windows.h"
|
||||||
#include "drivers/windows/mutex_windows.h"
|
#include "drivers/windows/mutex_windows.h"
|
||||||
|
#include "drivers/windows/rw_lock_windows.h"
|
||||||
#include "drivers/windows/semaphore_windows.h"
|
#include "drivers/windows/semaphore_windows.h"
|
||||||
#include "main/main.h"
|
|
||||||
#include "os/memory_pool_dynamic_static.h"
|
|
||||||
#include "servers/audio_server.h"
|
|
||||||
#include "servers/visual/visual_server_raster.h"
|
|
||||||
#include "thread_uwp.h"
|
|
||||||
//#include "servers/visual/visual_server_wrap_mt.h"
|
|
||||||
#include "drivers/unix/ip_unix.h"
|
|
||||||
#include "global_config.h"
|
#include "global_config.h"
|
||||||
#include "io/marshalls.h"
|
#include "io/marshalls.h"
|
||||||
#include "os/memory_pool_dynamic_prealloc.h"
|
#include "main/main.h"
|
||||||
#include "platform/windows/packet_peer_udp_winsock.h"
|
#include "platform/windows/packet_peer_udp_winsock.h"
|
||||||
#include "platform/windows/stream_peer_winsock.h"
|
#include "platform/windows/stream_peer_winsock.h"
|
||||||
#include "platform/windows/tcp_server_winsock.h"
|
#include "platform/windows/tcp_server_winsock.h"
|
||||||
|
#include "servers/audio_server.h"
|
||||||
|
#include "servers/visual/visual_server_raster.h"
|
||||||
|
#include "thread_uwp.h"
|
||||||
|
|
||||||
#include <ppltasks.h>
|
#include <ppltasks.h>
|
||||||
#include <wrl.h>
|
#include <wrl.h>
|
||||||
@ -149,9 +147,6 @@ const char *OSUWP::get_audio_driver_name(int p_driver) const {
|
|||||||
return AudioDriverManager::get_driver(p_driver)->get_name();
|
return AudioDriverManager::get_driver(p_driver)->get_name();
|
||||||
}
|
}
|
||||||
|
|
||||||
static MemoryPoolStatic *mempool_static = NULL;
|
|
||||||
static MemoryPoolDynamic *mempool_dynamic = NULL;
|
|
||||||
|
|
||||||
void OSUWP::initialize_core() {
|
void OSUWP::initialize_core() {
|
||||||
|
|
||||||
last_button_state = 0;
|
last_button_state = 0;
|
||||||
@ -161,32 +156,19 @@ void OSUWP::initialize_core() {
|
|||||||
ThreadUWP::make_default();
|
ThreadUWP::make_default();
|
||||||
SemaphoreWindows::make_default();
|
SemaphoreWindows::make_default();
|
||||||
MutexWindows::make_default();
|
MutexWindows::make_default();
|
||||||
|
RWLockWindows::make_default();
|
||||||
|
|
||||||
FileAccess::make_default<FileAccessWindows>(FileAccess::ACCESS_RESOURCES);
|
FileAccess::make_default<FileAccessWindows>(FileAccess::ACCESS_RESOURCES);
|
||||||
FileAccess::make_default<FileAccessWindows>(FileAccess::ACCESS_USERDATA);
|
FileAccess::make_default<FileAccessWindows>(FileAccess::ACCESS_USERDATA);
|
||||||
FileAccess::make_default<FileAccessWindows>(FileAccess::ACCESS_FILESYSTEM);
|
FileAccess::make_default<FileAccessWindows>(FileAccess::ACCESS_FILESYSTEM);
|
||||||
//FileAccessBufferedFA<FileAccessWindows>::make_default();
|
|
||||||
DirAccess::make_default<DirAccessWindows>(DirAccess::ACCESS_RESOURCES);
|
DirAccess::make_default<DirAccessWindows>(DirAccess::ACCESS_RESOURCES);
|
||||||
DirAccess::make_default<DirAccessWindows>(DirAccess::ACCESS_USERDATA);
|
DirAccess::make_default<DirAccessWindows>(DirAccess::ACCESS_USERDATA);
|
||||||
DirAccess::make_default<DirAccessWindows>(DirAccess::ACCESS_FILESYSTEM);
|
DirAccess::make_default<DirAccessWindows>(DirAccess::ACCESS_FILESYSTEM);
|
||||||
|
|
||||||
//TCPServerWinsock::make_default();
|
|
||||||
//StreamPeerWinsock::make_default();
|
|
||||||
|
|
||||||
TCPServerWinsock::make_default();
|
TCPServerWinsock::make_default();
|
||||||
StreamPeerWinsock::make_default();
|
StreamPeerWinsock::make_default();
|
||||||
PacketPeerUDPWinsock::make_default();
|
PacketPeerUDPWinsock::make_default();
|
||||||
|
|
||||||
mempool_static = new MemoryPoolStaticMalloc;
|
|
||||||
#if 1
|
|
||||||
mempool_dynamic = memnew(MemoryPoolDynamicStatic);
|
|
||||||
#else
|
|
||||||
#define DYNPOOL_SIZE 4 * 1024 * 1024
|
|
||||||
void *buffer = malloc(DYNPOOL_SIZE);
|
|
||||||
mempool_dynamic = memnew(MemoryPoolDynamicPrealloc(buffer, DYNPOOL_SIZE));
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// We need to know how often the clock is updated
|
// We need to know how often the clock is updated
|
||||||
if (!QueryPerformanceFrequency((LARGE_INTEGER *)&ticks_per_second))
|
if (!QueryPerformanceFrequency((LARGE_INTEGER *)&ticks_per_second))
|
||||||
ticks_per_second = 1000;
|
ticks_per_second = 1000;
|
||||||
@ -259,13 +241,18 @@ void OSUWP::initialize(const VideoMode &p_desired, int p_video_driver, int p_aud
|
|||||||
set_video_mode(vm);
|
set_video_mode(vm);
|
||||||
|
|
||||||
gl_context->make_current();
|
gl_context->make_current();
|
||||||
rasterizer = memnew(RasterizerGLES2);
|
|
||||||
|
|
||||||
visual_server = memnew(VisualServerRaster(rasterizer));
|
RasterizerGLES3::register_config();
|
||||||
|
RasterizerGLES3::make_current();
|
||||||
|
|
||||||
|
visual_server = memnew(VisualServerRaster);
|
||||||
|
// FIXME: Reimplement threaded rendering? Or remove?
|
||||||
|
/*
|
||||||
if (get_render_thread_mode() != RENDER_THREAD_UNSAFE) {
|
if (get_render_thread_mode() != RENDER_THREAD_UNSAFE) {
|
||||||
|
|
||||||
visual_server = memnew(VisualServerWrapMT(visual_server, get_render_thread_mode() == RENDER_SEPARATE_THREAD));
|
visual_server = memnew(VisualServerWrapMT(visual_server, get_render_thread_mode() == RENDER_SEPARATE_THREAD));
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
//
|
//
|
||||||
physics_server = memnew(PhysicsServerSW);
|
physics_server = memnew(PhysicsServerSW);
|
||||||
@ -288,7 +275,7 @@ void OSUWP::initialize(const VideoMode &p_desired, int p_video_driver, int p_aud
|
|||||||
ERR_PRINT("Initializing audio failed.");
|
ERR_PRINT("Initializing audio failed.");
|
||||||
}
|
}
|
||||||
|
|
||||||
power_manager = memnew(PowerWinRT);
|
power_manager = memnew(PowerUWP);
|
||||||
|
|
||||||
managed_object->update_clipboard();
|
managed_object->update_clipboard();
|
||||||
|
|
||||||
@ -381,14 +368,6 @@ void OSUWP::finalize() {
|
|||||||
if (gl_context)
|
if (gl_context)
|
||||||
memdelete(gl_context);
|
memdelete(gl_context);
|
||||||
#endif
|
#endif
|
||||||
if (rasterizer)
|
|
||||||
memdelete(rasterizer);
|
|
||||||
|
|
||||||
/*
|
|
||||||
if (debugger_connection_console) {
|
|
||||||
memdelete(debugger_connection_console);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
memdelete(input);
|
memdelete(input);
|
||||||
|
|
||||||
@ -400,11 +379,8 @@ void OSUWP::finalize() {
|
|||||||
|
|
||||||
joypad = nullptr;
|
joypad = nullptr;
|
||||||
}
|
}
|
||||||
void OSUWP::finalize_core() {
|
|
||||||
|
|
||||||
if (mempool_dynamic)
|
void OSUWP::finalize_core() {
|
||||||
memdelete(mempool_dynamic);
|
|
||||||
delete mempool_static;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void OSUWP::vprint(const char *p_format, va_list p_list, bool p_stderr) {
|
void OSUWP::vprint(const char *p_format, va_list p_list, bool p_stderr) {
|
||||||
@ -880,15 +856,20 @@ String OSUWP::get_data_dir() const {
|
|||||||
return String(data_folder->Path->Data()).replace("\\", "/");
|
return String(data_folder->Path->Data()).replace("\\", "/");
|
||||||
}
|
}
|
||||||
|
|
||||||
PowerState OSWinrt::get_power_state() {
|
bool OSUWP::check_feature_support(const String &p_feature) {
|
||||||
|
|
||||||
|
return VisualServer::get_singleton()->has_os_feature(p_feature);
|
||||||
|
}
|
||||||
|
|
||||||
|
PowerState OSUWP::get_power_state() {
|
||||||
return power_manager->get_power_state();
|
return power_manager->get_power_state();
|
||||||
}
|
}
|
||||||
|
|
||||||
int OSWinrt::get_power_seconds_left() {
|
int OSUWP::get_power_seconds_left() {
|
||||||
return power_manager->get_power_seconds_left();
|
return power_manager->get_power_seconds_left();
|
||||||
}
|
}
|
||||||
|
|
||||||
int OSWinrt::get_power_percent_left() {
|
int OSUWP::get_power_percent_left() {
|
||||||
return power_manager->get_power_percent_left();
|
return power_manager->get_power_percent_left();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -38,7 +38,7 @@
|
|||||||
#include "main/input_default.h"
|
#include "main/input_default.h"
|
||||||
#include "os/input.h"
|
#include "os/input.h"
|
||||||
#include "os/os.h"
|
#include "os/os.h"
|
||||||
#include "power_winrt.h"
|
#include "power_uwp.h"
|
||||||
#include "servers/audio_server.h"
|
#include "servers/audio_server.h"
|
||||||
#include "servers/physics/physics_server_sw.h"
|
#include "servers/physics/physics_server_sw.h"
|
||||||
#include "servers/physics_2d/physics_2d_server_sw.h"
|
#include "servers/physics_2d/physics_2d_server_sw.h"
|
||||||
@ -94,7 +94,6 @@ private:
|
|||||||
int old_x, old_y;
|
int old_x, old_y;
|
||||||
Point2i center;
|
Point2i center;
|
||||||
VisualServer *visual_server;
|
VisualServer *visual_server;
|
||||||
Rasterizer *rasterizer;
|
|
||||||
PhysicsServer *physics_server;
|
PhysicsServer *physics_server;
|
||||||
Physics2DServer *physics_2d_server;
|
Physics2DServer *physics_2d_server;
|
||||||
int pressrc;
|
int pressrc;
|
||||||
@ -107,7 +106,7 @@ private:
|
|||||||
|
|
||||||
AudioDriverXAudio2 audio_driver;
|
AudioDriverXAudio2 audio_driver;
|
||||||
|
|
||||||
PowerWinRT *power_manager;
|
PowerUWP *power_manager;
|
||||||
|
|
||||||
MouseMode mouse_mode;
|
MouseMode mouse_mode;
|
||||||
bool alt_mem;
|
bool alt_mem;
|
||||||
@ -237,6 +236,8 @@ public:
|
|||||||
virtual void move_window_to_foreground();
|
virtual void move_window_to_foreground();
|
||||||
virtual String get_data_dir() const;
|
virtual String get_data_dir() const;
|
||||||
|
|
||||||
|
virtual bool check_feature_support(const String &p_feature);
|
||||||
|
|
||||||
void set_gl_context(ContextEGL *p_context);
|
void set_gl_context(ContextEGL *p_context);
|
||||||
void screen_size_changed();
|
void screen_size_changed();
|
||||||
|
|
||||||
|
74
platform/uwp/power_uwp.cpp
Normal file
74
platform/uwp/power_uwp.cpp
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
/*************************************************************************/
|
||||||
|
/* power_uwp.cpp */
|
||||||
|
/*************************************************************************/
|
||||||
|
/* This file is part of: */
|
||||||
|
/* GODOT ENGINE */
|
||||||
|
/* http://www.godotengine.org */
|
||||||
|
/*************************************************************************/
|
||||||
|
/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */
|
||||||
|
/* */
|
||||||
|
/* Permission is hereby granted, free of charge, to any person obtaining */
|
||||||
|
/* a copy of this software and associated documentation files (the */
|
||||||
|
/* "Software"), to deal in the Software without restriction, including */
|
||||||
|
/* without limitation the rights to use, copy, modify, merge, publish, */
|
||||||
|
/* distribute, sublicense, and/or sell copies of the Software, and to */
|
||||||
|
/* permit persons to whom the Software is furnished to do so, subject to */
|
||||||
|
/* the following conditions: */
|
||||||
|
/* */
|
||||||
|
/* The above copyright notice and this permission notice shall be */
|
||||||
|
/* included in all copies or substantial portions of the Software. */
|
||||||
|
/* */
|
||||||
|
/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
|
||||||
|
/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
|
||||||
|
/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
|
||||||
|
/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
|
||||||
|
/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
|
||||||
|
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
|
||||||
|
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
||||||
|
/*************************************************************************/
|
||||||
|
|
||||||
|
#include "power_uwp.h"
|
||||||
|
|
||||||
|
PowerUWP::PowerUWP()
|
||||||
|
: nsecs_left(-1), percent_left(-1), power_state(POWERSTATE_UNKNOWN) {
|
||||||
|
}
|
||||||
|
|
||||||
|
PowerUWP::~PowerUWP() {
|
||||||
|
}
|
||||||
|
|
||||||
|
bool PowerUWP::UpdatePowerInfo() {
|
||||||
|
// TODO, WinRT: Battery info is available on at least one WinRT platform (Windows Phone 8). Implement UpdatePowerInfo as appropriate. */
|
||||||
|
/* Notes from SDL:
|
||||||
|
- the Win32 function, GetSystemPowerStatus, is not available for use on WinRT
|
||||||
|
- Windows Phone 8 has a 'Battery' class, which is documented as available for C++
|
||||||
|
- More info on WP8's Battery class can be found at http://msdn.microsoft.com/library/windowsphone/develop/jj207231
|
||||||
|
*/
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
PowerState PowerUWP::get_power_state() {
|
||||||
|
if (UpdatePowerInfo()) {
|
||||||
|
return power_state;
|
||||||
|
} else {
|
||||||
|
WARN_PRINT("Power management is not implemented on this platform, defaulting to POWERSTATE_UNKNOWN");
|
||||||
|
return POWERSTATE_UNKNOWN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int PowerUWP::get_power_seconds_left() {
|
||||||
|
if (UpdatePowerInfo()) {
|
||||||
|
return nsecs_left;
|
||||||
|
} else {
|
||||||
|
WARN_PRINT("Power management is not implemented on this platform, defaulting to -1");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int PowerUWP::get_power_percent_left() {
|
||||||
|
if (UpdatePowerInfo()) {
|
||||||
|
return percent_left;
|
||||||
|
} else {
|
||||||
|
WARN_PRINT("Power management is not implemented on this platform, defaulting to -1");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
55
platform/uwp/power_uwp.h
Normal file
55
platform/uwp/power_uwp.h
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
/*************************************************************************/
|
||||||
|
/* power_uwp.h */
|
||||||
|
/*************************************************************************/
|
||||||
|
/* This file is part of: */
|
||||||
|
/* GODOT ENGINE */
|
||||||
|
/* http://www.godotengine.org */
|
||||||
|
/*************************************************************************/
|
||||||
|
/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */
|
||||||
|
/* */
|
||||||
|
/* Permission is hereby granted, free of charge, to any person obtaining */
|
||||||
|
/* a copy of this software and associated documentation files (the */
|
||||||
|
/* "Software"), to deal in the Software without restriction, including */
|
||||||
|
/* without limitation the rights to use, copy, modify, merge, publish, */
|
||||||
|
/* distribute, sublicense, and/or sell copies of the Software, and to */
|
||||||
|
/* permit persons to whom the Software is furnished to do so, subject to */
|
||||||
|
/* the following conditions: */
|
||||||
|
/* */
|
||||||
|
/* The above copyright notice and this permission notice shall be */
|
||||||
|
/* included in all copies or substantial portions of the Software. */
|
||||||
|
/* */
|
||||||
|
/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
|
||||||
|
/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
|
||||||
|
/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
|
||||||
|
/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
|
||||||
|
/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
|
||||||
|
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
|
||||||
|
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
||||||
|
/*************************************************************************/
|
||||||
|
|
||||||
|
#ifndef PLATFORM_UWP_POWER_UWP_H_
|
||||||
|
#define PLATFORM_UWP_POWER_UWP_H_
|
||||||
|
|
||||||
|
#include "os/dir_access.h"
|
||||||
|
#include "os/file_access.h"
|
||||||
|
#include "os/power.h"
|
||||||
|
|
||||||
|
class PowerUWP {
|
||||||
|
|
||||||
|
private:
|
||||||
|
int nsecs_left;
|
||||||
|
int percent_left;
|
||||||
|
PowerState power_state;
|
||||||
|
|
||||||
|
bool UpdatePowerInfo();
|
||||||
|
|
||||||
|
public:
|
||||||
|
PowerUWP();
|
||||||
|
virtual ~PowerUWP();
|
||||||
|
|
||||||
|
PowerState get_power_state();
|
||||||
|
int get_power_seconds_left();
|
||||||
|
int get_power_percent_left();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* PLATFORM_UWP_POWER_UWP_H_ */
|
Loading…
Reference in New Issue
Block a user