mirror of
https://github.com/glfw/glfw.git
synced 2025-12-19 21:51:56 +00:00
Compare commits
11 Commits
e7f5c5b993
...
4e8b3ae6c5
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4e8b3ae6c5 | ||
|
|
506c11ba43 | ||
|
|
d30d63313c | ||
|
|
1bd20df533 | ||
|
|
475ba17351 | ||
|
|
cac3fd18a0 | ||
|
|
2c28530875 | ||
|
|
dc7c52ed31 | ||
|
|
456bb88748 | ||
|
|
f447b250bf | ||
|
|
49d8b1ff11 |
@ -229,7 +229,7 @@ video tutorials.
|
|||||||
- Brandon Schaefer
|
- Brandon Schaefer
|
||||||
- Sebastian Schuberth
|
- Sebastian Schuberth
|
||||||
- Scr3amer
|
- Scr3amer
|
||||||
- Jan Schuerkamp
|
- Jan Schürkamp
|
||||||
- Christian Sdunek
|
- Christian Sdunek
|
||||||
- Matt Sealey
|
- Matt Sealey
|
||||||
- Steve Sexton
|
- Steve Sexton
|
||||||
@ -290,6 +290,7 @@ video tutorials.
|
|||||||
- Ryogo Yoshimura
|
- Ryogo Yoshimura
|
||||||
- Lukas Zanner
|
- Lukas Zanner
|
||||||
- Andrey Zholos
|
- Andrey Zholos
|
||||||
|
- Tianlan Zhou
|
||||||
- Aihui Zhu
|
- Aihui Zhu
|
||||||
- Santi Zupancic
|
- Santi Zupancic
|
||||||
- Jonas Ådahl
|
- Jonas Ådahl
|
||||||
|
|||||||
@ -129,11 +129,13 @@ information on what to include when reporting a bug.
|
|||||||
- [Wayland] Bugfix: The fractional scaling related objects were not destroyed
|
- [Wayland] Bugfix: The fractional scaling related objects were not destroyed
|
||||||
- [Wayland] Bugfix: `glfwInit` would segfault on compositor with no seat (#2517)
|
- [Wayland] Bugfix: `glfwInit` would segfault on compositor with no seat (#2517)
|
||||||
- [Wayland] Bugfix: A drag entering a non-GLFW surface could cause a segfault
|
- [Wayland] Bugfix: A drag entering a non-GLFW surface could cause a segfault
|
||||||
|
- [Wayland] Bugfix: Ignore key repeat events when no window has keyboard focus (#2727)
|
||||||
- [X11] Bugfix: Running without a WM could trigger an assert (#2593,#2601,#2631)
|
- [X11] Bugfix: Running without a WM could trigger an assert (#2593,#2601,#2631)
|
||||||
- [Null] Added Vulkan 'window' surface creation via `VK_EXT_headless_surface`
|
- [Null] Added Vulkan 'window' surface creation via `VK_EXT_headless_surface`
|
||||||
- [Null] Added EGL context creation on Mesa via `EGL_MESA_platform_surfaceless`
|
- [Null] Added EGL context creation on Mesa via `EGL_MESA_platform_surfaceless`
|
||||||
- [EGL] Allowed native access on Wayland with `GLFW_CONTEXT_CREATION_API` set to
|
- [EGL] Allowed native access on Wayland with `GLFW_CONTEXT_CREATION_API` set to
|
||||||
`GLFW_NATIVE_CONTEXT_API` (#2518)
|
`GLFW_NATIVE_CONTEXT_API` (#2518)
|
||||||
|
- Added `GLFW_ACCELERATION` window hint for hardware acceleration (#2491)
|
||||||
|
|
||||||
|
|
||||||
## Contact
|
## Contact
|
||||||
|
|||||||
5
deps/nuklear.h
vendored
5
deps/nuklear.h
vendored
@ -423,6 +423,11 @@ NK_STATIC_ASSERT(sizeof(nk_rune) >= 4);
|
|||||||
NK_STATIC_ASSERT(sizeof(nk_size) >= sizeof(void*));
|
NK_STATIC_ASSERT(sizeof(nk_size) >= sizeof(void*));
|
||||||
NK_STATIC_ASSERT(sizeof(nk_ptr) >= sizeof(void*));
|
NK_STATIC_ASSERT(sizeof(nk_ptr) >= sizeof(void*));
|
||||||
|
|
||||||
|
#if defined(_MSC_VER)
|
||||||
|
/* disable `operands are different enum types` warning on MSVC */
|
||||||
|
#pragma warning( disable: 5287 )
|
||||||
|
#endif
|
||||||
|
|
||||||
/* ============================================================================
|
/* ============================================================================
|
||||||
*
|
*
|
||||||
* API
|
* API
|
||||||
|
|||||||
18
docs/news.md
18
docs/news.md
@ -14,8 +14,25 @@ values over 8. For compatibility with older versions, the
|
|||||||
@ref GLFW_UNLIMITED_MOUSE_BUTTONS input mode needs to be set to make use of
|
@ref GLFW_UNLIMITED_MOUSE_BUTTONS input mode needs to be set to make use of
|
||||||
this.
|
this.
|
||||||
|
|
||||||
|
### Window hint for hardware acceleration {#acceleration}
|
||||||
|
|
||||||
|
You can use window hint [GLFW_ACCELERATION](@ref GLFW_ACCELERATION_hint) to
|
||||||
|
specify whether hardware acceleration is preferred or not. The default value
|
||||||
|
is to prefer hardware acceleration. You can get whether hardware acceleration
|
||||||
|
is enabled with the window attribute
|
||||||
|
[GLFW_ACCELERATION](@ref GLFW_ACCELERATION_attrib). This feature is only
|
||||||
|
available on WGL currently.
|
||||||
|
|
||||||
|
|
||||||
## Caveats {#caveats}
|
## Caveats {#caveats}
|
||||||
|
|
||||||
|
### Microsoft GDI software OpenGL ICD support {#gdi_opengl_icd}
|
||||||
|
|
||||||
|
GLFW now supports creating window when the Microsoft GDI software OpenGL ICD is
|
||||||
|
the only available implementation.
|
||||||
|
See [GLFW_ACCELERATION](@ref GLFW_ACCELERATION_hint) for more details.
|
||||||
|
|
||||||
|
|
||||||
## Deprecations {#deprecations}
|
## Deprecations {#deprecations}
|
||||||
|
|
||||||
## Removals {#removals}
|
## Removals {#removals}
|
||||||
@ -37,4 +54,3 @@ this.
|
|||||||
- [Release notes for 3.2](https://www.glfw.org/docs/3.2/news.html)
|
- [Release notes for 3.2](https://www.glfw.org/docs/3.2/news.html)
|
||||||
- [Release notes for 3.1](https://www.glfw.org/docs/3.1/news.html)
|
- [Release notes for 3.1](https://www.glfw.org/docs/3.1/news.html)
|
||||||
- [Release notes for 3.0](https://www.glfw.org/docs/3.0/news.html)
|
- [Release notes for 3.0](https://www.glfw.org/docs/3.0/news.html)
|
||||||
|
|
||||||
|
|||||||
@ -336,6 +336,15 @@ __GLFW_DOUBLEBUFFER__ specifies whether the framebuffer should be double
|
|||||||
buffered. You nearly always want to use double buffering. This is a hard
|
buffered. You nearly always want to use double buffering. This is a hard
|
||||||
constraint. Possible values are `GLFW_TRUE` and `GLFW_FALSE`.
|
constraint. Possible values are `GLFW_TRUE` and `GLFW_FALSE`.
|
||||||
|
|
||||||
|
@anchor GLFW_ACCELERATION
|
||||||
|
@anchor GLFW_ACCELERATION_hint
|
||||||
|
__GLFW_ACCELERATION__ specifies whether the hardware acceleration should be
|
||||||
|
preferred. By default, hardware acceleration is preferred, and will fallback
|
||||||
|
to no acceleration if hardware acceleration is unavailable. Possible values
|
||||||
|
are `GLFW_TRUE` and `GLFW_FALSE`.
|
||||||
|
|
||||||
|
This hint only has an effect on WGL.
|
||||||
|
|
||||||
|
|
||||||
#### Monitor related hints {#window_hints_mtr}
|
#### Monitor related hints {#window_hints_mtr}
|
||||||
|
|
||||||
@ -1487,6 +1496,11 @@ __GLFW_DOUBLEBUFFER__ indicates whether the specified window is double-buffered
|
|||||||
when rendering with OpenGL or OpenGL ES. This can be set before creation with
|
when rendering with OpenGL or OpenGL ES. This can be set before creation with
|
||||||
the [GLFW_DOUBLEBUFFER](@ref GLFW_DOUBLEBUFFER_hint) window hint.
|
the [GLFW_DOUBLEBUFFER](@ref GLFW_DOUBLEBUFFER_hint) window hint.
|
||||||
|
|
||||||
|
@anchor GLFW_ACCELERATION_attrib
|
||||||
|
__GLFW_ACCELERATION__ indicates whether the specified window is hardware
|
||||||
|
accelerated when rendering with OpenGL or OpenGL ES. This can be set before
|
||||||
|
creation with the [GLFW_ACCELERATION](@ref GLFW_ACCELERATION_hint) window hint.
|
||||||
|
|
||||||
|
|
||||||
## Buffer swapping {#buffer_swap}
|
## Buffer swapping {#buffer_swap}
|
||||||
|
|
||||||
|
|||||||
@ -1022,6 +1022,14 @@ extern "C" {
|
|||||||
* [attribute](@ref GLFW_DOUBLEBUFFER_attrib).
|
* [attribute](@ref GLFW_DOUBLEBUFFER_attrib).
|
||||||
*/
|
*/
|
||||||
#define GLFW_DOUBLEBUFFER 0x00021010
|
#define GLFW_DOUBLEBUFFER 0x00021010
|
||||||
|
/*! @brief Hardware acceleration hint.
|
||||||
|
*
|
||||||
|
* Hardware acceleration [hint](@ref GLFW_ACCELERATION_hint) and
|
||||||
|
* [attribute](@ref GLFW_ACCELERATION_attrib).
|
||||||
|
*
|
||||||
|
* @since Added in version 3.4.
|
||||||
|
*/
|
||||||
|
#define GLFW_ACCELERATION 0x00021011
|
||||||
|
|
||||||
/*! @brief Context client API hint and attribute.
|
/*! @brief Context client API hint and attribute.
|
||||||
*
|
*
|
||||||
@ -3159,9 +3167,6 @@ GLFWAPI void glfwWindowHintString(int hint, const char* value);
|
|||||||
* GLFW_VERSION_UNAVAILABLE, @ref GLFW_FORMAT_UNAVAILABLE, @ref
|
* GLFW_VERSION_UNAVAILABLE, @ref GLFW_FORMAT_UNAVAILABLE, @ref
|
||||||
* GLFW_NO_WINDOW_CONTEXT and @ref GLFW_PLATFORM_ERROR.
|
* GLFW_NO_WINDOW_CONTEXT and @ref GLFW_PLATFORM_ERROR.
|
||||||
*
|
*
|
||||||
* @remark @win32 Window creation will fail if the Microsoft GDI software
|
|
||||||
* OpenGL implementation is the only one available.
|
|
||||||
*
|
|
||||||
* @remark @win32 If the executable has an icon resource named `GLFW_ICON,` it
|
* @remark @win32 If the executable has an icon resource named `GLFW_ICON,` it
|
||||||
* will be set as the initial icon for the window. If no such icon is present,
|
* will be set as the initial icon for the window. If no such icon is present,
|
||||||
* the `IDI_APPLICATION` icon will be used instead. To set a different icon,
|
* the `IDI_APPLICATION` icon will be used instead. To set a different icon,
|
||||||
|
|||||||
@ -28,10 +28,10 @@
|
|||||||
#include "internal.h"
|
#include "internal.h"
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
#include <limits.h>
|
||||||
|
#include <stdbool.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <limits.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
@ -185,6 +185,7 @@ const _GLFWfbconfig* _glfwChooseFBConfig(const _GLFWfbconfig* desired,
|
|||||||
unsigned int count)
|
unsigned int count)
|
||||||
{
|
{
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
bool accelerationMatch, closestAccelerationMatch = false;
|
||||||
unsigned int missing, leastMissing = UINT_MAX;
|
unsigned int missing, leastMissing = UINT_MAX;
|
||||||
unsigned int colorDiff, leastColorDiff = UINT_MAX;
|
unsigned int colorDiff, leastColorDiff = UINT_MAX;
|
||||||
unsigned int extraDiff, leastExtraDiff = UINT_MAX;
|
unsigned int extraDiff, leastExtraDiff = UINT_MAX;
|
||||||
@ -201,6 +202,8 @@ const _GLFWfbconfig* _glfwChooseFBConfig(const _GLFWfbconfig* desired,
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
accelerationMatch = desired->acceleration == current->acceleration;
|
||||||
|
|
||||||
// Count number of missing buffers
|
// Count number of missing buffers
|
||||||
{
|
{
|
||||||
missing = 0;
|
missing = 0;
|
||||||
@ -318,19 +321,25 @@ const _GLFWfbconfig* _glfwChooseFBConfig(const _GLFWfbconfig* desired,
|
|||||||
// Least number of missing buffers is the most important heuristic,
|
// Least number of missing buffers is the most important heuristic,
|
||||||
// then color buffer size match and lastly size match for other buffers
|
// then color buffer size match and lastly size match for other buffers
|
||||||
|
|
||||||
if (missing < leastMissing)
|
if (accelerationMatch && !closestAccelerationMatch)
|
||||||
closest = current;
|
closest = current;
|
||||||
else if (missing == leastMissing)
|
else if (accelerationMatch == closestAccelerationMatch)
|
||||||
{
|
{
|
||||||
if ((colorDiff < leastColorDiff) ||
|
if (missing < leastMissing)
|
||||||
(colorDiff == leastColorDiff && extraDiff < leastExtraDiff))
|
|
||||||
{
|
|
||||||
closest = current;
|
closest = current;
|
||||||
|
else if (missing == leastMissing)
|
||||||
|
{
|
||||||
|
if ((colorDiff < leastColorDiff) ||
|
||||||
|
(colorDiff == leastColorDiff && extraDiff < leastExtraDiff))
|
||||||
|
{
|
||||||
|
closest = current;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (current == closest)
|
if (current == closest)
|
||||||
{
|
{
|
||||||
|
closestAccelerationMatch = accelerationMatch;
|
||||||
leastMissing = missing;
|
leastMissing = missing;
|
||||||
leastColorDiff = colorDiff;
|
leastColorDiff = colorDiff;
|
||||||
leastExtraDiff = extraDiff;
|
leastExtraDiff = extraDiff;
|
||||||
|
|||||||
@ -481,6 +481,7 @@ struct _GLFWfbconfig
|
|||||||
GLFWbool sRGB;
|
GLFWbool sRGB;
|
||||||
GLFWbool doublebuffer;
|
GLFWbool doublebuffer;
|
||||||
GLFWbool transparent;
|
GLFWbool transparent;
|
||||||
|
GLFWbool acceleration;
|
||||||
uintptr_t handle;
|
uintptr_t handle;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -541,6 +542,7 @@ struct _GLFWwindow
|
|||||||
GLFWbool shouldClose;
|
GLFWbool shouldClose;
|
||||||
void* userPointer;
|
void* userPointer;
|
||||||
GLFWbool doublebuffer;
|
GLFWbool doublebuffer;
|
||||||
|
GLFWbool acceleration;
|
||||||
GLFWvidmode videoMode;
|
GLFWvidmode videoMode;
|
||||||
_GLFWmonitor* monitor;
|
_GLFWmonitor* monitor;
|
||||||
_GLFWcursor* cursor;
|
_GLFWcursor* cursor;
|
||||||
|
|||||||
@ -145,6 +145,8 @@ static int choosePixelFormatWGL(_GLFWwindow* window,
|
|||||||
{
|
{
|
||||||
// Get pixel format attributes through "modern" extension
|
// Get pixel format attributes through "modern" extension
|
||||||
|
|
||||||
|
int acceleration;
|
||||||
|
|
||||||
if (!wglGetPixelFormatAttribivARB(window->context.wgl.dc,
|
if (!wglGetPixelFormatAttribivARB(window->context.wgl.dc,
|
||||||
pixelFormat, 0,
|
pixelFormat, 0,
|
||||||
attribCount,
|
attribCount,
|
||||||
@ -166,12 +168,11 @@ static int choosePixelFormatWGL(_GLFWwindow* window,
|
|||||||
if (FIND_ATTRIB_VALUE(WGL_PIXEL_TYPE_ARB) != WGL_TYPE_RGBA_ARB)
|
if (FIND_ATTRIB_VALUE(WGL_PIXEL_TYPE_ARB) != WGL_TYPE_RGBA_ARB)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (FIND_ATTRIB_VALUE(WGL_ACCELERATION_ARB) == WGL_NO_ACCELERATION_ARB)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (FIND_ATTRIB_VALUE(WGL_DOUBLE_BUFFER_ARB) != fbconfig->doublebuffer)
|
if (FIND_ATTRIB_VALUE(WGL_DOUBLE_BUFFER_ARB) != fbconfig->doublebuffer)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
acceleration = FIND_ATTRIB_VALUE(WGL_ACCELERATION_ARB);
|
||||||
|
|
||||||
u->redBits = FIND_ATTRIB_VALUE(WGL_RED_BITS_ARB);
|
u->redBits = FIND_ATTRIB_VALUE(WGL_RED_BITS_ARB);
|
||||||
u->greenBits = FIND_ATTRIB_VALUE(WGL_GREEN_BITS_ARB);
|
u->greenBits = FIND_ATTRIB_VALUE(WGL_GREEN_BITS_ARB);
|
||||||
u->blueBits = FIND_ATTRIB_VALUE(WGL_BLUE_BITS_ARB);
|
u->blueBits = FIND_ATTRIB_VALUE(WGL_BLUE_BITS_ARB);
|
||||||
@ -210,6 +211,10 @@ static int choosePixelFormatWGL(_GLFWwindow* window,
|
|||||||
u->sRGB = GLFW_TRUE;
|
u->sRGB = GLFW_TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
u->acceleration =
|
||||||
|
acceleration == WGL_GENERIC_ACCELERATION_ARB ||
|
||||||
|
acceleration == WGL_FULL_ACCELERATION_ARB;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -235,12 +240,6 @@ static int choosePixelFormatWGL(_GLFWwindow* window,
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(pfd.dwFlags & PFD_GENERIC_ACCELERATED) &&
|
|
||||||
(pfd.dwFlags & PFD_GENERIC_FORMAT))
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pfd.iPixelType != PFD_TYPE_RGBA)
|
if (pfd.iPixelType != PFD_TYPE_RGBA)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@ -264,6 +263,10 @@ static int choosePixelFormatWGL(_GLFWwindow* window,
|
|||||||
|
|
||||||
if (pfd.dwFlags & PFD_STEREO)
|
if (pfd.dwFlags & PFD_STEREO)
|
||||||
u->stereo = GLFW_TRUE;
|
u->stereo = GLFW_TRUE;
|
||||||
|
|
||||||
|
u->acceleration =
|
||||||
|
(pfd.dwFlags & PFD_GENERIC_ACCELERATED) ||
|
||||||
|
!(pfd.dwFlags & PFD_GENERIC_FORMAT);
|
||||||
}
|
}
|
||||||
|
|
||||||
u->handle = pixelFormat;
|
u->handle = pixelFormat;
|
||||||
@ -437,8 +440,6 @@ GLFWbool _glfwInitWGL(void)
|
|||||||
|
|
||||||
// NOTE: A dummy context has to be created for opengl32.dll to load the
|
// NOTE: A dummy context has to be created for opengl32.dll to load the
|
||||||
// OpenGL ICD, from which we can then query WGL extensions
|
// OpenGL ICD, from which we can then query WGL extensions
|
||||||
// NOTE: This code will accept the Microsoft GDI ICD; accelerated context
|
|
||||||
// creation failure occurs during manual pixel format enumeration
|
|
||||||
|
|
||||||
dc = GetDC(_glfw.win32.helperWindowHandle);
|
dc = GetDC(_glfw.win32.helperWindowHandle);
|
||||||
|
|
||||||
|
|||||||
@ -226,6 +226,8 @@ typedef enum
|
|||||||
#define WGL_TYPE_RGBA_ARB 0x202b
|
#define WGL_TYPE_RGBA_ARB 0x202b
|
||||||
#define WGL_ACCELERATION_ARB 0x2003
|
#define WGL_ACCELERATION_ARB 0x2003
|
||||||
#define WGL_NO_ACCELERATION_ARB 0x2025
|
#define WGL_NO_ACCELERATION_ARB 0x2025
|
||||||
|
#define WGL_GENERIC_ACCELERATION_ARB 0x2026
|
||||||
|
#define WGL_FULL_ACCELERATION_ARB 0x2027
|
||||||
#define WGL_RED_BITS_ARB 0x2015
|
#define WGL_RED_BITS_ARB 0x2015
|
||||||
#define WGL_RED_SHIFT_ARB 0x2016
|
#define WGL_RED_SHIFT_ARB 0x2016
|
||||||
#define WGL_GREEN_BITS_ARB 0x2017
|
#define WGL_GREEN_BITS_ARB 0x2017
|
||||||
|
|||||||
@ -235,6 +235,7 @@ GLFWAPI GLFWwindow* glfwCreateWindow(int width, int height,
|
|||||||
window->cursorMode = GLFW_CURSOR_NORMAL;
|
window->cursorMode = GLFW_CURSOR_NORMAL;
|
||||||
|
|
||||||
window->doublebuffer = fbconfig.doublebuffer;
|
window->doublebuffer = fbconfig.doublebuffer;
|
||||||
|
window->acceleration = fbconfig.acceleration;
|
||||||
|
|
||||||
window->minwidth = GLFW_DONT_CARE;
|
window->minwidth = GLFW_DONT_CARE;
|
||||||
window->minheight = GLFW_DONT_CARE;
|
window->minheight = GLFW_DONT_CARE;
|
||||||
@ -287,6 +288,7 @@ void glfwDefaultWindowHints(void)
|
|||||||
_glfw.hints.framebuffer.depthBits = 24;
|
_glfw.hints.framebuffer.depthBits = 24;
|
||||||
_glfw.hints.framebuffer.stencilBits = 8;
|
_glfw.hints.framebuffer.stencilBits = 8;
|
||||||
_glfw.hints.framebuffer.doublebuffer = GLFW_TRUE;
|
_glfw.hints.framebuffer.doublebuffer = GLFW_TRUE;
|
||||||
|
_glfw.hints.framebuffer.acceleration = GLFW_TRUE;
|
||||||
|
|
||||||
// The default is to select the highest available refresh rate
|
// The default is to select the highest available refresh rate
|
||||||
_glfw.hints.refreshRate = GLFW_DONT_CARE;
|
_glfw.hints.refreshRate = GLFW_DONT_CARE;
|
||||||
@ -346,6 +348,9 @@ GLFWAPI void glfwWindowHint(int hint, int value)
|
|||||||
case GLFW_SRGB_CAPABLE:
|
case GLFW_SRGB_CAPABLE:
|
||||||
_glfw.hints.framebuffer.sRGB = value ? GLFW_TRUE : GLFW_FALSE;
|
_glfw.hints.framebuffer.sRGB = value ? GLFW_TRUE : GLFW_FALSE;
|
||||||
return;
|
return;
|
||||||
|
case GLFW_ACCELERATION:
|
||||||
|
_glfw.hints.framebuffer.acceleration = value ? GLFW_TRUE : GLFW_FALSE;
|
||||||
|
return;
|
||||||
case GLFW_RESIZABLE:
|
case GLFW_RESIZABLE:
|
||||||
_glfw.hints.window.resizable = value ? GLFW_TRUE : GLFW_FALSE;
|
_glfw.hints.window.resizable = value ? GLFW_TRUE : GLFW_FALSE;
|
||||||
return;
|
return;
|
||||||
@ -912,6 +917,8 @@ GLFWAPI int glfwGetWindowAttrib(GLFWwindow* handle, int attrib)
|
|||||||
return window->autoIconify;
|
return window->autoIconify;
|
||||||
case GLFW_DOUBLEBUFFER:
|
case GLFW_DOUBLEBUFFER:
|
||||||
return window->doublebuffer;
|
return window->doublebuffer;
|
||||||
|
case GLFW_ACCELERATION:
|
||||||
|
return window->acceleration;
|
||||||
case GLFW_CLIENT_API:
|
case GLFW_CLIENT_API:
|
||||||
return window->context.client;
|
return window->context.client;
|
||||||
case GLFW_CONTEXT_CREATION_API:
|
case GLFW_CONTEXT_CREATION_API:
|
||||||
|
|||||||
@ -1267,17 +1267,21 @@ static void handleEvents(double* timeout)
|
|||||||
|
|
||||||
if (read(_glfw.wl.keyRepeatTimerfd, &repeats, sizeof(repeats)) == 8)
|
if (read(_glfw.wl.keyRepeatTimerfd, &repeats, sizeof(repeats)) == 8)
|
||||||
{
|
{
|
||||||
for (uint64_t i = 0; i < repeats; i++)
|
if(_glfw.wl.keyboardFocus)
|
||||||
{
|
{
|
||||||
_glfwInputKey(_glfw.wl.keyboardFocus,
|
for (uint64_t i = 0; i < repeats; i++)
|
||||||
translateKey(_glfw.wl.keyRepeatScancode),
|
{
|
||||||
_glfw.wl.keyRepeatScancode,
|
_glfwInputKey(_glfw.wl.keyboardFocus,
|
||||||
GLFW_PRESS,
|
translateKey(_glfw.wl.keyRepeatScancode),
|
||||||
_glfw.wl.xkb.modifiers);
|
_glfw.wl.keyRepeatScancode,
|
||||||
inputText(_glfw.wl.keyboardFocus, _glfw.wl.keyRepeatScancode);
|
GLFW_PRESS,
|
||||||
|
_glfw.wl.xkb.modifiers);
|
||||||
|
inputText(_glfw.wl.keyboardFocus, _glfw.wl.keyRepeatScancode);
|
||||||
|
}
|
||||||
|
|
||||||
|
event = GLFW_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
event = GLFW_TRUE;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -383,6 +383,7 @@ int main(int argc, char** argv)
|
|||||||
int angle_type = GLFW_ANGLE_PLATFORM_TYPE_NONE;
|
int angle_type = GLFW_ANGLE_PLATFORM_TYPE_NONE;
|
||||||
bool cocoa_graphics_switching = false;
|
bool cocoa_graphics_switching = false;
|
||||||
bool disable_xcb_surface = false;
|
bool disable_xcb_surface = false;
|
||||||
|
bool acceleration = true;
|
||||||
|
|
||||||
enum { PLATFORM, CLIENT, CONTEXT, BEHAVIOR, DEBUG_CONTEXT, FORWARD, HELP,
|
enum { PLATFORM, CLIENT, CONTEXT, BEHAVIOR, DEBUG_CONTEXT, FORWARD, HELP,
|
||||||
EXTENSIONS, LAYERS,
|
EXTENSIONS, LAYERS,
|
||||||
@ -390,7 +391,7 @@ int main(int argc, char** argv)
|
|||||||
REDBITS, GREENBITS, BLUEBITS, ALPHABITS, DEPTHBITS, STENCILBITS,
|
REDBITS, GREENBITS, BLUEBITS, ALPHABITS, DEPTHBITS, STENCILBITS,
|
||||||
ACCUMREDBITS, ACCUMGREENBITS, ACCUMBLUEBITS, ACCUMALPHABITS,
|
ACCUMREDBITS, ACCUMGREENBITS, ACCUMBLUEBITS, ACCUMALPHABITS,
|
||||||
AUXBUFFERS, SAMPLES, STEREO, SRGB, SINGLEBUFFER, NOERROR_SRSLY,
|
AUXBUFFERS, SAMPLES, STEREO, SRGB, SINGLEBUFFER, NOERROR_SRSLY,
|
||||||
ANGLE_TYPE, GRAPHICS_SWITCHING, XCB_SURFACE };
|
ANGLE_TYPE, GRAPHICS_SWITCHING, XCB_SURFACE, NO_ACCELERATION };
|
||||||
const struct option options[] =
|
const struct option options[] =
|
||||||
{
|
{
|
||||||
{ "platform", 1, NULL, PLATFORM },
|
{ "platform", 1, NULL, PLATFORM },
|
||||||
@ -426,6 +427,7 @@ int main(int argc, char** argv)
|
|||||||
{ "angle-type", 1, NULL, ANGLE_TYPE },
|
{ "angle-type", 1, NULL, ANGLE_TYPE },
|
||||||
{ "graphics-switching", 0, NULL, GRAPHICS_SWITCHING },
|
{ "graphics-switching", 0, NULL, GRAPHICS_SWITCHING },
|
||||||
{ "vk-xcb-surface", 0, NULL, XCB_SURFACE },
|
{ "vk-xcb-surface", 0, NULL, XCB_SURFACE },
|
||||||
|
{ "no-acceleration", 0, NULL, NO_ACCELERATION },
|
||||||
{ NULL, 0, NULL, 0 }
|
{ NULL, 0, NULL, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -654,6 +656,9 @@ int main(int argc, char** argv)
|
|||||||
case XCB_SURFACE:
|
case XCB_SURFACE:
|
||||||
disable_xcb_surface = true;
|
disable_xcb_surface = true;
|
||||||
break;
|
break;
|
||||||
|
case NO_ACCELERATION:
|
||||||
|
acceleration = false;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
usage();
|
usage();
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
@ -708,6 +713,7 @@ int main(int argc, char** argv)
|
|||||||
glfwWindowHint(GLFW_STEREO, fb_stereo);
|
glfwWindowHint(GLFW_STEREO, fb_stereo);
|
||||||
glfwWindowHint(GLFW_SRGB_CAPABLE, fb_srgb);
|
glfwWindowHint(GLFW_SRGB_CAPABLE, fb_srgb);
|
||||||
glfwWindowHint(GLFW_DOUBLEBUFFER, fb_doublebuffer);
|
glfwWindowHint(GLFW_DOUBLEBUFFER, fb_doublebuffer);
|
||||||
|
glfwWindowHint(GLFW_ACCELERATION, acceleration);
|
||||||
|
|
||||||
glfwWindowHint(GLFW_COCOA_GRAPHICS_SWITCHING, cocoa_graphics_switching);
|
glfwWindowHint(GLFW_COCOA_GRAPHICS_SWITCHING, cocoa_graphics_switching);
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user