summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core.c561
-rw-r--r--src/uwp_events.h88
2 files changed, 31 insertions, 618 deletions
diff --git a/src/core.c b/src/core.c
index 12cfb735..3b0b8b89 100644
--- a/src/core.c
+++ b/src/core.c
@@ -11,7 +11,6 @@
* - PLATFORM_RPI: Raspberry Pi 0,1,2,3 (Raspbian, native mode)
* - PLATFORM_DRM: Linux native mode, including Raspberry Pi 4 with V3D fkms driver
* - PLATFORM_WEB: HTML5 with WebAssembly
-* - PLATFORM_UWP: Windows 10 App, Windows Phone, Xbox One
*
* CONFIGURATION:
*
@@ -24,17 +23,17 @@
* NOTE: OpenGL ES 2.0 is required and graphic device is managed by EGL
*
* #define PLATFORM_RPI
-* Windowing and input system configured for Raspberry Pi i native mode (no X.org required, tested on Raspbian),
+* Windowing and input system configured for Raspberry Pi in native mode (no XWindow required),
+* graphic device is managed by EGL and inputs are processed is raw mode, reading from /dev/input/
+*
+* #define PLATFORM_DRM
+* Windowing and input system configured for DRM native mode (RPI4 and other devices)
* graphic device is managed by EGL and inputs are processed is raw mode, reading from /dev/input/
*
* #define PLATFORM_WEB
* Windowing and input system configured for HTML5 (run on browser), code converted from C to asm.js
* using emscripten compiler. OpenGL ES 2.0 required for direct translation to WebGL equivalent code.
*
-* #define PLATFORM_UWP
-* Universal Windows Platform support, using OpenGL ES 2.0 through ANGLE on multiple Windows platforms,
-* including Windows 10 App, Windows Phone and Xbox One platforms.
-*
* #define SUPPORT_DEFAULT_FONT (default)
* Default font is loaded on window initialization to be available for the user to render simple text.
* NOTE: If enabled, uses external module functions to load default raylib font (module: text)
@@ -167,7 +166,7 @@
#include <sys/stat.h> // Required for: stat() [Used in GetFileModTime()]
-#if (defined(PLATFORM_DESKTOP) || defined(PLATFORM_UWP)) && defined(_WIN32) && (defined(_MSC_VER) || defined(__TINYC__))
+#if defined(PLATFORM_DESKTOP) && defined(_WIN32) && (defined(_MSC_VER) || defined(__TINYC__))
#define DIRENT_MALLOC RL_MALLOC
#define DIRENT_FREE RL_FREE
@@ -192,6 +191,8 @@
// NOTE: Already provided by rlgl implementation (on glad.h)
#include "GLFW/glfw3.h" // GLFW3 library: Windows, OpenGL context and Input management
// NOTE: GLFW3 already includes gl.h (OpenGL) headers
+
+//https://randomascii.wordpress.com/2020/10/04/windows-timer-resolution-the-great-rule-change/
// Support retrieving native window handlers
#if defined(_WIN32)
@@ -256,13 +257,6 @@
//#include "GLES2/gl2.h" // OpenGL ES 2.0 library (not required in this module, only in rlgl)
#endif
-#if defined(PLATFORM_UWP)
- #include "EGL/egl.h" // Native platform windowing system interface
- #include "EGL/eglext.h" // EGL extensions
- //#include "GLES2/gl2.h" // OpenGL ES 2.0 library (not required in this module, only in rlgl)
- #include "uwp_events.h" // UWP bootstrapping functions
-#endif
-
#if defined(PLATFORM_WEB)
#define GLFW_INCLUDE_ES2 // GLFW3: Enable OpenGL ES 2.0 (translated to WebGL)
#include "GLFW/glfw3.h" // GLFW3 library: Windows, OpenGL context and Input management
@@ -361,7 +355,7 @@ typedef struct CoreData {
#if defined(PLATFORM_RPI)
EGL_DISPMANX_WINDOW_T handle; // Native window handle (graphic device)
#endif
-#if defined(PLATFORM_ANDROID) || defined(PLATFORM_RPI) || defined(PLATFORM_DRM) || defined(PLATFORM_UWP)
+#if defined(PLATFORM_ANDROID) || defined(PLATFORM_RPI) || defined(PLATFORM_DRM)
#if defined(PLATFORM_DRM)
int fd; // File descriptor for /dev/dri/...
drmModeConnector *connector; // Direct Rendering Manager (DRM) mode connector
@@ -744,14 +738,6 @@ static void RestoreTerminal(void)
// NOTE: data parameter could be used to pass any kind of required data to the initialization
void InitWindow(int width, int height, const char *title)
{
-#if defined(PLATFORM_UWP)
- if (!UWPIsConfigured())
- {
- TRACELOG(LOG_FATAL, "UWP Functions have not been set yet, please set these before initializing raylib!");
- return;
- }
-#endif
-
TRACELOG(LOG_INFO, "Initializing raylib %s", RAYLIB_VERSION);
if ((title != NULL) && (title[0] != 0)) CORE.Window.title = title;
@@ -762,11 +748,6 @@ void InitWindow(int width, int height, const char *title)
CORE.Input.Mouse.cursor = MOUSE_CURSOR_ARROW;
CORE.Input.Gamepad.lastButtonPressed = -1;
-#if defined(PLATFORM_UWP)
- // The axis count is 6 (2 thumbsticks and left and right trigger)
- CORE.Input.Gamepad.axisCount = 6;
-#endif
-
#if defined(PLATFORM_ANDROID)
CORE.Window.screen.width = width;
CORE.Window.screen.height = height;
@@ -827,7 +808,7 @@ void InitWindow(int width, int height, const char *title)
}
}
#endif
-#if defined(PLATFORM_DESKTOP) || defined(PLATFORM_WEB) || defined(PLATFORM_RPI) || defined(PLATFORM_UWP) || defined(PLATFORM_DRM)
+#if defined(PLATFORM_DESKTOP) || defined(PLATFORM_WEB) || defined(PLATFORM_RPI) || defined(PLATFORM_DRM)
// Initialize graphics device (display device and OpenGL context)
// NOTE: returns true if window and graphic device has been initialized successfully
CORE.Window.ready = InitGraphicsDevice(width, height);
@@ -910,7 +891,7 @@ void InitWindow(int width, int height, const char *title)
CORE.Time.frameCounter = 0;
#endif
-#endif // PLATFORM_DESKTOP || PLATFORM_WEB || PLATFORM_RPI || PLATFORM_DRM || PLATFORM_UWP
+#endif // PLATFORM_DESKTOP || PLATFORM_WEB || PLATFORM_RPI || PLATFORM_DRM
}
// Close window and unload OpenGL context
@@ -936,11 +917,11 @@ void CloseWindow(void)
glfwTerminate();
#endif
-#if defined(_WIN32) && defined(SUPPORT_WINMM_HIGHRES_TIMER) && !defined(SUPPORT_BUSY_WAIT_LOOP) && !defined(PLATFORM_UWP)
+#if defined(_WIN32) && defined(SUPPORT_WINMM_HIGHRES_TIMER) && !defined(SUPPORT_BUSY_WAIT_LOOP)
timeEndPeriod(1); // Restore time period
#endif
-#if defined(PLATFORM_ANDROID) || defined(PLATFORM_RPI) || defined(PLATFORM_DRM) || defined(PLATFORM_UWP)
+#if defined(PLATFORM_ANDROID) || defined(PLATFORM_RPI) || defined(PLATFORM_DRM)
#if defined(PLATFORM_DRM)
if (CORE.Window.prevFB)
{
@@ -1073,7 +1054,7 @@ bool WindowShouldClose(void)
else return true;
#endif
-#if defined(PLATFORM_ANDROID) || defined(PLATFORM_RPI) || defined(PLATFORM_DRM) || defined(PLATFORM_UWP)
+#if defined(PLATFORM_ANDROID) || defined(PLATFORM_RPI) || defined(PLATFORM_DRM)
if (CORE.Window.ready) return CORE.Window.shouldClose;
else return true;
#endif
@@ -1103,7 +1084,7 @@ bool IsWindowHidden(void)
// Check if window has been minimized
bool IsWindowMinimized(void)
{
-#if defined(PLATFORM_DESKTOP) || defined(PLATFORM_WEB) || defined(PLATFORM_UWP)
+#if defined(PLATFORM_DESKTOP) || defined(PLATFORM_WEB)
return ((CORE.Window.flags & FLAG_WINDOW_MINIMIZED) > 0);
#else
return false;
@@ -1123,7 +1104,7 @@ bool IsWindowMaximized(void)
// Check if window has the focus
bool IsWindowFocused(void)
{
-#if defined(PLATFORM_DESKTOP) || defined(PLATFORM_WEB) || defined(PLATFORM_UWP)
+#if defined(PLATFORM_DESKTOP) || defined(PLATFORM_WEB)
return ((CORE.Window.flags & FLAG_WINDOW_UNFOCUSED) == 0); // TODO!
#else
return true;
@@ -1133,7 +1114,7 @@ bool IsWindowFocused(void)
// Check if window has been resizedLastFrame
bool IsWindowResized(void)
{
-#if defined(PLATFORM_DESKTOP) || defined(PLATFORM_WEB) || defined(PLATFORM_UWP)
+#if defined(PLATFORM_DESKTOP) || defined(PLATFORM_WEB)
return CORE.Window.resizedLastFrame;
#else
return false;
@@ -1876,9 +1857,7 @@ void ShowCursor(void)
#if defined(PLATFORM_DESKTOP)
glfwSetInputMode(CORE.Window.handle, GLFW_CURSOR, GLFW_CURSOR_NORMAL);
#endif
-#if defined(PLATFORM_UWP)
- UWPGetMouseShowFunc()();
-#endif
+
CORE.Input.Mouse.cursorHidden = false;
}
@@ -1888,9 +1867,7 @@ void HideCursor(void)
#if defined(PLATFORM_DESKTOP)
glfwSetInputMode(CORE.Window.handle, GLFW_CURSOR, GLFW_CURSOR_HIDDEN);
#endif
-#if defined(PLATFORM_UWP)
- UWPGetMouseHideFunc()();
-#endif
+
CORE.Input.Mouse.cursorHidden = true;
}
@@ -1909,9 +1886,7 @@ void EnableCursor(void)
#if defined(PLATFORM_WEB)
emscripten_exit_pointerlock();
#endif
-#if defined(PLATFORM_UWP)
- UWPGetMouseUnlockFunc()();
-#endif
+
CORE.Input.Mouse.cursorHidden = false;
}
@@ -1924,9 +1899,7 @@ void DisableCursor(void)
#if defined(PLATFORM_WEB)
emscripten_request_pointerlock("#canvas", 1);
#endif
-#if defined(PLATFORM_UWP)
- UWPGetMouseLockFunc()();
-#endif
+
CORE.Input.Mouse.cursorHidden = true;
}
@@ -2667,10 +2640,6 @@ double GetTime(void)
return (double)(time - CORE.Time.base)*1e-9; // Elapsed time since InitTimer()
#endif
-
-#if defined(PLATFORM_UWP)
- return UWPGetQueryTimeFunc()();
-#endif
}
// Setup window configuration flags (view FLAGS)
@@ -3517,9 +3486,6 @@ void SetMousePosition(int x, int y)
// NOTE: emscripten not implemented
glfwSetCursorPos(CORE.Window.handle, CORE.Input.Mouse.currentPosition.x, CORE.Input.Mouse.currentPosition.y);
#endif
-#if defined(PLATFORM_UWP)
- UWPGetMouseSetPosFunc()(x, y);
-#endif
}
// Set mouse offset
@@ -3567,7 +3533,7 @@ void SetMouseCursor(int cursor)
// Get touch position X for touch point 0 (relative to screen size)
int GetTouchX(void)
{
-#if defined(PLATFORM_ANDROID) || defined(PLATFORM_WEB) || defined(PLATFORM_UWP)
+#if defined(PLATFORM_ANDROID) || defined(PLATFORM_WEB)
return (int)CORE.Input.Touch.position[0].x;
#else // PLATFORM_DESKTOP, PLATFORM_RPI, PLATFORM_DRM
return GetMouseX();
@@ -3577,7 +3543,7 @@ int GetTouchX(void)
// Get touch position Y for touch point 0 (relative to screen size)
int GetTouchY(void)
{
-#if defined(PLATFORM_ANDROID) || defined(PLATFORM_WEB) || defined(PLATFORM_UWP)
+#if defined(PLATFORM_ANDROID) || defined(PLATFORM_WEB)
return (int)CORE.Input.Touch.position[0].y;
#else // PLATFORM_DESKTOP, PLATFORM_RPI, PLATFORM_DRM
return GetMouseY();
@@ -3611,7 +3577,7 @@ Vector2 GetTouchPosition(int index)
position.y = position.y*((float)CORE.Window.render.height/(float)CORE.Window.display.height) - CORE.Window.renderOffset.y/2;
}
#endif
-#if defined(PLATFORM_WEB) || defined(PLATFORM_RPI) || defined(PLATFORM_DRM) || defined(PLATFORM_UWP)
+#if defined(PLATFORM_WEB) || defined(PLATFORM_RPI) || defined(PLATFORM_DRM)
if (index < MAX_TOUCH_POINTS) position = CORE.Input.Touch.position[index];
else TRACELOG(LOG_WARNING, "INPUT: Required touch point out of range (Max touch points: %i)", MAX_TOUCH_POINTS);
@@ -3901,7 +3867,7 @@ static bool InitGraphicsDevice(int width, int height)
}
#endif // PLATFORM_DESKTOP || PLATFORM_WEB
-#if defined(PLATFORM_ANDROID) || defined(PLATFORM_RPI) || defined(PLATFORM_DRM) || defined(PLATFORM_UWP)
+#if defined(PLATFORM_ANDROID) || defined(PLATFORM_RPI) || defined(PLATFORM_DRM)
CORE.Window.fullscreen = true;
CORE.Window.flags |= FLAG_FULLSCREEN_MODE;
@@ -4102,175 +4068,6 @@ static bool InitGraphicsDevice(int width, int height)
EGL_NONE
};
-#if defined(PLATFORM_UWP)
- const EGLint surfaceAttributes[] =
- {
- // EGL_ANGLE_SURFACE_RENDER_TO_BACK_BUFFER is part of the same optimization as EGL_ANGLE_DISPLAY_ALLOW_RENDER_TO_BACK_BUFFER (see above).
- // If you have compilation issues with it then please update your Visual Studio templates.
- EGL_ANGLE_SURFACE_RENDER_TO_BACK_BUFFER, EGL_TRUE,
- EGL_NONE
- };
-
- const EGLint defaultDisplayAttributes[] =
- {
- // These are the default display attributes, used to request ANGLE's D3D11 renderer.
- // eglInitialize will only succeed with these attributes if the hardware supports D3D11 Feature Level 10_0+.
- EGL_PLATFORM_ANGLE_TYPE_ANGLE, EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
-
- // EGL_ANGLE_DISPLAY_ALLOW_RENDER_TO_BACK_BUFFER is an optimization that can have large performance benefits on mobile devices.
- // Its syntax is subject to change, though. Please update your Visual Studio templates if you experience compilation issues with it.
- EGL_ANGLE_DISPLAY_ALLOW_RENDER_TO_BACK_BUFFER, EGL_TRUE,
-
- // EGL_PLATFORM_ANGLE_ENABLE_AUTOMATIC_TRIM_ANGLE is an option that enables ANGLE to automatically call
- // the IDXGIDevice3::Trim method on behalf of the application when it gets suspended.
- // Calling IDXGIDevice3::Trim when an application is suspended is a Windows Store application certification requirement.
- EGL_PLATFORM_ANGLE_ENABLE_AUTOMATIC_TRIM_ANGLE, EGL_TRUE,
- EGL_NONE,
- };
-
- const EGLint fl9_3DisplayAttributes[] =
- {
- // These can be used to request ANGLE's D3D11 renderer, with D3D11 Feature Level 9_3.
- // These attributes are used if the call to eglInitialize fails with the default display attributes.
- EGL_PLATFORM_ANGLE_TYPE_ANGLE, EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
- EGL_PLATFORM_ANGLE_MAX_VERSION_MAJOR_ANGLE, 9,
- EGL_PLATFORM_ANGLE_MAX_VERSION_MINOR_ANGLE, 3,
- EGL_ANGLE_DISPLAY_ALLOW_RENDER_TO_BACK_BUFFER, EGL_TRUE,
- EGL_PLATFORM_ANGLE_ENABLE_AUTOMATIC_TRIM_ANGLE, EGL_TRUE,
- EGL_NONE,
- };
-
- const EGLint warpDisplayAttributes[] =
- {
- // These attributes can be used to request D3D11 WARP.
- // They are used if eglInitialize fails with both the default display attributes and the 9_3 display attributes.
- EGL_PLATFORM_ANGLE_TYPE_ANGLE, EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE,
- EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE, EGL_PLATFORM_ANGLE_DEVICE_TYPE_WARP_ANGLE,
- EGL_ANGLE_DISPLAY_ALLOW_RENDER_TO_BACK_BUFFER, EGL_TRUE,
- EGL_PLATFORM_ANGLE_ENABLE_AUTOMATIC_TRIM_ANGLE, EGL_TRUE,
- EGL_NONE,
- };
-
- // eglGetPlatformDisplayEXT is an alternative to eglGetDisplay. It allows us to pass in display attributes, used to configure D3D11.
- PFNEGLGETPLATFORMDISPLAYEXTPROC eglGetPlatformDisplayEXT = (PFNEGLGETPLATFORMDISPLAYEXTPROC)(eglGetProcAddress("eglGetPlatformDisplayEXT"));
- if (!eglGetPlatformDisplayEXT)
- {
- TRACELOG(LOG_WARNING, "DISPLAY: Failed to get function pointer: eglGetPlatformDisplayEXT()");
- return false;
- }
-
- //
- // To initialize the display, we make three sets of calls to eglGetPlatformDisplayEXT and eglInitialize, with varying
- // parameters passed to eglGetPlatformDisplayEXT:
- // 1) The first calls uses "defaultDisplayAttributes" as a parameter. This corresponds to D3D11 Feature Level 10_0+.
- // 2) If eglInitialize fails for step 1 (e.g. because 10_0+ isn't supported by the default GPU), then we try again
- // using "fl9_3DisplayAttributes". This corresponds to D3D11 Feature Level 9_3.
- // 3) If eglInitialize fails for step 2 (e.g. because 9_3+ isn't supported by the default GPU), then we try again
- // using "warpDisplayAttributes". This corresponds to D3D11 Feature Level 11_0 on WARP, a D3D11 software rasterizer.
- //
-
- // This tries to initialize EGL to D3D11 Feature Level 10_0+. See above comment for details.
- CORE.Window.device = eglGetPlatformDisplayEXT(EGL_PLATFORM_ANGLE_ANGLE, EGL_DEFAULT_DISPLAY, defaultDisplayAttributes);
- if (CORE.Window.device == EGL_NO_DISPLAY)
- {
- TRACELOG(LOG_WARNING, "DISPLAY: Failed to initialize EGL device");
- return false;
- }
-
- if (eglInitialize(CORE.Window.device, NULL, NULL) == EGL_FALSE)
- {
- // This tries to initialize EGL to D3D11 Feature Level 9_3, if 10_0+ is unavailable (e.g. on some mobile devices).
- CORE.Window.device = eglGetPlatformDisplayEXT(EGL_PLATFORM_ANGLE_ANGLE, EGL_DEFAULT_DISPLAY, fl9_3DisplayAttributes);
- if (CORE.Window.device == EGL_NO_DISPLAY)
- {
- TRACELOG(LOG_WARNING, "DISPLAY: Failed to initialize EGL device");
- return false;
- }
-
- if (eglInitialize(CORE.Window.device, NULL, NULL) == EGL_FALSE)
- {
- // This initializes EGL to D3D11 Feature Level 11_0 on WARP, if 9_3+ is unavailable on the default GPU.
- CORE.Window.device = eglGetPlatformDisplayEXT(EGL_PLATFORM_ANGLE_ANGLE, EGL_DEFAULT_DISPLAY, warpDisplayAttributes);
- if (CORE.Window.device == EGL_NO_DISPLAY)
- {
- TRACELOG(LOG_WARNING, "DISPLAY: Failed to initialize EGL device");
- return false;
- }
-
- if (eglInitialize(CORE.Window.device, NULL, NULL) == EGL_FALSE)
- {
- // If all of the calls to eglInitialize returned EGL_FALSE then an error has occurred.
- TRACELOG(LOG_WARNING, "DISPLAY: Failed to initialize EGL device");
- return false;
- }
- }
- }
-
- EGLint numConfigs = 0;
- if ((eglChooseConfig(CORE.Window.device, framebufferAttribs, &CORE.Window.config, 1, &numConfigs) == EGL_FALSE) || (numConfigs == 0))
- {
- TRACELOG(LOG_WARNING, "DISPLAY: Failed to choose first EGL configuration");
- return false;
- }
-
- // Create a PropertySet and initialize with the EGLNativeWindowType.
- //PropertySet^ surfaceCreationProperties = ref new PropertySet();
- //surfaceCreationProperties->Insert(ref new String(EGLNativeWindowTypeProperty), window); // CoreWindow^ window
-
- // You can configure the surface to render at a lower resolution and be scaled up to
- // the full window size. The scaling is often free on mobile hardware.
- //
- // One way to configure the SwapChainPanel is to specify precisely which resolution it should render at.
- // Size customRenderSurfaceSize = Size(800, 600);
- // surfaceCreationProperties->Insert(ref new String(EGLRenderSurfaceSizeProperty), PropertyValue::CreateSize(customRenderSurfaceSize));
- //
- // Another way is to tell the SwapChainPanel to render at a certain scale factor compared to its size.
- // e.g. if the SwapChainPanel is 1920x1280 then setting a factor of 0.5f will make the app render at 960x640
- // float customResolutionScale = 0.5f;
- // surfaceCreationProperties->Insert(ref new String(EGLRenderResolutionScaleProperty), PropertyValue::CreateSingle(customResolutionScale));
-
-
- // eglCreateWindowSurface() requires a EGLNativeWindowType parameter,
- // In Windows platform: typedef HWND EGLNativeWindowType;
-
-
- // Property: EGLNativeWindowTypeProperty
- // Type: IInspectable
- // Description: Set this property to specify the window type to use for creating a surface.
- // If this property is missing, surface creation will fail.
- //
- //const wchar_t EGLNativeWindowTypeProperty[] = L"EGLNativeWindowTypeProperty";
-
- //https://stackoverflow.com/questions/46550182/how-to-create-eglsurface-using-c-winrt-and-angle
-
- //CORE.Window.surface = eglCreateWindowSurface(CORE.Window.device, CORE.Window.config, reinterpret_cast<IInspectable*>(surfaceCreationProperties), surfaceAttributes);
- CORE.Window.surface = eglCreateWindowSurface(CORE.Window.device, CORE.Window.config, (EGLNativeWindowType) UWPGetCoreWindowPtr(), surfaceAttributes);
- if (CORE.Window.surface == EGL_NO_SURFACE)
- {
- TRACELOG(LOG_WARNING, "DISPLAY: Failed to create EGL fullscreen surface");
- return false;
- }
-
- CORE.Window.context = eglCreateContext(CORE.Window.device, CORE.Window.config, EGL_NO_CONTEXT, contextAttribs);
- if (CORE.Window.context == EGL_NO_CONTEXT)
- {
- TRACELOG(LOG_WARNING, "DISPLAY: Failed to create EGL context");
- return false;
- }
-
- // Get EGL device window size
- eglQuerySurface(CORE.Window.device, CORE.Window.surface, EGL_WIDTH, &CORE.Window.screen.width);
- eglQuerySurface(CORE.Window.device, CORE.Window.surface, EGL_HEIGHT, &CORE.Window.screen.height);
-
- // Get display size
- UWPGetDisplaySizeFunc()(&CORE.Window.display.width, &CORE.Window.display.height);
-
- // Use the width and height of the surface for render
- CORE.Window.render.width = CORE.Window.screen.width;
- CORE.Window.render.height = CORE.Window.screen.height;
-
-#endif // PLATFORM_UWP
-
#if defined(PLATFORM_ANDROID) || defined(PLATFORM_RPI) || defined(PLATFORM_DRM)
EGLint numConfigs = 0;
@@ -4470,7 +4267,7 @@ static bool InitGraphicsDevice(int width, int height)
TRACELOG(LOG_INFO, " > Screen size: %i x %i", CORE.Window.screen.width, CORE.Window.screen.height);
TRACELOG(LOG_INFO, " > Viewport offsets: %i, %i", CORE.Window.renderOffset.x, CORE.Window.renderOffset.y);
}
-#endif // PLATFORM_ANDROID || PLATFORM_RPI || PLATFORM_DRM || PLATFORM_UWP
+#endif // PLATFORM_ANDROID || PLATFORM_RPI || PLATFORM_DRM
// Load OpenGL extensions
// NOTE: GL procedures address loader is required to load extensions
@@ -4512,7 +4309,7 @@ static bool InitGraphicsDevice(int width, int height)
ClearBackground(RAYWHITE); // Default background color for raylib games :P
-#if defined(PLATFORM_ANDROID) || defined(PLATFORM_UWP)
+#if defined(PLATFORM_ANDROID)
CORE.Window.ready = true;
#endif
@@ -4634,7 +4431,7 @@ static void InitTimer(void)
// However, it can also reduce overall system performance, because the thread scheduler switches tasks more often.
// High resolutions can also prevent the CPU power management system from entering power-saving modes.
// Setting a higher resolution does not improve the accuracy of the high-resolution performance counter.
-#if defined(_WIN32) && defined(SUPPORT_WINMM_HIGHRES_TIMER) && !defined(SUPPORT_BUSY_WAIT_LOOP) && !defined(PLATFORM_UWP)
+#if defined(_WIN32) && defined(SUPPORT_WINMM_HIGHRES_TIMER) && !defined(SUPPORT_BUSY_WAIT_LOOP)
timeBeginPeriod(1); // Setup high-resolution timer to 1ms (granularity of 1-2 ms)
#endif
@@ -4671,10 +4468,6 @@ void WaitTime(float ms)
#endif
// System halt functions
- #if defined(PLATFORM_UWP)
- UWPGetSleepFunc()(ms/1000);
- return;
- #endif
#if defined(_WIN32)
Sleep((unsigned int)ms);
#endif
@@ -4709,7 +4502,7 @@ void SwapScreenBuffer(void)
glfwSwapBuffers(CORE.Window.handle);
#endif
-#if defined(PLATFORM_ANDROID) || defined(PLATFORM_RPI) || defined(PLATFORM_DRM) || defined(PLATFORM_UWP)
+#if defined(PLATFORM_ANDROID) || defined(PLATFORM_RPI) || defined(PLATFORM_DRM)
eglSwapBuffers(CORE.Window.device, CORE.Window.surface);
#if defined(PLATFORM_DRM)
@@ -4761,7 +4554,7 @@ void SwapScreenBuffer(void)
CORE.Window.prevBO = bo;
#endif // PLATFORM_DRM
-#endif // PLATFORM_ANDROID || PLATFORM_RPI || PLATFORM_DRM || PLATFORM_UWP
+#endif // PLATFORM_ANDROID || PLATFORM_RPI || PLATFORM_DRM
}
// Register all input events
@@ -4801,7 +4594,7 @@ void PollInputEvents(void)
// Register gamepads buttons events
for (int i = 0; i < MAX_GAMEPADS; i++)
{
- if (CORE.Input.Gamepad.ready[i]) // Check if gamepad is available
+ if (CORE.Input.Gamepad.ready[i])
{
// Register previous gamepad states
for (int k = 0; k < MAX_GAMEPAD_BUTTONS; k++) CORE.Input.Gamepad.previousButtonState[i][k] = CORE.Input.Gamepad.currentButtonState[i][k];
@@ -4809,25 +4602,6 @@ void PollInputEvents(void)
}
#endif
-#if defined(PLATFORM_UWP)
- // Register previous keys states
- for (int i = 0; i < 512; i++) CORE.Input.Keyboard.previousKeyState[i] = CORE.Input.Keyboard.currentKeyState[i];
-
- for (int i = 0; i < MAX_GAMEPADS; i++)
- {
- if (CORE.Input.Gamepad.ready[i])
- {
- for (int k = 0; k < MAX_GAMEPAD_BUTTONS; k++) CORE.Input.Gamepad.previousButtonState[i][k] = CORE.Input.Gamepad.currentButtonState[i][k];
- }
- }
-
- // Register previous mouse states
- CORE.Input.Mouse.previousWheelMove = CORE.Input.Mouse.currentWheelMove;
- CORE.Input.Mouse.currentWheelMove = 0.0f;
-
- for (int i = 0; i < 3; i++) CORE.Input.Mouse.previousButtonState[i] = CORE.Input.Mouse.currentButtonState[i];
-#endif // PLATFORM_UWP
-
#if defined(PLATFORM_DESKTOP) || defined(PLATFORM_WEB)
// Keyboard/Mouse input polling (automatically managed by GLFW3 through callback)
@@ -6412,279 +6186,6 @@ static void *GamepadThread(void *arg)
}
#endif // PLATFORM_RPI || PLATFORM_DRM
-#if defined(PLATFORM_UWP)
-// UWP function pointers
-// NOTE: Those pointers are set by UWP App
-static UWPQueryTimeFunc uwpQueryTimeFunc = NULL;
-static UWPSleepFunc uwpSleepFunc = NULL;
-static UWPDisplaySizeFunc uwpDisplaySizeFunc = NULL;
-static UWPMouseFunc uwpMouseLockFunc = NULL;
-static UWPMouseFunc uwpMouseUnlockFunc = NULL;
-static UWPMouseFunc uwpMouseShowFunc = NULL;
-static UWPMouseFunc uwpMouseHideFunc = NULL;
-static UWPMouseSetPosFunc uwpMouseSetPosFunc = NULL;
-static void *uwpCoreWindow = NULL;
-
-// Check all required UWP function pointers have been set
-bool UWPIsConfigured()
-{
- bool pass = true;
-
- if (uwpQueryTimeFunc == NULL) { TRACELOG(LOG_WARNING, "UWP: UWPSetQueryTimeFunc() must be called with a valid function before InitWindow()"); pass = false; }
- if (uwpSleepFunc == NULL) { TRACELOG(LOG_WARNING, "UWP: UWPSetSleepFunc() must be called with a valid function before InitWindow()"); pass = false; }
- if (uwpDisplaySizeFunc == NULL) { TRACELOG(LOG_WARNING, "UWP: UWPSetDisplaySizeFunc() must be called with a valid function before InitWindow()"); pass = false; }
- if (uwpMouseLockFunc == NULL) { TRACELOG(LOG_WARNING, "UWP: UWPSetMouseLockFunc() must be called with a valid function before InitWindow()"); pass = false; }
- if (uwpMouseUnlockFunc == NULL) { TRACELOG(LOG_WARNING, "UWP: UWPSetMouseUnlockFunc() must be called with a valid function before InitWindow()"); pass = false; }
- if (uwpMouseShowFunc == NULL) { TRACELOG(LOG_WARNING, "UWP: UWPSetMouseShowFunc() must be called with a valid function before InitWindow()"); pass = false; }
- if (uwpMouseHideFunc == NULL) { TRACELOG(LOG_WARNING, "UWP: UWPSetMouseHideFunc() must be called with a valid function before InitWindow()"); pass = false; }
- if (uwpMouseSetPosFunc == NULL) { TRACELOG(LOG_WARNING, "UWP: UWPSetMouseSetPosFunc() must be called with a valid function before InitWindow()"); pass = false; }
- if (uwpCoreWindow == NULL) { TRACELOG(LOG_WARNING, "UWP: A pointer to the UWP core window must be set before InitWindow()"); pass = false; }
-
- return pass;
-}
-
-// UWP function handlers get/set
-void UWPSetDataPath(const char *path) { CORE.Storage.basePath = path; }
-UWPQueryTimeFunc UWPGetQueryTimeFunc(void) { return uwpQueryTimeFunc; }
-void UWPSetQueryTimeFunc(UWPQueryTimeFunc func) { uwpQueryTimeFunc = func; }
-UWPSleepFunc UWPGetSleepFunc(void) { return uwpSleepFunc; }
-void UWPSetSleepFunc(UWPSleepFunc func) { uwpSleepFunc = func; }
-UWPDisplaySizeFunc UWPGetDisplaySizeFunc(void) { return uwpDisplaySizeFunc; }
-void UWPSetDisplaySizeFunc(UWPDisplaySizeFunc func) { uwpDisplaySizeFunc = func; }
-UWPMouseFunc UWPGetMouseLockFunc() { return uwpMouseLockFunc; }
-void UWPSetMouseLockFunc(UWPMouseFunc func) { uwpMouseLockFunc = func; }
-UWPMouseFunc UWPGetMouseUnlockFunc() { return uwpMouseUnlockFunc; }
-void UWPSetMouseUnlockFunc(UWPMouseFunc func) { uwpMouseUnlockFunc = func; }
-UWPMouseFunc UWPGetMouseShowFunc() { return uwpMouseShowFunc; }
-void UWPSetMouseShowFunc(UWPMouseFunc func) { uwpMouseShowFunc = func; }
-UWPMouseFunc UWPGetMouseHideFunc() { return uwpMouseHideFunc; }
-void UWPSetMouseHideFunc(UWPMouseFunc func) { uwpMouseHideFunc = func; }
-UWPMouseSetPosFunc UWPGetMouseSetPosFunc() { return uwpMouseSetPosFunc; }
-void UWPSetMouseSetPosFunc(UWPMouseSetPosFunc func) { uwpMouseSetPosFunc = func; }
-
-void *UWPGetCoreWindowPtr() { return uwpCoreWindow; }
-void UWPSetCoreWindowPtr(void *ptr) { uwpCoreWindow = ptr; }
-void UWPMouseWheelEvent(int deltaY) { CORE.Input.Mouse.currentWheelMove = (float)deltaY; }
-
-void UWPKeyDownEvent(int key, bool down, bool controlKey)
-{
- if (key == CORE.Input.Keyboard.exitKey && down)
- {
- // Time to close the window.
- CORE.Window.shouldClose = true;
- }
-#if defined(SUPPORT_SCREEN_CAPTURE)
- else if (key == KEY_F12 && down)
- {
-#if defined(SUPPORT_GIF_RECORDING)
- if (controlKey)
- {
- if (gifRecording)
- {
- gifRecording = false;
-
- MsfGifResult result = msf_gif_end(&gifState);
-
- SaveFileData(TextFormat("%s/screenrec%03i.gif", CORE.Storage.basePath, screenshotCounter), result.data, result.dataSize);
- msf_gif_free(result);
-
- #if defined(PLATFORM_WEB)
- // Download file from MEMFS (emscripten memory filesystem)
- // saveFileFromMEMFSToDisk() function is defined in raylib/templates/web_shel/shell.html
- emscripten_run_script(TextFormat("saveFileFromMEMFSToDisk('%s','%s')", TextFormat("screenrec%03i.gif", screenshotCounter - 1), TextFormat("screenrec%03i.gif", screenshotCounter - 1)));
- #endif
-
- TRACELOG(LOG_INFO, "SYSTEM: Finish animated GIF recording");
- }
- else
- {
- gifRecording = true;
- gifFramesCounter = 0;
-
- msf_gif_begin(&gifState, CORE.Window.screen.width, CORE.Window.screen.height);
- screenshotCounter++;
-
- TRACELOG(LOG_INFO, "SYSTEM: Start animated GIF recording: %s", TextFormat("screenrec%03i.gif", screenshotCounter));
- }
- }
- else
-#endif // SUPPORT_GIF_RECORDING
- {
- TakeScreenshot(TextFormat("screenshot%03i.png", screenshotCounter));
- screenshotCounter++;
- }
- }
-#endif // SUPPORT_SCREEN_CAPTURE
- else
- {
- CORE.Input.Keyboard.currentKeyState[key] = down;
- }
-}
-
-void UWPKeyCharEvent(int key)
-{
- if (CORE.Input.Keyboard.keyPressedQueueCount < MAX_KEY_PRESSED_QUEUE)
- {
- // Add character to the queue
- CORE.Input.Keyboard.keyPressedQueue[CORE.Input.Keyboard.keyPressedQueueCount] = key;
- CORE.Input.Keyboard.keyPressedQueueCount++;
- }
-}
-
-void UWPMouseButtonEvent(int button, bool down)
-{
- CORE.Input.Mouse.currentButtonState[button] = down;
-
-#if defined(SUPPORT_GESTURES_SYSTEM) && defined(SUPPORT_MOUSE_GESTURES)
- // Process mouse events as touches to be able to use mouse-gestures
- GestureEvent gestureEvent = { 0 };
-
- // Register touch actions
- if ((CORE.Input.Mouse.currentButtonState[button] == 1) && (CORE.Input.Mouse.previousButtonState[button] == 0)) gestureEvent.touchAction = TOUCH_DOWN;
- else if ((CORE.Input.Mouse.currentButtonState[button] == 0) && (CORE.Input.Mouse.previousButtonState[button] == 1)) gestureEvent.touchAction = TOUCH_UP;
-
- // NOTE: TOUCH_MOVE event is registered in MouseCursorPosCallback()
-
- // Assign a pointer ID
- gestureEvent.pointerId[0] = 0;
-
- // Register touch points count
- gestureEvent.pointCount = 1;
-
- // Register touch points position, only one point registered
- gestureEvent.position[0] = GetMousePosition();
-
- // Normalize gestureEvent.position[0] for CORE.Window.screen.width and CORE.Window.screen.height
- gestureEvent.position[0].x /= (float)GetScreenWidth();
- gestureEvent.position[0].y /= (float)GetScreenHeight();
-
- // Gesture data is sent to gestures system for processing
- ProcessGestureEvent(gestureEvent);
-#endif
-}
-
-void UWPMousePosEvent(double x, double y)
-{
- CORE.Input.Mouse.currentPosition.x = (float)x;
- CORE.Input.Mouse.currentPosition.y = (float)y;
- CORE.Input.Touch.position[0] = CORE.Input.Mouse.currentPosition;
-
-#if defined(SUPPORT_GESTURES_SYSTEM) && defined(SUPPORT_MOUSE_GESTURES)
- // Process mouse events as touches to be able to use mouse-gestures
- GestureEvent gestureEvent = { 0 };
-
- gestureEvent.touchAction = TOUCH_MOVE;
-
- // Assign a pointer ID
- gestureEvent.pointerId[0] = 0;
-
- // Register touch points count
- gestureEvent.pointCount = 1;
-
- // Register touch points position, only one point registered
- gestureEvent.position[0] = CORE.Input.Mouse.currentPosition;
-
- // Normalize gestureEvent.position[0] for CORE.Window.screen.width and CORE.Window.screen.height
- gestureEvent.position[0].x /= (float)GetScreenWidth();
- gestureEvent.position[0].y /= (float)GetScreenHeight();
-
- // Gesture data is sent to gestures system for processing
- ProcessGestureEvent(gestureEvent);
-#endif
-}
-
-void UWPResizeEvent(int width, int height)
-{
- SetupViewport(width, height); // Reset viewport and projection matrix for new size
-
- // Set current screen size
- CORE.Window.screen.width = width;
- CORE.Window.screen.height = height;
- CORE.Window.currentFbo.width = width;
- CORE.Window.currentFbo.height = height;
-
- // NOTE: Postprocessing texture is not scaled to new size
-
- CORE.Window.resizedLastFrame = true;
-}
-
-void UWPActivateGamepadEvent(int gamepad, bool active)
-{
- if (gamepad < MAX_GAMEPADS) CORE.Input.Gamepad.ready[gamepad] = active;
-}
-
-void UWPRegisterGamepadButton(int gamepad, int button, bool down)
-{
- if (gamepad < MAX_GAMEPADS)
- {
- if (button < MAX_GAMEPAD_BUTTONS)
- {
- CORE.Input.Gamepad.currentButtonState[gamepad][button] = down;
- CORE.Input.Gamepad.lastButtonPressed = button;
- }
- }
-}
-
-void UWPRegisterGamepadAxis(int gamepad, int axis, float value)
-{
- if (gamepad < MAX_GAMEPADS)
- {
- if (axis < MAX_GAMEPAD_AXIS) CORE.Input.Gamepad.axisState[gamepad][axis] = value;
- }
-}
-
-void UWPGestureMove(int pointer, float x, float y)
-{
-#if defined(SUPPORT_GESTURES_SYSTEM)
- GestureEvent gestureEvent = { 0 };
-
- // Assign the pointer ID and touch action
- gestureEvent.pointerId[0] = pointer;
- gestureEvent.touchAction = TOUCH_MOVE;
-
- // Register touch points count
- gestureEvent.pointCount = 1;
-
- // Register touch points position, only one point registered
- gestureEvent.position[0].x = x;
- gestureEvent.position[0].y = y;
-
- // Normalize gestureEvent.position[0] for CORE.Window.screen.width and CORE.Window.screen.height
- gestureEvent.position[0].x /= (float)GetScreenWidth();
- gestureEvent.position[0].y /= (float)GetScreenHeight();
-
- // Gesture data is sent to gestures system for processing
- ProcessGestureEvent(gestureEvent);
-#endif
-}
-
-void UWPGestureTouch(int pointer, float x, float y, bool touch)
-{
-#if defined(SUPPORT_GESTURES_SYSTEM)
- GestureEvent gestureEvent = { 0 };
-
- // Assign the pointer ID and touch action
- gestureEvent.pointerId[0] = pointer;
- gestureEvent.touchAction = touch ? TOUCH_DOWN : TOUCH_UP;
-
- // Register touch points count
- gestureEvent.pointCount = 1;
-
- // Register touch points position, only one point registered
- gestureEvent.position[0].x = x;
- gestureEvent.position[0].y = y;
-
- // Normalize gestureEvent.position[0] for CORE.Window.screen.width and CORE.Window.screen.height
- gestureEvent.position[0].x /= (float)GetScreenWidth();
- gestureEvent.position[0].y /= (float)GetScreenHeight();
-
- // Gesture data is sent to gestures system for processing
- ProcessGestureEvent(gestureEvent);
-#endif
-}
-
-#endif // PLATFORM_UWP
-
#if defined(PLATFORM_DRM)
// Search matching DRM mode in connector's mode list
static int FindMatchingConnectorMode(const drmModeConnector *connector, const drmModeModeInfo *mode)
diff --git a/src/uwp_events.h b/src/uwp_events.h
deleted file mode 100644
index 25c7113a..00000000
--- a/src/uwp_events.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/**********************************************************************************************
-*
-* raylib.uwp_events - Functions for bootstrapping UWP functionality
-*
-*
-* LICENSE: zlib/libpng
-*
-* Copyright (c) 2020-2021 Reece Mackie (@Rover656)
-*
-* This software is provided "as-is", without any express or implied warranty. In no event
-* will the authors be held liable for any damages arising from the use of this software.
-*
-* Permission is granted to anyone to use this software for any purpose, including commercial
-* applications, and to alter it and redistribute it freely, subject to the following restrictions:
-*
-* 1. The origin of this software must not be misrepresented; you must not claim that you
-* wrote the original software. If you use this software in a product, an acknowledgment
-* in the product documentation would be appreciated but is not required.
-*
-* 2. Altered source versions must be plainly marked as such, and must not be misrepresented
-* as being the original software.
-*
-* 3. This notice may not be removed or altered from any source distribution.
-*
-**********************************************************************************************/
-
-#ifndef UWP_EVENTS_H
-#define UWP_EVENTS_H
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-#if defined(PLATFORM_UWP)
-bool UWPIsConfigured(); // Check if UWP functions are set and ready to use
-void UWPSetDataPath(const char *path); // Set the UWP data path for saving and loading
-
-typedef double(*UWPQueryTimeFunc)(); // Callback function to query time
-UWPQueryTimeFunc UWPGetQueryTimeFunc(void); // Get query time function
-void UWPSetQueryTimeFunc(UWPQueryTimeFunc func); // Set query time function
-
-typedef void (*UWPSleepFunc)(double sleepUntil); // Callback function for sleep
-UWPSleepFunc UWPGetSleepFunc(void); // Get sleep function
-void UWPSetSleepFunc(UWPSleepFunc func); // Set sleep function
-
-typedef void (*UWPDisplaySizeFunc)(int *width, int *height); // Callback function for display size change
-UWPDisplaySizeFunc UWPGetDisplaySizeFunc(void); // Get display size function
-void UWPSetDisplaySizeFunc(UWPDisplaySizeFunc func); // Set display size function
-
-typedef void (*UWPMouseFunc)(void); // Callback function for mouse cursor control
-UWPMouseFunc UWPGetMouseLockFunc(); // Get mouse lock function
-void UWPSetMouseLockFunc(UWPMouseFunc func); // Set mouse lock function
-UWPMouseFunc UWPGetMouseUnlockFunc(); // Get mouse unlock function
-void UWPSetMouseUnlockFunc(UWPMouseFunc func); // Set mouse unlock function
-UWPMouseFunc UWPGetMouseShowFunc(); // Get mouse show function
-void UWPSetMouseShowFunc(UWPMouseFunc func); // Set mouse show function
-UWPMouseFunc UWPGetMouseHideFunc(); // Get mouse hide function
-void UWPSetMouseHideFunc(UWPMouseFunc func); // Set mouse hide function
-
-typedef void (*UWPMouseSetPosFunc)(int x, int y); // Callback function to set mouse position
-UWPMouseSetPosFunc UWPGetMouseSetPosFunc(); // Get mouse set position function
-void UWPSetMouseSetPosFunc(UWPMouseSetPosFunc func); // Set mouse set position function
-
-// NOTE: Below functions are implemented in core.c but are placed here so they can be called by user code
-// This choice is made as platform-specific code is preferred to be kept away from raylib.h
-
-void UWPKeyDownEvent(int key, bool down, bool controlKey); // Check for key down event
-void UWPKeyCharEvent(int key); // Check for a character event (CoreWindow::CharacterRecieved)
-void UWPMouseButtonEvent(int button, bool down); // Check for mouse button state changes event
-void UWPMousePosEvent(double x, double y); // Check for mouse cursor move event
-void UWPMouseWheelEvent(int deltaY); // Check for mouse wheel move event
-void UWPResizeEvent(int width, int height); // Check for window resize event
-void UWPActivateGamepadEvent(int gamepad, bool active); // Check for gamepad activated event
-void UWPRegisterGamepadButton(int gamepad, int button, bool down); // Check for gamepad button state change event
-void UWPRegisterGamepadAxis(int gamepad, int axis, float value); // Check for gamepad axis state change event
-void UWPGestureMove(int pointer, float x, float y); // Check for touch point move event
-void UWPGestureTouch(int pointer, float x, float y, bool touch); // Check for touch down or up event
-
-void *UWPGetCoreWindowPtr(); // Get core window pointer
-void UWPSetCoreWindowPtr(void *ptr); // Set core window pointer, so that it can be passed to EGL
-
-#if defined(__cplusplus)
-}
-#endif
-
-#endif // PLATFORM_UWP
-
-#endif // UWP_EVENTS_H