Get rid of GLFW_(TRUE|FALSE)
This commit is contained in:
parent
fe62700825
commit
47acc9ff2f
@ -214,7 +214,7 @@ static bool updateUnicodeDataNS(void)
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||||
"Cocoa: Failed to retrieve keyboard layout input source");
|
"Cocoa: Failed to retrieve keyboard layout input source");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
_glfw.ns.unicodeData =
|
_glfw.ns.unicodeData =
|
||||||
@ -224,10 +224,10 @@ static bool updateUnicodeDataNS(void)
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||||
"Cocoa: Failed to retrieve keyboard layout Unicode data");
|
"Cocoa: Failed to retrieve keyboard layout Unicode data");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Load HIToolbox.framework and the TIS symbols we need from it
|
// Load HIToolbox.framework and the TIS symbols we need from it
|
||||||
@ -241,7 +241,7 @@ static bool initializeTIS(void)
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||||
"Cocoa: Failed to load HIToolbox.framework");
|
"Cocoa: Failed to load HIToolbox.framework");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
CFStringRef* kPropertyUnicodeKeyLayoutData =
|
CFStringRef* kPropertyUnicodeKeyLayoutData =
|
||||||
@ -264,7 +264,7 @@ static bool initializeTIS(void)
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||||
"Cocoa: Failed to load TIS API symbols");
|
"Cocoa: Failed to load TIS API symbols");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
_glfw.ns.tis.kPropertyUnicodeKeyLayoutData =
|
_glfw.ns.tis.kPropertyUnicodeKeyLayoutData =
|
||||||
@ -387,12 +387,12 @@ int _glfwPlatformInit(void)
|
|||||||
|
|
||||||
_glfw.ns.eventSource = CGEventSourceCreate(kCGEventSourceStateHIDSystemState);
|
_glfw.ns.eventSource = CGEventSourceCreate(kCGEventSourceStateHIDSystemState);
|
||||||
if (!_glfw.ns.eventSource)
|
if (!_glfw.ns.eventSource)
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
|
|
||||||
CGEventSourceSetLocalEventsSuppressionInterval(_glfw.ns.eventSource, 0.0);
|
CGEventSourceSetLocalEventsSuppressionInterval(_glfw.ns.eventSource, 0.0);
|
||||||
|
|
||||||
if (!initializeTIS())
|
if (!initializeTIS())
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
|
|
||||||
_glfw.ns.displayLinks.lock = [NSLock new];
|
_glfw.ns.displayLinks.lock = [NSLock new];
|
||||||
_glfwInitTimerNS();
|
_glfwInitTimerNS();
|
||||||
@ -400,7 +400,7 @@ int _glfwPlatformInit(void)
|
|||||||
|
|
||||||
_glfwPollMonitorsNS();
|
_glfwPollMonitorsNS();
|
||||||
}
|
}
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void _glfwPlatformTerminate(void)
|
void _glfwPlatformTerminate(void)
|
||||||
|
|||||||
@ -121,11 +121,11 @@ static bool modeIsGood(CGDisplayModeRef mode)
|
|||||||
uint32_t flags = CGDisplayModeGetIOFlags(mode);
|
uint32_t flags = CGDisplayModeGetIOFlags(mode);
|
||||||
|
|
||||||
if (!(flags & kDisplayModeValidFlag) || !(flags & kDisplayModeSafeFlag))
|
if (!(flags & kDisplayModeValidFlag) || !(flags & kDisplayModeSafeFlag))
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
if (flags & kDisplayModeInterlacedFlag)
|
if (flags & kDisplayModeInterlacedFlag)
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
if (flags & kDisplayModeStretchedFlag)
|
if (flags & kDisplayModeStretchedFlag)
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
|
|
||||||
#if MAC_OS_X_VERSION_MAX_ALLOWED <= 101100
|
#if MAC_OS_X_VERSION_MAX_ALLOWED <= 101100
|
||||||
CFStringRef format = CGDisplayModeCopyPixelEncoding(mode);
|
CFStringRef format = CGDisplayModeCopyPixelEncoding(mode);
|
||||||
@ -133,12 +133,12 @@ static bool modeIsGood(CGDisplayModeRef mode)
|
|||||||
CFStringCompare(format, CFSTR(IO32BitDirectPixels), 0))
|
CFStringCompare(format, CFSTR(IO32BitDirectPixels), 0))
|
||||||
{
|
{
|
||||||
CFRelease(format);
|
CFRelease(format);
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
CFRelease(format);
|
CFRelease(format);
|
||||||
#endif /* MAC_OS_X_VERSION_MAX_ALLOWED */
|
#endif /* MAC_OS_X_VERSION_MAX_ALLOWED */
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Convert Core Graphics display mode to GLFW video mode
|
// Convert Core Graphics display mode to GLFW video mode
|
||||||
@ -218,7 +218,7 @@ static void endFadeReservation(CGDisplayFadeReservationToken token)
|
|||||||
bool refreshMonitorScreen(_GLFWmonitor* monitor)
|
bool refreshMonitorScreen(_GLFWmonitor* monitor)
|
||||||
{
|
{
|
||||||
if (monitor->ns.screen)
|
if (monitor->ns.screen)
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
|
|
||||||
for (NSScreen* screen in [NSScreen screens])
|
for (NSScreen* screen in [NSScreen screens])
|
||||||
{
|
{
|
||||||
@ -230,12 +230,12 @@ bool refreshMonitorScreen(_GLFWmonitor* monitor)
|
|||||||
if (monitor->ns.unitNumber == CGDisplayUnitNumber([displayID unsignedIntValue]))
|
if (monitor->ns.unitNumber == CGDisplayUnitNumber([displayID unsignedIntValue]))
|
||||||
{
|
{
|
||||||
monitor->ns.screen = screen;
|
monitor->ns.screen = screen;
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR, "Cocoa: Failed to find a screen for monitor");
|
_glfwInputError(GLFW_PLATFORM_ERROR, "Cocoa: Failed to find a screen for monitor");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
@ -247,7 +247,7 @@ void _glfwClearDisplayLinks() {
|
|||||||
for (size_t i = 0; i < _glfw.ns.displayLinks.count; i++) {
|
for (size_t i = 0; i < _glfw.ns.displayLinks.count; i++) {
|
||||||
if (_glfw.ns.displayLinks.entries[i].displayLinkStarted) {
|
if (_glfw.ns.displayLinks.entries[i].displayLinkStarted) {
|
||||||
CVDisplayLinkStop(_glfw.ns.displayLinks.entries[i].displayLink);
|
CVDisplayLinkStop(_glfw.ns.displayLinks.entries[i].displayLink);
|
||||||
_glfw.ns.displayLinks.entries[i].displayLinkStarted = GLFW_FALSE;
|
_glfw.ns.displayLinks.entries[i].displayLinkStarted = false;
|
||||||
}
|
}
|
||||||
if (_glfw.ns.displayLinks.entries[i].displayLink) {
|
if (_glfw.ns.displayLinks.entries[i].displayLink) {
|
||||||
CVDisplayLinkRelease(_glfw.ns.displayLinks.entries[i].displayLink);
|
CVDisplayLinkRelease(_glfw.ns.displayLinks.entries[i].displayLink);
|
||||||
@ -265,12 +265,12 @@ static CVReturn displayLinkCallback(
|
|||||||
{
|
{
|
||||||
CGDirectDisplayID displayID = (CGDirectDisplayID)userInfo;
|
CGDirectDisplayID displayID = (CGDirectDisplayID)userInfo;
|
||||||
[_glfw.ns.displayLinks.lock lock];
|
[_glfw.ns.displayLinks.lock lock];
|
||||||
bool notify = GLFW_FALSE;
|
bool notify = false;
|
||||||
for (size_t i = 0; i < _glfw.ns.displayLinks.count; i++) {
|
for (size_t i = 0; i < _glfw.ns.displayLinks.count; i++) {
|
||||||
if (_glfw.ns.displayLinks.entries[i].displayID == displayID) {
|
if (_glfw.ns.displayLinks.entries[i].displayID == displayID) {
|
||||||
if (_glfw.ns.displayLinks.entries[i].renderFrameRequested) {
|
if (_glfw.ns.displayLinks.entries[i].renderFrameRequested) {
|
||||||
notify = GLFW_TRUE;
|
notify = true;
|
||||||
_glfw.ns.displayLinks.entries[i].renderFrameRequested = GLFW_FALSE;
|
_glfw.ns.displayLinks.entries[i].renderFrameRequested = false;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -564,7 +564,7 @@ bool _glfwPlatformGetGammaRamp(_GLFWmonitor* monitor, GLFWgammaramp* ramp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
free(values);
|
free(values);
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void _glfwPlatformSetGammaRamp(_GLFWmonitor* monitor, const GLFWgammaramp* ramp)
|
void _glfwPlatformSetGammaRamp(_GLFWmonitor* monitor, const GLFWgammaramp* ramp)
|
||||||
|
|||||||
@ -66,21 +66,21 @@ CGDirectDisplayID displayIDForWindow(_GLFWwindow *w) {
|
|||||||
static inline void
|
static inline void
|
||||||
requestRenderFrame(_GLFWwindow *w, GLFWcocoarenderframefun callback) {
|
requestRenderFrame(_GLFWwindow *w, GLFWcocoarenderframefun callback) {
|
||||||
if (!callback) {
|
if (!callback) {
|
||||||
w->ns.renderFrameRequested = GLFW_FALSE;
|
w->ns.renderFrameRequested = false;
|
||||||
w->ns.renderFrameCallback = NULL;
|
w->ns.renderFrameCallback = NULL;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
w->ns.renderFrameCallback = callback;
|
w->ns.renderFrameCallback = callback;
|
||||||
w->ns.renderFrameRequested = GLFW_TRUE;
|
w->ns.renderFrameRequested = true;
|
||||||
CGDirectDisplayID displayID = displayIDForWindow(w);
|
CGDirectDisplayID displayID = displayIDForWindow(w);
|
||||||
[_glfw.ns.displayLinks.lock lock];
|
[_glfw.ns.displayLinks.lock lock];
|
||||||
for (size_t i = 0; i < _glfw.ns.displayLinks.count; i++) {
|
for (size_t i = 0; i < _glfw.ns.displayLinks.count; i++) {
|
||||||
_GLFWDisplayLinkNS *dl = &_glfw.ns.displayLinks.entries[i];
|
_GLFWDisplayLinkNS *dl = &_glfw.ns.displayLinks.entries[i];
|
||||||
if (dl->displayID == displayID) {
|
if (dl->displayID == displayID) {
|
||||||
dl->renderFrameRequested = GLFW_TRUE;
|
dl->renderFrameRequested = true;
|
||||||
if (!dl->displayLinkStarted) {
|
if (!dl->displayLinkStarted) {
|
||||||
CVDisplayLinkStart(dl->displayLink);
|
CVDisplayLinkStart(dl->displayLink);
|
||||||
dl->displayLinkStarted = GLFW_TRUE;
|
dl->displayLinkStarted = true;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -113,7 +113,7 @@ static void hideCursor(_GLFWwindow* window)
|
|||||||
if (!_glfw.ns.cursorHidden)
|
if (!_glfw.ns.cursorHidden)
|
||||||
{
|
{
|
||||||
[NSCursor hide];
|
[NSCursor hide];
|
||||||
_glfw.ns.cursorHidden = GLFW_TRUE;
|
_glfw.ns.cursorHidden = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -124,7 +124,7 @@ static void showCursor(_GLFWwindow* window)
|
|||||||
if (_glfw.ns.cursorHidden)
|
if (_glfw.ns.cursorHidden)
|
||||||
{
|
{
|
||||||
[NSCursor unhide];
|
[NSCursor unhide];
|
||||||
_glfw.ns.cursorHidden = GLFW_FALSE;
|
_glfw.ns.cursorHidden = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -462,7 +462,7 @@ static const NSRange kEmptyRange = { NSNotFound, 0 };
|
|||||||
if (window->monitor)
|
if (window->monitor)
|
||||||
releaseMonitor(window);
|
releaseMonitor(window);
|
||||||
|
|
||||||
_glfwInputWindowIconify(window, GLFW_TRUE);
|
_glfwInputWindowIconify(window, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)windowDidDeminiaturize:(NSNotification *)notification
|
- (void)windowDidDeminiaturize:(NSNotification *)notification
|
||||||
@ -470,7 +470,7 @@ static const NSRange kEmptyRange = { NSNotFound, 0 };
|
|||||||
if (window->monitor)
|
if (window->monitor)
|
||||||
acquireMonitor(window);
|
acquireMonitor(window);
|
||||||
|
|
||||||
_glfwInputWindowIconify(window, GLFW_FALSE);
|
_glfwInputWindowIconify(window, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)windowDidBecomeKey:(NSNotification *)notification
|
- (void)windowDidBecomeKey:(NSNotification *)notification
|
||||||
@ -478,7 +478,7 @@ static const NSRange kEmptyRange = { NSNotFound, 0 };
|
|||||||
if (_glfw.ns.disabledCursorWindow == window)
|
if (_glfw.ns.disabledCursorWindow == window)
|
||||||
_glfwCenterCursorInContentArea(window);
|
_glfwCenterCursorInContentArea(window);
|
||||||
|
|
||||||
_glfwInputWindowFocus(window, GLFW_TRUE);
|
_glfwInputWindowFocus(window, true);
|
||||||
updateCursorMode(window);
|
updateCursorMode(window);
|
||||||
if (window->cursorMode == GLFW_CURSOR_HIDDEN) hideCursor(window);
|
if (window->cursorMode == GLFW_CURSOR_HIDDEN) hideCursor(window);
|
||||||
if (_glfw.ns.disabledCursorWindow != window && cursorInContentArea(window))
|
if (_glfw.ns.disabledCursorWindow != window && cursorInContentArea(window))
|
||||||
@ -495,7 +495,7 @@ static const NSRange kEmptyRange = { NSNotFound, 0 };
|
|||||||
_glfwPlatformIconifyWindow(window);
|
_glfwPlatformIconifyWindow(window);
|
||||||
showCursor(window);
|
showCursor(window);
|
||||||
|
|
||||||
_glfwInputWindowFocus(window, GLFW_FALSE);
|
_glfwInputWindowFocus(window, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)windowDidChangeScreen:(NSNotification *)notification
|
- (void)windowDidChangeScreen:(NSNotification *)notification
|
||||||
@ -766,12 +766,12 @@ static GLFWapplicationshouldhandlereopenfun handle_reopen_callback = NULL;
|
|||||||
|
|
||||||
- (void)mouseExited:(NSEvent *)event
|
- (void)mouseExited:(NSEvent *)event
|
||||||
{
|
{
|
||||||
_glfwInputCursorEnter(window, GLFW_FALSE);
|
_glfwInputCursorEnter(window, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)mouseEntered:(NSEvent *)event
|
- (void)mouseEntered:(NSEvent *)event
|
||||||
{
|
{
|
||||||
_glfwInputCursorEnter(window, GLFW_TRUE);
|
_glfwInputCursorEnter(window, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)viewDidChangeBackingProperties
|
- (void)viewDidChangeBackingProperties
|
||||||
@ -870,7 +870,7 @@ is_ascii_control_char(char x) {
|
|||||||
const unsigned int scancode = [event keyCode];
|
const unsigned int scancode = [event keyCode];
|
||||||
const NSUInteger flags = [event modifierFlags];
|
const NSUInteger flags = [event modifierFlags];
|
||||||
const int mods = translateFlags(flags);
|
const int mods = translateFlags(flags);
|
||||||
const int key = translateKey(scancode, GLFW_TRUE);
|
const int key = translateKey(scancode, true);
|
||||||
const bool process_text = !window->ns.textInputFilterCallback || window->ns.textInputFilterCallback(key, mods, scancode, flags) != 1;
|
const bool process_text = !window->ns.textInputFilterCallback || window->ns.textInputFilterCallback(key, mods, scancode, flags) != 1;
|
||||||
const bool previous_has_marked_text = [self hasMarkedText];
|
const bool previous_has_marked_text = [self hasMarkedText];
|
||||||
[self unmarkText];
|
[self unmarkText];
|
||||||
@ -949,7 +949,7 @@ is_ascii_control_char(char x) {
|
|||||||
int action;
|
int action;
|
||||||
const unsigned int modifierFlags =
|
const unsigned int modifierFlags =
|
||||||
[event modifierFlags] & NSEventModifierFlagDeviceIndependentFlagsMask;
|
[event modifierFlags] & NSEventModifierFlagDeviceIndependentFlagsMask;
|
||||||
const int key = translateKey([event keyCode], GLFW_FALSE);
|
const int key = translateKey([event keyCode], false);
|
||||||
const int mods = translateFlags(modifierFlags);
|
const int mods = translateFlags(modifierFlags);
|
||||||
const NSUInteger keyFlag = translateKeyToModifierFlag(key);
|
const NSUInteger keyFlag = translateKeyToModifierFlag(key);
|
||||||
|
|
||||||
@ -968,7 +968,7 @@ is_ascii_control_char(char x) {
|
|||||||
|
|
||||||
- (void)keyUp:(NSEvent *)event
|
- (void)keyUp:(NSEvent *)event
|
||||||
{
|
{
|
||||||
const int key = translateKey([event keyCode], GLFW_TRUE);
|
const int key = translateKey([event keyCode], true);
|
||||||
const int mods = translateFlags([event modifierFlags]);
|
const int mods = translateFlags([event modifierFlags]);
|
||||||
_glfwInputKeyboard(window, key, [event keyCode], GLFW_RELEASE, mods, "", 0);
|
_glfwInputKeyboard(window, key, [event keyCode], GLFW_RELEASE, mods, "", 0);
|
||||||
}
|
}
|
||||||
@ -1288,7 +1288,7 @@ static void createMenuBar(void)
|
|||||||
static bool initializeAppKit(void)
|
static bool initializeAppKit(void)
|
||||||
{
|
{
|
||||||
if (_glfw.ns.delegate)
|
if (_glfw.ns.delegate)
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
|
|
||||||
// There can only be one application delegate, but we allocate it the
|
// There can only be one application delegate, but we allocate it the
|
||||||
// first time a window is created to keep all window code in this file
|
// first time a window is created to keep all window code in this file
|
||||||
@ -1297,7 +1297,7 @@ static bool initializeAppKit(void)
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||||
"Cocoa: Failed to create application delegate");
|
"Cocoa: Failed to create application delegate");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
[NSApp setDelegate:_glfw.ns.delegate];
|
[NSApp setDelegate:_glfw.ns.delegate];
|
||||||
|
|
||||||
@ -1324,7 +1324,7 @@ static bool initializeAppKit(void)
|
|||||||
|
|
||||||
[[NSUserDefaults standardUserDefaults] registerDefaults:defaults];
|
[[NSUserDefaults standardUserDefaults] registerDefaults:defaults];
|
||||||
|
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create the Cocoa window
|
// Create the Cocoa window
|
||||||
@ -1338,7 +1338,7 @@ static bool createNativeWindow(_GLFWwindow* window,
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||||
"Cocoa: Failed to create window delegate");
|
"Cocoa: Failed to create window delegate");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
NSRect contentRect;
|
NSRect contentRect;
|
||||||
@ -1365,7 +1365,7 @@ static bool createNativeWindow(_GLFWwindow* window,
|
|||||||
if (window->ns.object == nil)
|
if (window->ns.object == nil)
|
||||||
{
|
{
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR, "Cocoa: Failed to create window");
|
_glfwInputError(GLFW_PLATFORM_ERROR, "Cocoa: Failed to create window");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (window->monitor)
|
if (window->monitor)
|
||||||
@ -1416,7 +1416,7 @@ static bool createNativeWindow(_GLFWwindow* window,
|
|||||||
_glfwPlatformGetWindowSize(window, &window->ns.width, &window->ns.height);
|
_glfwPlatformGetWindowSize(window, &window->ns.width, &window->ns.height);
|
||||||
_glfwPlatformGetFramebufferSize(window, &window->ns.fbWidth, &window->ns.fbHeight);
|
_glfwPlatformGetFramebufferSize(window, &window->ns.fbWidth, &window->ns.fbHeight);
|
||||||
|
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1431,33 +1431,33 @@ int _glfwPlatformCreateWindow(_GLFWwindow* window,
|
|||||||
{
|
{
|
||||||
window->ns.deadKeyState = 0;
|
window->ns.deadKeyState = 0;
|
||||||
if (!initializeAppKit())
|
if (!initializeAppKit())
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
|
|
||||||
if (!createNativeWindow(window, wndconfig, fbconfig))
|
if (!createNativeWindow(window, wndconfig, fbconfig))
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
|
|
||||||
if (ctxconfig->client != GLFW_NO_API)
|
if (ctxconfig->client != GLFW_NO_API)
|
||||||
{
|
{
|
||||||
if (ctxconfig->source == GLFW_NATIVE_CONTEXT_API)
|
if (ctxconfig->source == GLFW_NATIVE_CONTEXT_API)
|
||||||
{
|
{
|
||||||
if (!_glfwInitNSGL())
|
if (!_glfwInitNSGL())
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
if (!_glfwCreateContextNSGL(window, ctxconfig, fbconfig))
|
if (!_glfwCreateContextNSGL(window, ctxconfig, fbconfig))
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
else if (ctxconfig->source == GLFW_EGL_CONTEXT_API)
|
else if (ctxconfig->source == GLFW_EGL_CONTEXT_API)
|
||||||
{
|
{
|
||||||
if (!_glfwInitEGL())
|
if (!_glfwInitEGL())
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
if (!_glfwCreateContextEGL(window, ctxconfig, fbconfig))
|
if (!_glfwCreateContextEGL(window, ctxconfig, fbconfig))
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
else if (ctxconfig->source == GLFW_OSMESA_CONTEXT_API)
|
else if (ctxconfig->source == GLFW_OSMESA_CONTEXT_API)
|
||||||
{
|
{
|
||||||
if (!_glfwInitOSMesa())
|
if (!_glfwInitOSMesa())
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
if (!_glfwCreateContextOSMesa(window, ctxconfig, fbconfig))
|
if (!_glfwCreateContextOSMesa(window, ctxconfig, fbconfig))
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1468,7 +1468,7 @@ int _glfwPlatformCreateWindow(_GLFWwindow* window,
|
|||||||
acquireMonitor(window);
|
acquireMonitor(window);
|
||||||
}
|
}
|
||||||
|
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void _glfwPlatformDestroyWindow(_GLFWwindow* window)
|
void _glfwPlatformDestroyWindow(_GLFWwindow* window)
|
||||||
@ -1657,7 +1657,7 @@ void _glfwPlatformRequestWindowAttention(_GLFWwindow* window)
|
|||||||
int _glfwPlatformWindowBell(_GLFWwindow* window)
|
int _glfwPlatformWindowBell(_GLFWwindow* window)
|
||||||
{
|
{
|
||||||
NSBeep();
|
NSBeep();
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void _glfwPlatformFocusWindow(_GLFWwindow* window)
|
void _glfwPlatformFocusWindow(_GLFWwindow* window)
|
||||||
@ -1788,7 +1788,7 @@ int _glfwPlatformWindowHovered(_GLFWwindow* window)
|
|||||||
if ([NSWindow windowNumberAtPoint:point belowWindowWithWindowNumber:0] !=
|
if ([NSWindow windowNumberAtPoint:point belowWindowWithWindowNumber:0] !=
|
||||||
[window->ns.object windowNumber])
|
[window->ns.object windowNumber])
|
||||||
{
|
{
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return NSMouseInRect(point,
|
return NSMouseInRect(point,
|
||||||
@ -1834,7 +1834,7 @@ _glfwDispatchRenderFrame(CGDirectDisplayID displayID) {
|
|||||||
_GLFWwindow *w = _glfw.windowListHead;
|
_GLFWwindow *w = _glfw.windowListHead;
|
||||||
while (w) {
|
while (w) {
|
||||||
if (w->ns.renderFrameRequested && displayID == displayIDForWindow(w)) {
|
if (w->ns.renderFrameRequested && displayID == displayIDForWindow(w)) {
|
||||||
w->ns.renderFrameRequested = GLFW_FALSE;
|
w->ns.renderFrameRequested = false;
|
||||||
w->ns.renderFrameCallback((GLFWwindow*)w);
|
w->ns.renderFrameCallback((GLFWwindow*)w);
|
||||||
}
|
}
|
||||||
w = w->next;
|
w = w->next;
|
||||||
@ -1948,7 +1948,7 @@ int _glfwPlatformCreateCursor(_GLFWcursor* cursor,
|
|||||||
|
|
||||||
native = [[NSImage alloc] initWithSize:NSMakeSize(image->width, image->height)];
|
native = [[NSImage alloc] initWithSize:NSMakeSize(image->width, image->height)];
|
||||||
if (native == nil)
|
if (native == nil)
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
|
|
||||||
for (int i = 0; i < count; i++) {
|
for (int i = 0; i < count; i++) {
|
||||||
const GLFWimage *src = image + i;
|
const GLFWimage *src = image + i;
|
||||||
@ -1965,7 +1965,7 @@ int _glfwPlatformCreateCursor(_GLFWcursor* cursor,
|
|||||||
bytesPerRow:src->width * 4
|
bytesPerRow:src->width * 4
|
||||||
bitsPerPixel:32];
|
bitsPerPixel:32];
|
||||||
if (rep == nil)
|
if (rep == nil)
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
|
|
||||||
memcpy([rep bitmapData], src->pixels, src->width * src->height * 4);
|
memcpy([rep bitmapData], src->pixels, src->width * src->height * 4);
|
||||||
[native addRepresentation:rep];
|
[native addRepresentation:rep];
|
||||||
@ -1976,8 +1976,8 @@ int _glfwPlatformCreateCursor(_GLFWcursor* cursor,
|
|||||||
hotSpot:NSMakePoint(xhot, yhot)];
|
hotSpot:NSMakePoint(xhot, yhot)];
|
||||||
[native release];
|
[native release];
|
||||||
if (cursor->ns.object == nil)
|
if (cursor->ns.object == nil)
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
int _glfwPlatformCreateStandardCursor(_GLFWcursor* cursor, GLFWCursorShape shape)
|
int _glfwPlatformCreateStandardCursor(_GLFWcursor* cursor, GLFWCursorShape shape)
|
||||||
@ -1996,7 +1996,7 @@ int _glfwPlatformCreateStandardCursor(_GLFWcursor* cursor, GLFWCursorShape shape
|
|||||||
U(GLFW_SW_RESIZE_CURSOR, _windowResizeNorthEastSouthWestCursor);
|
U(GLFW_SW_RESIZE_CURSOR, _windowResizeNorthEastSouthWestCursor);
|
||||||
U(GLFW_SE_RESIZE_CURSOR, _windowResizeNorthWestSouthEastCursor);
|
U(GLFW_SE_RESIZE_CURSOR, _windowResizeNorthWestSouthEastCursor);
|
||||||
case GLFW_INVALID_CURSOR:
|
case GLFW_INVALID_CURSOR:
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
#undef C
|
#undef C
|
||||||
#undef U
|
#undef U
|
||||||
@ -2005,11 +2005,11 @@ int _glfwPlatformCreateStandardCursor(_GLFWcursor* cursor, GLFWCursorShape shape
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||||
"Cocoa: Failed to retrieve standard cursor");
|
"Cocoa: Failed to retrieve standard cursor");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
[cursor->ns.object retain];
|
[cursor->ns.object retain];
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void _glfwPlatformDestroyCursor(_GLFWcursor* cursor)
|
void _glfwPlatformDestroyCursor(_GLFWcursor* cursor)
|
||||||
@ -2093,7 +2093,7 @@ int _glfwPlatformGetPhysicalDevicePresentationSupport(VkInstance instance,
|
|||||||
VkPhysicalDevice device,
|
VkPhysicalDevice device,
|
||||||
uint32_t queuefamily)
|
uint32_t queuefamily)
|
||||||
{
|
{
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
VkResult _glfwPlatformCreateWindowSurface(VkInstance instance,
|
VkResult _glfwPlatformCreateWindowSurface(VkInstance instance,
|
||||||
|
|||||||
60
glfw/context.c
vendored
60
glfw/context.c
vendored
@ -52,7 +52,7 @@ bool _glfwIsValidContextConfig(const _GLFWctxconfig* ctxconfig)
|
|||||||
ctxconfig->share->context.client == GLFW_NO_API)
|
ctxconfig->share->context.client == GLFW_NO_API)
|
||||||
{
|
{
|
||||||
_glfwInputError(GLFW_NO_WINDOW_CONTEXT, NULL);
|
_glfwInputError(GLFW_NO_WINDOW_CONTEXT, NULL);
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -63,7 +63,7 @@ bool _glfwIsValidContextConfig(const _GLFWctxconfig* ctxconfig)
|
|||||||
_glfwInputError(GLFW_INVALID_ENUM,
|
_glfwInputError(GLFW_INVALID_ENUM,
|
||||||
"Invalid context creation API 0x%08X",
|
"Invalid context creation API 0x%08X",
|
||||||
ctxconfig->source);
|
ctxconfig->source);
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ctxconfig->client != GLFW_NO_API &&
|
if (ctxconfig->client != GLFW_NO_API &&
|
||||||
@ -73,7 +73,7 @@ bool _glfwIsValidContextConfig(const _GLFWctxconfig* ctxconfig)
|
|||||||
_glfwInputError(GLFW_INVALID_ENUM,
|
_glfwInputError(GLFW_INVALID_ENUM,
|
||||||
"Invalid client API 0x%08X",
|
"Invalid client API 0x%08X",
|
||||||
ctxconfig->client);
|
ctxconfig->client);
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ctxconfig->client == GLFW_OPENGL_API)
|
if (ctxconfig->client == GLFW_OPENGL_API)
|
||||||
@ -92,7 +92,7 @@ bool _glfwIsValidContextConfig(const _GLFWctxconfig* ctxconfig)
|
|||||||
_glfwInputError(GLFW_INVALID_VALUE,
|
_glfwInputError(GLFW_INVALID_VALUE,
|
||||||
"Invalid OpenGL version %i.%i",
|
"Invalid OpenGL version %i.%i",
|
||||||
ctxconfig->major, ctxconfig->minor);
|
ctxconfig->major, ctxconfig->minor);
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ctxconfig->profile)
|
if (ctxconfig->profile)
|
||||||
@ -103,7 +103,7 @@ bool _glfwIsValidContextConfig(const _GLFWctxconfig* ctxconfig)
|
|||||||
_glfwInputError(GLFW_INVALID_ENUM,
|
_glfwInputError(GLFW_INVALID_ENUM,
|
||||||
"Invalid OpenGL profile 0x%08X",
|
"Invalid OpenGL profile 0x%08X",
|
||||||
ctxconfig->profile);
|
ctxconfig->profile);
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ctxconfig->major <= 2 ||
|
if (ctxconfig->major <= 2 ||
|
||||||
@ -114,7 +114,7 @@ bool _glfwIsValidContextConfig(const _GLFWctxconfig* ctxconfig)
|
|||||||
|
|
||||||
_glfwInputError(GLFW_INVALID_VALUE,
|
_glfwInputError(GLFW_INVALID_VALUE,
|
||||||
"Context profiles are only defined for OpenGL version 3.2 and above");
|
"Context profiles are only defined for OpenGL version 3.2 and above");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -123,7 +123,7 @@ bool _glfwIsValidContextConfig(const _GLFWctxconfig* ctxconfig)
|
|||||||
// Forward-compatible contexts are only defined for OpenGL version 3.0 and above
|
// Forward-compatible contexts are only defined for OpenGL version 3.0 and above
|
||||||
_glfwInputError(GLFW_INVALID_VALUE,
|
_glfwInputError(GLFW_INVALID_VALUE,
|
||||||
"Forward-compatibility is only defined for OpenGL version 3.0 and above");
|
"Forward-compatibility is only defined for OpenGL version 3.0 and above");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (ctxconfig->client == GLFW_OPENGL_ES_API)
|
else if (ctxconfig->client == GLFW_OPENGL_ES_API)
|
||||||
@ -140,7 +140,7 @@ bool _glfwIsValidContextConfig(const _GLFWctxconfig* ctxconfig)
|
|||||||
_glfwInputError(GLFW_INVALID_VALUE,
|
_glfwInputError(GLFW_INVALID_VALUE,
|
||||||
"Invalid OpenGL ES version %i.%i",
|
"Invalid OpenGL ES version %i.%i",
|
||||||
ctxconfig->major, ctxconfig->minor);
|
ctxconfig->major, ctxconfig->minor);
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -152,7 +152,7 @@ bool _glfwIsValidContextConfig(const _GLFWctxconfig* ctxconfig)
|
|||||||
_glfwInputError(GLFW_INVALID_ENUM,
|
_glfwInputError(GLFW_INVALID_ENUM,
|
||||||
"Invalid context robustness mode 0x%08X",
|
"Invalid context robustness mode 0x%08X",
|
||||||
ctxconfig->robustness);
|
ctxconfig->robustness);
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -164,11 +164,11 @@ bool _glfwIsValidContextConfig(const _GLFWctxconfig* ctxconfig)
|
|||||||
_glfwInputError(GLFW_INVALID_ENUM,
|
_glfwInputError(GLFW_INVALID_ENUM,
|
||||||
"Invalid context release behavior 0x%08X",
|
"Invalid context release behavior 0x%08X",
|
||||||
ctxconfig->release);
|
ctxconfig->release);
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Chooses the framebuffer config that best matches the desired one
|
// Chooses the framebuffer config that best matches the desired one
|
||||||
@ -369,7 +369,7 @@ bool _glfwRefreshContextAttribs(_GLFWwindow* window,
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR, "Entry point retrieval is broken");
|
_glfwInputError(GLFW_PLATFORM_ERROR, "Entry point retrieval is broken");
|
||||||
glfwMakeContextCurrent((GLFWwindow*) previous);
|
glfwMakeContextCurrent((GLFWwindow*) previous);
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
version = (const char*) window->context.GetString(GL_VERSION);
|
version = (const char*) window->context.GetString(GL_VERSION);
|
||||||
@ -387,7 +387,7 @@ bool _glfwRefreshContextAttribs(_GLFWwindow* window,
|
|||||||
}
|
}
|
||||||
|
|
||||||
glfwMakeContextCurrent((GLFWwindow*) previous);
|
glfwMakeContextCurrent((GLFWwindow*) previous);
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; prefixes[i]; i++)
|
for (i = 0; prefixes[i]; i++)
|
||||||
@ -419,7 +419,7 @@ bool _glfwRefreshContextAttribs(_GLFWwindow* window,
|
|||||||
}
|
}
|
||||||
|
|
||||||
glfwMakeContextCurrent((GLFWwindow*) previous);
|
glfwMakeContextCurrent((GLFWwindow*) previous);
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (window->context.major < ctxconfig->major ||
|
if (window->context.major < ctxconfig->major ||
|
||||||
@ -449,7 +449,7 @@ bool _glfwRefreshContextAttribs(_GLFWwindow* window,
|
|||||||
}
|
}
|
||||||
|
|
||||||
glfwMakeContextCurrent((GLFWwindow*) previous);
|
glfwMakeContextCurrent((GLFWwindow*) previous);
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (window->context.major >= 3)
|
if (window->context.major >= 3)
|
||||||
@ -465,7 +465,7 @@ bool _glfwRefreshContextAttribs(_GLFWwindow* window,
|
|||||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||||
"Entry point retrieval is broken");
|
"Entry point retrieval is broken");
|
||||||
glfwMakeContextCurrent((GLFWwindow*) previous);
|
glfwMakeContextCurrent((GLFWwindow*) previous);
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -478,21 +478,21 @@ bool _glfwRefreshContextAttribs(_GLFWwindow* window,
|
|||||||
window->context.GetIntegerv(GL_CONTEXT_FLAGS, &flags);
|
window->context.GetIntegerv(GL_CONTEXT_FLAGS, &flags);
|
||||||
|
|
||||||
if (flags & GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT)
|
if (flags & GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT)
|
||||||
window->context.forward = GLFW_TRUE;
|
window->context.forward = true;
|
||||||
|
|
||||||
if (flags & GL_CONTEXT_FLAG_DEBUG_BIT)
|
if (flags & GL_CONTEXT_FLAG_DEBUG_BIT)
|
||||||
window->context.debug = GLFW_TRUE;
|
window->context.debug = true;
|
||||||
else if (glfwExtensionSupported("GL_ARB_debug_output") &&
|
else if (glfwExtensionSupported("GL_ARB_debug_output") &&
|
||||||
ctxconfig->debug)
|
ctxconfig->debug)
|
||||||
{
|
{
|
||||||
// HACK: This is a workaround for older drivers (pre KHR_debug)
|
// HACK: This is a workaround for older drivers (pre KHR_debug)
|
||||||
// not setting the debug bit in the context flags for
|
// not setting the debug bit in the context flags for
|
||||||
// debug contexts
|
// debug contexts
|
||||||
window->context.debug = GLFW_TRUE;
|
window->context.debug = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (flags & GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR)
|
if (flags & GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR)
|
||||||
window->context.noerror = GLFW_TRUE;
|
window->context.noerror = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Read back OpenGL context profile (OpenGL 3.2 and above)
|
// Read back OpenGL context profile (OpenGL 3.2 and above)
|
||||||
@ -572,7 +572,7 @@ bool _glfwRefreshContextAttribs(_GLFWwindow* window,
|
|||||||
}
|
}
|
||||||
|
|
||||||
glfwMakeContextCurrent((GLFWwindow*) previous);
|
glfwMakeContextCurrent((GLFWwindow*) previous);
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Searches an extension string for the specified extension
|
// Searches an extension string for the specified extension
|
||||||
@ -588,7 +588,7 @@ bool _glfwStringInExtensionString(const char* string, const char* extensions)
|
|||||||
|
|
||||||
where = strstr(start, string);
|
where = strstr(start, string);
|
||||||
if (!where)
|
if (!where)
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
|
|
||||||
terminator = where + strlen(string);
|
terminator = where + strlen(string);
|
||||||
if (where == start || *(where - 1) == ' ')
|
if (where == start || *(where - 1) == ' ')
|
||||||
@ -600,7 +600,7 @@ bool _glfwStringInExtensionString(const char* string, const char* extensions)
|
|||||||
start = terminator;
|
start = terminator;
|
||||||
}
|
}
|
||||||
|
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -677,20 +677,20 @@ GLFWAPI int glfwExtensionSupported(const char* extension)
|
|||||||
_GLFWwindow* window;
|
_GLFWwindow* window;
|
||||||
assert(extension != NULL);
|
assert(extension != NULL);
|
||||||
|
|
||||||
_GLFW_REQUIRE_INIT_OR_RETURN(GLFW_FALSE);
|
_GLFW_REQUIRE_INIT_OR_RETURN(false);
|
||||||
|
|
||||||
window = _glfwPlatformGetTls(&_glfw.contextSlot);
|
window = _glfwPlatformGetTls(&_glfw.contextSlot);
|
||||||
if (!window)
|
if (!window)
|
||||||
{
|
{
|
||||||
_glfwInputError(GLFW_NO_CURRENT_CONTEXT,
|
_glfwInputError(GLFW_NO_CURRENT_CONTEXT,
|
||||||
"Cannot query extension without a current OpenGL or OpenGL ES context");
|
"Cannot query extension without a current OpenGL or OpenGL ES context");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (*extension == '\0')
|
if (*extension == '\0')
|
||||||
{
|
{
|
||||||
_glfwInputError(GLFW_INVALID_VALUE, "Extension name cannot be an empty string");
|
_glfwInputError(GLFW_INVALID_VALUE, "Extension name cannot be an empty string");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (window->context.major >= 3)
|
if (window->context.major >= 3)
|
||||||
@ -710,11 +710,11 @@ GLFWAPI int glfwExtensionSupported(const char* extension)
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||||
"Extension string retrieval is broken");
|
"Extension string retrieval is broken");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (strcmp(en, extension) == 0)
|
if (strcmp(en, extension) == 0)
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -727,11 +727,11 @@ GLFWAPI int glfwExtensionSupported(const char* extension)
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||||
"Extension string retrieval is broken");
|
"Extension string retrieval is broken");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_glfwStringInExtensionString(extension, extensions))
|
if (_glfwStringInExtensionString(extension, extensions))
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if extension is in the platform-specific string
|
// Check if extension is in the platform-specific string
|
||||||
|
|||||||
18
glfw/dbus_glfw.c
vendored
18
glfw/dbus_glfw.c
vendored
@ -49,7 +49,7 @@ bool
|
|||||||
glfw_dbus_init(_GLFWDBUSData *dbus, EventLoopData *eld) {
|
glfw_dbus_init(_GLFWDBUSData *dbus, EventLoopData *eld) {
|
||||||
dbus->eld = eld;
|
dbus->eld = eld;
|
||||||
dbus_data = dbus;
|
dbus_data = dbus;
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -202,7 +202,7 @@ glfw_dbus_get_args(DBusMessage *msg, const char *failmsg, ...) {
|
|||||||
va_list ap;
|
va_list ap;
|
||||||
va_start(ap, failmsg);
|
va_start(ap, failmsg);
|
||||||
int firstarg = va_arg(ap, int);
|
int firstarg = va_arg(ap, int);
|
||||||
bool ret = dbus_message_get_args_valist(msg, &err, firstarg, ap) ? GLFW_TRUE : GLFW_FALSE;
|
bool ret = dbus_message_get_args_valist(msg, &err, firstarg, ap) ? true : false;
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
if (!ret) report_error(&err, failmsg);
|
if (!ret) report_error(&err, failmsg);
|
||||||
return ret;
|
return ret;
|
||||||
@ -235,23 +235,23 @@ method_reply_received(DBusPendingCall *pending, void *user_data) {
|
|||||||
|
|
||||||
bool
|
bool
|
||||||
call_method_with_msg(DBusConnection *conn, DBusMessage *msg, int timeout, dbus_pending_callback callback, void *user_data) {
|
call_method_with_msg(DBusConnection *conn, DBusMessage *msg, int timeout, dbus_pending_callback callback, void *user_data) {
|
||||||
bool retval = GLFW_FALSE;
|
bool retval = false;
|
||||||
#define REPORT(errs) _glfwInputError(GLFW_PLATFORM_ERROR, "Failed to call DBUS method: node=%s path=%s interface=%s method=%s, with error: %s", dbus_message_get_destination(msg), dbus_message_get_path(msg), dbus_message_get_interface(msg), dbus_message_get_member(msg), errs)
|
#define REPORT(errs) _glfwInputError(GLFW_PLATFORM_ERROR, "Failed to call DBUS method: node=%s path=%s interface=%s method=%s, with error: %s", dbus_message_get_destination(msg), dbus_message_get_path(msg), dbus_message_get_interface(msg), dbus_message_get_member(msg), errs)
|
||||||
if (callback) {
|
if (callback) {
|
||||||
DBusPendingCall *pending = NULL;
|
DBusPendingCall *pending = NULL;
|
||||||
if (dbus_connection_send_with_reply(conn, msg, &pending, timeout)) {
|
if (dbus_connection_send_with_reply(conn, msg, &pending, timeout)) {
|
||||||
MethodResponse *res = malloc(sizeof(MethodResponse));
|
MethodResponse *res = malloc(sizeof(MethodResponse));
|
||||||
if (!res) return GLFW_FALSE;
|
if (!res) return false;
|
||||||
res->callback = callback;
|
res->callback = callback;
|
||||||
res->user_data = user_data;
|
res->user_data = user_data;
|
||||||
dbus_pending_call_set_notify(pending, method_reply_received, res, free);
|
dbus_pending_call_set_notify(pending, method_reply_received, res, free);
|
||||||
retval = GLFW_TRUE;
|
retval = true;
|
||||||
} else {
|
} else {
|
||||||
REPORT("out of memory");
|
REPORT("out of memory");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (dbus_connection_send(conn, msg, NULL)) {
|
if (dbus_connection_send(conn, msg, NULL)) {
|
||||||
retval = GLFW_TRUE;
|
retval = true;
|
||||||
} else {
|
} else {
|
||||||
REPORT("out of memory");
|
REPORT("out of memory");
|
||||||
}
|
}
|
||||||
@ -262,10 +262,10 @@ call_method_with_msg(DBusConnection *conn, DBusMessage *msg, int timeout, dbus_p
|
|||||||
|
|
||||||
static bool
|
static bool
|
||||||
call_method(DBusConnection *conn, const char *node, const char *path, const char *interface, const char *method, int timeout, dbus_pending_callback callback, void *user_data, va_list ap) {
|
call_method(DBusConnection *conn, const char *node, const char *path, const char *interface, const char *method, int timeout, dbus_pending_callback callback, void *user_data, va_list ap) {
|
||||||
if (!conn) return GLFW_FALSE;
|
if (!conn) return false;
|
||||||
DBusMessage *msg = dbus_message_new_method_call(node, path, interface, method);
|
DBusMessage *msg = dbus_message_new_method_call(node, path, interface, method);
|
||||||
if (!msg) return GLFW_FALSE;
|
if (!msg) return false;
|
||||||
bool retval = GLFW_FALSE;
|
bool retval = false;
|
||||||
|
|
||||||
int firstarg = va_arg(ap, int);
|
int firstarg = va_arg(ap, int);
|
||||||
if ((firstarg == DBUS_TYPE_INVALID) || dbus_message_append_args_valist(msg, firstarg, ap)) {
|
if ((firstarg == DBUS_TYPE_INVALID) || dbus_message_append_args_valist(msg, firstarg, ap)) {
|
||||||
|
|||||||
44
glfw/egl_context.c
vendored
44
glfw/egl_context.c
vendored
@ -98,7 +98,7 @@ static bool chooseEGLConfig(const _GLFWctxconfig* ctxconfig,
|
|||||||
if (!nativeCount)
|
if (!nativeCount)
|
||||||
{
|
{
|
||||||
_glfwInputError(GLFW_API_UNAVAILABLE, "EGL: No EGLConfigs returned");
|
_glfwInputError(GLFW_API_UNAVAILABLE, "EGL: No EGLConfigs returned");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
nativeConfigs = calloc(nativeCount, sizeof(EGLConfig));
|
nativeConfigs = calloc(nativeCount, sizeof(EGLConfig));
|
||||||
@ -170,7 +170,7 @@ static bool chooseEGLConfig(const _GLFWctxconfig* ctxconfig,
|
|||||||
u->stencilBits = getEGLConfigAttrib(n, EGL_STENCIL_SIZE);
|
u->stencilBits = getEGLConfigAttrib(n, EGL_STENCIL_SIZE);
|
||||||
|
|
||||||
u->samples = getEGLConfigAttrib(n, EGL_SAMPLES);
|
u->samples = getEGLConfigAttrib(n, EGL_SAMPLES);
|
||||||
u->doublebuffer = GLFW_TRUE;
|
u->doublebuffer = true;
|
||||||
|
|
||||||
u->handle = (uintptr_t) n;
|
u->handle = (uintptr_t) n;
|
||||||
usableCount++;
|
usableCount++;
|
||||||
@ -241,10 +241,10 @@ static int extensionSupportedEGL(const char* extension)
|
|||||||
if (extensions)
|
if (extensions)
|
||||||
{
|
{
|
||||||
if (_glfwStringInExtensionString(extension, extensions))
|
if (_glfwStringInExtensionString(extension, extensions))
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static GLFWglproc getProcAddressEGL(const char* procname)
|
static GLFWglproc getProcAddressEGL(const char* procname)
|
||||||
@ -318,7 +318,7 @@ bool _glfwInitEGL(void)
|
|||||||
};
|
};
|
||||||
|
|
||||||
if (_glfw.egl.handle)
|
if (_glfw.egl.handle)
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
|
|
||||||
for (i = 0; sonames[i]; i++)
|
for (i = 0; sonames[i]; i++)
|
||||||
{
|
{
|
||||||
@ -330,7 +330,7 @@ bool _glfwInitEGL(void)
|
|||||||
if (!_glfw.egl.handle)
|
if (!_glfw.egl.handle)
|
||||||
{
|
{
|
||||||
_glfwInputError(GLFW_API_UNAVAILABLE, "EGL: Library not found");
|
_glfwInputError(GLFW_API_UNAVAILABLE, "EGL: Library not found");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
_glfw.egl.prefix = (strncmp(sonames[i], "lib", 3) == 0);
|
_glfw.egl.prefix = (strncmp(sonames[i], "lib", 3) == 0);
|
||||||
@ -389,7 +389,7 @@ bool _glfwInitEGL(void)
|
|||||||
"EGL: Failed to load required entry points");
|
"EGL: Failed to load required entry points");
|
||||||
|
|
||||||
_glfwTerminateEGL();
|
_glfwTerminateEGL();
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
_glfw.egl.display = eglGetDisplay(_GLFW_EGL_NATIVE_DISPLAY);
|
_glfw.egl.display = eglGetDisplay(_GLFW_EGL_NATIVE_DISPLAY);
|
||||||
@ -400,7 +400,7 @@ bool _glfwInitEGL(void)
|
|||||||
getEGLErrorString(eglGetError()));
|
getEGLErrorString(eglGetError()));
|
||||||
|
|
||||||
_glfwTerminateEGL();
|
_glfwTerminateEGL();
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!eglInitialize(_glfw.egl.display, &_glfw.egl.major, &_glfw.egl.minor))
|
if (!eglInitialize(_glfw.egl.display, &_glfw.egl.major, &_glfw.egl.minor))
|
||||||
@ -410,7 +410,7 @@ bool _glfwInitEGL(void)
|
|||||||
getEGLErrorString(eglGetError()));
|
getEGLErrorString(eglGetError()));
|
||||||
|
|
||||||
_glfwTerminateEGL();
|
_glfwTerminateEGL();
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
_glfw.egl.KHR_create_context =
|
_glfw.egl.KHR_create_context =
|
||||||
@ -424,7 +424,7 @@ bool _glfwInitEGL(void)
|
|||||||
_glfw.egl.KHR_context_flush_control =
|
_glfw.egl.KHR_context_flush_control =
|
||||||
extensionSupportedEGL("EGL_KHR_context_flush_control");
|
extensionSupportedEGL("EGL_KHR_context_flush_control");
|
||||||
|
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Terminate EGL
|
// Terminate EGL
|
||||||
@ -465,7 +465,7 @@ bool _glfwCreateContextEGL(_GLFWwindow* window,
|
|||||||
if (!_glfw.egl.display)
|
if (!_glfw.egl.display)
|
||||||
{
|
{
|
||||||
_glfwInputError(GLFW_API_UNAVAILABLE, "EGL: API not available");
|
_glfwInputError(GLFW_API_UNAVAILABLE, "EGL: API not available");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ctxconfig->share)
|
if (ctxconfig->share)
|
||||||
@ -475,7 +475,7 @@ bool _glfwCreateContextEGL(_GLFWwindow* window,
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_FORMAT_UNAVAILABLE,
|
_glfwInputError(GLFW_FORMAT_UNAVAILABLE,
|
||||||
"EGL: Failed to find a suitable EGLConfig");
|
"EGL: Failed to find a suitable EGLConfig");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ctxconfig->client == GLFW_OPENGL_ES_API)
|
if (ctxconfig->client == GLFW_OPENGL_ES_API)
|
||||||
@ -485,7 +485,7 @@ bool _glfwCreateContextEGL(_GLFWwindow* window,
|
|||||||
_glfwInputError(GLFW_API_UNAVAILABLE,
|
_glfwInputError(GLFW_API_UNAVAILABLE,
|
||||||
"EGL: Failed to bind OpenGL ES: %s",
|
"EGL: Failed to bind OpenGL ES: %s",
|
||||||
getEGLErrorString(eglGetError()));
|
getEGLErrorString(eglGetError()));
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -495,7 +495,7 @@ bool _glfwCreateContextEGL(_GLFWwindow* window,
|
|||||||
_glfwInputError(GLFW_API_UNAVAILABLE,
|
_glfwInputError(GLFW_API_UNAVAILABLE,
|
||||||
"EGL: Failed to bind OpenGL: %s",
|
"EGL: Failed to bind OpenGL: %s",
|
||||||
getEGLErrorString(eglGetError()));
|
getEGLErrorString(eglGetError()));
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -536,7 +536,7 @@ bool _glfwCreateContextEGL(_GLFWwindow* window,
|
|||||||
if (ctxconfig->noerror)
|
if (ctxconfig->noerror)
|
||||||
{
|
{
|
||||||
if (_glfw.egl.KHR_create_context_no_error)
|
if (_glfw.egl.KHR_create_context_no_error)
|
||||||
setAttrib(EGL_CONTEXT_OPENGL_NO_ERROR_KHR, GLFW_TRUE);
|
setAttrib(EGL_CONTEXT_OPENGL_NO_ERROR_KHR, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ctxconfig->major != 1 || ctxconfig->minor != 0)
|
if (ctxconfig->major != 1 || ctxconfig->minor != 0)
|
||||||
@ -581,7 +581,7 @@ bool _glfwCreateContextEGL(_GLFWwindow* window,
|
|||||||
_glfwInputError(GLFW_VERSION_UNAVAILABLE,
|
_glfwInputError(GLFW_VERSION_UNAVAILABLE,
|
||||||
"EGL: Failed to create context: %s",
|
"EGL: Failed to create context: %s",
|
||||||
getEGLErrorString(eglGetError()));
|
getEGLErrorString(eglGetError()));
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set up attributes for surface creation
|
// Set up attributes for surface creation
|
||||||
@ -607,7 +607,7 @@ bool _glfwCreateContextEGL(_GLFWwindow* window,
|
|||||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||||
"EGL: Failed to create window surface: %s",
|
"EGL: Failed to create window surface: %s",
|
||||||
getEGLErrorString(eglGetError()));
|
getEGLErrorString(eglGetError()));
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
window->context.egl.config = config;
|
window->context.egl.config = config;
|
||||||
@ -695,7 +695,7 @@ bool _glfwCreateContextEGL(_GLFWwindow* window,
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_API_UNAVAILABLE,
|
_glfwInputError(GLFW_API_UNAVAILABLE,
|
||||||
"EGL: Failed to load client library");
|
"EGL: Failed to load client library");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -706,7 +706,7 @@ bool _glfwCreateContextEGL(_GLFWwindow* window,
|
|||||||
window->context.getProcAddress = getProcAddressEGL;
|
window->context.getProcAddress = getProcAddressEGL;
|
||||||
window->context.destroy = destroyContextEGL;
|
window->context.destroy = destroyContextEGL;
|
||||||
|
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
#undef setAttrib
|
#undef setAttrib
|
||||||
@ -729,7 +729,7 @@ bool _glfwChooseVisualEGL(const _GLFWwndconfig* wndconfig,
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_FORMAT_UNAVAILABLE,
|
_glfwInputError(GLFW_FORMAT_UNAVAILABLE,
|
||||||
"EGL: Failed to find a suitable EGLConfig");
|
"EGL: Failed to find a suitable EGLConfig");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
eglGetConfigAttrib(_glfw.egl.display, native,
|
eglGetConfigAttrib(_glfw.egl.display, native,
|
||||||
@ -743,14 +743,14 @@ bool _glfwChooseVisualEGL(const _GLFWwndconfig* wndconfig,
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||||
"EGL: Failed to retrieve Visual for EGLConfig");
|
"EGL: Failed to retrieve Visual for EGLConfig");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
*visual = result->visual;
|
*visual = result->visual;
|
||||||
*depth = result->depth;
|
*depth = result->depth;
|
||||||
|
|
||||||
XFree(result);
|
XFree(result);
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
#endif // _GLFW_X11
|
#endif // _GLFW_X11
|
||||||
|
|
||||||
|
|||||||
82
glfw/glfw3.h
vendored
82
glfw/glfw3.h
vendored
@ -271,24 +271,6 @@ extern "C" {
|
|||||||
#define GLFW_VERSION_REVISION 0
|
#define GLFW_VERSION_REVISION 0
|
||||||
/*! @} */
|
/*! @} */
|
||||||
|
|
||||||
/*! @name Boolean values
|
|
||||||
* @{ */
|
|
||||||
/*! @brief One.
|
|
||||||
*
|
|
||||||
* One. Seriously. You don't _need_ to use this symbol in your code. It's
|
|
||||||
* semantic sugar for the number 1. You can also use `1` or `true` or `_True`
|
|
||||||
* or `GL_TRUE` or whatever you want.
|
|
||||||
*/
|
|
||||||
#define GLFW_TRUE true
|
|
||||||
/*! @brief Zero.
|
|
||||||
*
|
|
||||||
* Zero. Seriously. You don't _need_ to use this symbol in your code. It's
|
|
||||||
* semantic sugar for the number 0. You can also use `0` or `false` or
|
|
||||||
* `_False` or `GL_FALSE` or whatever you want.
|
|
||||||
*/
|
|
||||||
#define GLFW_FALSE false
|
|
||||||
/*! @} */
|
|
||||||
|
|
||||||
/*! @name Key and button actions
|
/*! @name Key and button actions
|
||||||
* @{ */
|
* @{ */
|
||||||
/*! @brief The key or mouse button was released.
|
/*! @brief The key or mouse button was released.
|
||||||
@ -1222,8 +1204,8 @@ typedef void (* GLFWwindowrefreshfun)(GLFWwindow*);
|
|||||||
* This is the function signature for window focus callback functions.
|
* This is the function signature for window focus callback functions.
|
||||||
*
|
*
|
||||||
* @param[in] window The window that gained or lost input focus.
|
* @param[in] window The window that gained or lost input focus.
|
||||||
* @param[in] focused `GLFW_TRUE` if the window was given input focus, or
|
* @param[in] focused `true` if the window was given input focus, or
|
||||||
* `GLFW_FALSE` if it lost it.
|
* `false` if it lost it.
|
||||||
*
|
*
|
||||||
* @sa @ref window_focus
|
* @sa @ref window_focus
|
||||||
* @sa @ref glfwSetWindowFocusCallback
|
* @sa @ref glfwSetWindowFocusCallback
|
||||||
@ -1239,7 +1221,7 @@ typedef void (* GLFWwindowfocusfun)(GLFWwindow*,int);
|
|||||||
* This is the function signature for window occlusion callback functions.
|
* This is the function signature for window occlusion callback functions.
|
||||||
*
|
*
|
||||||
* @param[in] window The window whose occlusion state changed.
|
* @param[in] window The window whose occlusion state changed.
|
||||||
* @param[in] occluded `GLFW_TRUE` if the window was occluded, or `GLFW_FALSE`
|
* @param[in] occluded `true` if the window was occluded, or `false`
|
||||||
* if the window is no longer occluded.
|
* if the window is no longer occluded.
|
||||||
*
|
*
|
||||||
* @sa @ref window_occlusion
|
* @sa @ref window_occlusion
|
||||||
@ -1258,8 +1240,8 @@ typedef void (* GLFWwindowocclusionfun)(GLFWwindow*, bool);
|
|||||||
* functions.
|
* functions.
|
||||||
*
|
*
|
||||||
* @param[in] window The window that was iconified or restored.
|
* @param[in] window The window that was iconified or restored.
|
||||||
* @param[in] iconified `GLFW_TRUE` if the window was iconified, or
|
* @param[in] iconified `true` if the window was iconified, or
|
||||||
* `GLFW_FALSE` if it was restored.
|
* `false` if it was restored.
|
||||||
*
|
*
|
||||||
* @sa @ref window_iconify
|
* @sa @ref window_iconify
|
||||||
* @sa @ref glfwSetWindowIconifyCallback
|
* @sa @ref glfwSetWindowIconifyCallback
|
||||||
@ -1276,8 +1258,8 @@ typedef void (* GLFWwindowiconifyfun)(GLFWwindow*,int);
|
|||||||
* functions.
|
* functions.
|
||||||
*
|
*
|
||||||
* @param[in] window The window that was maximized or restored.
|
* @param[in] window The window that was maximized or restored.
|
||||||
* @param[in] iconified `GLFW_TRUE` if the window was maximized, or
|
* @param[in] iconified `true` if the window was maximized, or
|
||||||
* `GLFW_FALSE` if it was restored.
|
* `false` if it was restored.
|
||||||
*
|
*
|
||||||
* @sa @ref window_maximize
|
* @sa @ref window_maximize
|
||||||
* @sa glfwSetWindowMaximizeCallback
|
* @sa glfwSetWindowMaximizeCallback
|
||||||
@ -1369,8 +1351,8 @@ typedef void (* GLFWcursorposfun)(GLFWwindow*,double,double);
|
|||||||
* This is the function signature for cursor enter/leave callback functions.
|
* This is the function signature for cursor enter/leave callback functions.
|
||||||
*
|
*
|
||||||
* @param[in] window The window that received the event.
|
* @param[in] window The window that received the event.
|
||||||
* @param[in] entered `GLFW_TRUE` if the cursor entered the window's client
|
* @param[in] entered `true` if the cursor entered the window's client
|
||||||
* area, or `GLFW_FALSE` if it left it.
|
* area, or `false` if it left it.
|
||||||
*
|
*
|
||||||
* @sa @ref cursor_enter
|
* @sa @ref cursor_enter
|
||||||
* @sa @ref glfwSetCursorEnterCallback
|
* @sa @ref glfwSetCursorEnterCallback
|
||||||
@ -1622,9 +1604,9 @@ typedef struct GLFWgamepadstate
|
|||||||
* succeeds, you should call @ref glfwTerminate before the application exits.
|
* succeeds, you should call @ref glfwTerminate before the application exits.
|
||||||
*
|
*
|
||||||
* Additional calls to this function after successful initialization but before
|
* Additional calls to this function after successful initialization but before
|
||||||
* termination will return `GLFW_TRUE` immediately.
|
* termination will return `true` immediately.
|
||||||
*
|
*
|
||||||
* @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an
|
* @return `true` if successful, or `false` if an
|
||||||
* [error](@ref error_handling) occurred.
|
* [error](@ref error_handling) occurred.
|
||||||
*
|
*
|
||||||
* @errors Possible errors include @ref GLFW_PLATFORM_ERROR.
|
* @errors Possible errors include @ref GLFW_PLATFORM_ERROR.
|
||||||
@ -2472,7 +2454,7 @@ GLFWAPI void glfwWindowHintString(int hint, const char* value);
|
|||||||
* @remark @macos On OS X 10.10 and later the window frame will not be rendered
|
* @remark @macos On OS X 10.10 and later the window frame will not be rendered
|
||||||
* at full resolution on Retina displays unless the
|
* at full resolution on Retina displays unless the
|
||||||
* [GLFW_COCOA_RETINA_FRAMEBUFFER](@ref GLFW_COCOA_RETINA_FRAMEBUFFER_hint)
|
* [GLFW_COCOA_RETINA_FRAMEBUFFER](@ref GLFW_COCOA_RETINA_FRAMEBUFFER_hint)
|
||||||
* hint is `GLFW_TRUE` and the `NSHighResolutionCapable` key is enabled in the
|
* hint is `true` and the `NSHighResolutionCapable` key is enabled in the
|
||||||
* application bundle's `Info.plist`. For more information, see
|
* application bundle's `Info.plist`. For more information, see
|
||||||
* [High Resolution Guidelines for OS X](https://developer.apple.com/library/mac/documentation/GraphicsAnimation/Conceptual/HighResolutionOSX/Explained/Explained.html)
|
* [High Resolution Guidelines for OS X](https://developer.apple.com/library/mac/documentation/GraphicsAnimation/Conceptual/HighResolutionOSX/Explained/Explained.html)
|
||||||
* in the Mac Developer Library. The GLFW test and example programs use
|
* in the Mac Developer Library. The GLFW test and example programs use
|
||||||
@ -3273,7 +3255,7 @@ GLFWAPI void glfwRequestWindowAttention(GLFWwindow* window);
|
|||||||
* supported. Currently (macOS, Windows, X11 and Wayland).
|
* supported. Currently (macOS, Windows, X11 and Wayland).
|
||||||
*
|
*
|
||||||
* @param[in] window The window with which the bell is associated.
|
* @param[in] window The window with which the bell is associated.
|
||||||
* @return GLFW_TRUE if the bell succeeded otherwise GLFW_FALSE
|
* @return true if the bell succeeded otherwise false
|
||||||
*
|
*
|
||||||
* @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
|
* @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
|
||||||
* GLFW_PLATFORM_ERROR.
|
* GLFW_PLATFORM_ERROR.
|
||||||
@ -3423,7 +3405,7 @@ GLFWAPI int glfwGetWindowAttrib(GLFWwindow* window, int attrib);
|
|||||||
*
|
*
|
||||||
* @param[in] window The window to set the attribute for.
|
* @param[in] window The window to set the attribute for.
|
||||||
* @param[in] attrib A supported window attribute.
|
* @param[in] attrib A supported window attribute.
|
||||||
* @param[in] value `GLFW_TRUE` or `GLFW_FALSE`.
|
* @param[in] value `true` or `false`.
|
||||||
*
|
*
|
||||||
* @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
|
* @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
|
||||||
* GLFW_INVALID_ENUM, @ref GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR.
|
* GLFW_INVALID_ENUM, @ref GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR.
|
||||||
@ -3805,23 +3787,23 @@ GLFWAPI int glfwGetInputMode(GLFWwindow* window, int mode);
|
|||||||
* and unlimited cursor movement. This is useful for implementing for
|
* and unlimited cursor movement. This is useful for implementing for
|
||||||
* example 3D camera controls.
|
* example 3D camera controls.
|
||||||
*
|
*
|
||||||
* If the mode is `GLFW_STICKY_KEYS`, the value must be either `GLFW_TRUE` to
|
* If the mode is `GLFW_STICKY_KEYS`, the value must be either `true` to
|
||||||
* enable sticky keys, or `GLFW_FALSE` to disable it. If sticky keys are
|
* enable sticky keys, or `false` to disable it. If sticky keys are
|
||||||
* enabled, a key press will ensure that @ref glfwGetKey returns `GLFW_PRESS`
|
* enabled, a key press will ensure that @ref glfwGetKey returns `GLFW_PRESS`
|
||||||
* the next time it is called even if the key had been released before the
|
* the next time it is called even if the key had been released before the
|
||||||
* call. This is useful when you are only interested in whether keys have been
|
* call. This is useful when you are only interested in whether keys have been
|
||||||
* pressed but not when or in which order.
|
* pressed but not when or in which order.
|
||||||
*
|
*
|
||||||
* If the mode is `GLFW_STICKY_MOUSE_BUTTONS`, the value must be either
|
* If the mode is `GLFW_STICKY_MOUSE_BUTTONS`, the value must be either
|
||||||
* `GLFW_TRUE` to enable sticky mouse buttons, or `GLFW_FALSE` to disable it.
|
* `true` to enable sticky mouse buttons, or `false` to disable it.
|
||||||
* If sticky mouse buttons are enabled, a mouse button press will ensure that
|
* If sticky mouse buttons are enabled, a mouse button press will ensure that
|
||||||
* @ref glfwGetMouseButton returns `GLFW_PRESS` the next time it is called even
|
* @ref glfwGetMouseButton returns `GLFW_PRESS` the next time it is called even
|
||||||
* if the mouse button had been released before the call. This is useful when
|
* if the mouse button had been released before the call. This is useful when
|
||||||
* you are only interested in whether mouse buttons have been pressed but not
|
* you are only interested in whether mouse buttons have been pressed but not
|
||||||
* when or in which order.
|
* when or in which order.
|
||||||
*
|
*
|
||||||
* If the mode is `GLFW_LOCK_KEY_MODS`, the value must be either `GLFW_TRUE` to
|
* If the mode is `GLFW_LOCK_KEY_MODS`, the value must be either `true` to
|
||||||
* enable lock key modifier bits, or `GLFW_FALSE` to disable them. If enabled,
|
* enable lock key modifier bits, or `false` to disable them. If enabled,
|
||||||
* callbacks that receive modifier bits will also have the @ref
|
* callbacks that receive modifier bits will also have the @ref
|
||||||
* GLFW_MOD_CAPS_LOCK bit set when the event was generated with Caps Lock on,
|
* GLFW_MOD_CAPS_LOCK bit set when the event was generated with Caps Lock on,
|
||||||
* and the @ref GLFW_MOD_NUM_LOCK bit when Num Lock was on.
|
* and the @ref GLFW_MOD_NUM_LOCK bit when Num Lock was on.
|
||||||
@ -4366,7 +4348,7 @@ GLFWAPI GLFWliveresizefun glfwSetLiveResizeCallback(GLFWwindow* window, GLFWlive
|
|||||||
* work.
|
* work.
|
||||||
*
|
*
|
||||||
* @param[in] jid The [joystick](@ref joysticks) to query.
|
* @param[in] jid The [joystick](@ref joysticks) to query.
|
||||||
* @return `GLFW_TRUE` if the joystick is present, or `GLFW_FALSE` otherwise.
|
* @return `true` if the joystick is present, or `false` otherwise.
|
||||||
*
|
*
|
||||||
* @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
|
* @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
|
||||||
* GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR.
|
* GLFW_INVALID_ENUM and @ref GLFW_PLATFORM_ERROR.
|
||||||
@ -4640,13 +4622,13 @@ GLFWAPI void* glfwGetJoystickUserPointer(int jid);
|
|||||||
* a gamepad mapping.
|
* a gamepad mapping.
|
||||||
*
|
*
|
||||||
* If the specified joystick is present but does not have a gamepad mapping
|
* If the specified joystick is present but does not have a gamepad mapping
|
||||||
* this function will return `GLFW_FALSE` but will not generate an error. Call
|
* this function will return `false` but will not generate an error. Call
|
||||||
* @ref glfwJoystickPresent to check if a joystick is present regardless of
|
* @ref glfwJoystickPresent to check if a joystick is present regardless of
|
||||||
* whether it has a mapping.
|
* whether it has a mapping.
|
||||||
*
|
*
|
||||||
* @param[in] jid The [joystick](@ref joysticks) to query.
|
* @param[in] jid The [joystick](@ref joysticks) to query.
|
||||||
* @return `GLFW_TRUE` if a joystick is both present and has a gamepad mapping,
|
* @return `true` if a joystick is both present and has a gamepad mapping,
|
||||||
* or `GLFW_FALSE` otherwise.
|
* or `false` otherwise.
|
||||||
*
|
*
|
||||||
* @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
|
* @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
|
||||||
* GLFW_INVALID_ENUM.
|
* GLFW_INVALID_ENUM.
|
||||||
@ -4707,7 +4689,7 @@ GLFWAPI GLFWjoystickfun glfwSetJoystickCallback(GLFWjoystickfun cbfun);
|
|||||||
* default.
|
* default.
|
||||||
*
|
*
|
||||||
* @param[in] string The string containing the gamepad mappings.
|
* @param[in] string The string containing the gamepad mappings.
|
||||||
* @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an
|
* @return `true` if successful, or `false` if an
|
||||||
* [error](@ref error_handling) occurred.
|
* [error](@ref error_handling) occurred.
|
||||||
*
|
*
|
||||||
* @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
|
* @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
|
||||||
@ -4761,7 +4743,7 @@ GLFWAPI const char* glfwGetGamepadName(int jid);
|
|||||||
* an Xbox-like gamepad.
|
* an Xbox-like gamepad.
|
||||||
*
|
*
|
||||||
* If the specified joystick is not present or does not have a gamepad mapping
|
* If the specified joystick is not present or does not have a gamepad mapping
|
||||||
* this function will return `GLFW_FALSE` but will not generate an error. Call
|
* this function will return `false` but will not generate an error. Call
|
||||||
* @ref glfwJoystickPresent to check whether it is present regardless of
|
* @ref glfwJoystickPresent to check whether it is present regardless of
|
||||||
* whether it has a mapping.
|
* whether it has a mapping.
|
||||||
*
|
*
|
||||||
@ -4774,7 +4756,7 @@ GLFWAPI const char* glfwGetGamepadName(int jid);
|
|||||||
*
|
*
|
||||||
* @param[in] jid The [joystick](@ref joysticks) to query.
|
* @param[in] jid The [joystick](@ref joysticks) to query.
|
||||||
* @param[out] state The gamepad input state of the joystick.
|
* @param[out] state The gamepad input state of the joystick.
|
||||||
* @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if no joystick is
|
* @return `true` if successful, or `false` if no joystick is
|
||||||
* connected, it has no gamepad mapping or an [error](@ref error_handling)
|
* connected, it has no gamepad mapping or an [error](@ref error_handling)
|
||||||
* occurred.
|
* occurred.
|
||||||
*
|
*
|
||||||
@ -5107,7 +5089,7 @@ GLFWAPI void glfwSwapInterval(int interval);
|
|||||||
* and `vkEnumerateDeviceExtensionProperties` instead.
|
* and `vkEnumerateDeviceExtensionProperties` instead.
|
||||||
*
|
*
|
||||||
* @param[in] extension The ASCII encoded name of the extension.
|
* @param[in] extension The ASCII encoded name of the extension.
|
||||||
* @return `GLFW_TRUE` if the extension is available, or `GLFW_FALSE`
|
* @return `true` if the extension is available, or `false`
|
||||||
* otherwise.
|
* otherwise.
|
||||||
*
|
*
|
||||||
* @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
|
* @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
|
||||||
@ -5180,7 +5162,7 @@ GLFWAPI GLFWglproc glfwGetProcAddress(const char* procname);
|
|||||||
* and @ref glfwGetPhysicalDevicePresentationSupport to check whether a queue
|
* and @ref glfwGetPhysicalDevicePresentationSupport to check whether a queue
|
||||||
* family of a physical device supports image presentation.
|
* family of a physical device supports image presentation.
|
||||||
*
|
*
|
||||||
* @return `GLFW_TRUE` if Vulkan is minimally available, or `GLFW_FALSE`
|
* @return `true` if Vulkan is minimally available, or `false`
|
||||||
* otherwise.
|
* otherwise.
|
||||||
*
|
*
|
||||||
* @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
|
* @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
|
||||||
@ -5292,7 +5274,7 @@ GLFWAPI GLFWvkproc glfwGetInstanceProcAddress(VkInstance instance, const char* p
|
|||||||
*
|
*
|
||||||
* If Vulkan or the required window surface creation instance extensions are
|
* If Vulkan or the required window surface creation instance extensions are
|
||||||
* not available on the machine, or if the specified instance was not created
|
* not available on the machine, or if the specified instance was not created
|
||||||
* with the required extensions, this function returns `GLFW_FALSE` and
|
* with the required extensions, this function returns `false` and
|
||||||
* generates a @ref GLFW_API_UNAVAILABLE error. Call @ref glfwVulkanSupported
|
* generates a @ref GLFW_API_UNAVAILABLE error. Call @ref glfwVulkanSupported
|
||||||
* to check whether Vulkan is at least minimally available and @ref
|
* to check whether Vulkan is at least minimally available and @ref
|
||||||
* glfwGetRequiredInstanceExtensions to check what instance extensions are
|
* glfwGetRequiredInstanceExtensions to check what instance extensions are
|
||||||
@ -5301,13 +5283,13 @@ GLFWAPI GLFWvkproc glfwGetInstanceProcAddress(VkInstance instance, const char* p
|
|||||||
* @param[in] instance The instance that the physical device belongs to.
|
* @param[in] instance The instance that the physical device belongs to.
|
||||||
* @param[in] device The physical device that the queue family belongs to.
|
* @param[in] device The physical device that the queue family belongs to.
|
||||||
* @param[in] queuefamily The index of the queue family to query.
|
* @param[in] queuefamily The index of the queue family to query.
|
||||||
* @return `GLFW_TRUE` if the queue family supports presentation, or
|
* @return `true` if the queue family supports presentation, or
|
||||||
* `GLFW_FALSE` otherwise.
|
* `false` otherwise.
|
||||||
*
|
*
|
||||||
* @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
|
* @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
|
||||||
* GLFW_API_UNAVAILABLE and @ref GLFW_PLATFORM_ERROR.
|
* GLFW_API_UNAVAILABLE and @ref GLFW_PLATFORM_ERROR.
|
||||||
*
|
*
|
||||||
* @remark @macos This function currently always returns `GLFW_TRUE`, as the
|
* @remark @macos This function currently always returns `true`, as the
|
||||||
* `VK_MVK_macos_surface` extension does not provide
|
* `VK_MVK_macos_surface` extension does not provide
|
||||||
* a `vkGetPhysicalDevice*PresentationSupport` type function.
|
* a `vkGetPhysicalDevice*PresentationSupport` type function.
|
||||||
*
|
*
|
||||||
|
|||||||
76
glfw/glx_context.c
vendored
76
glfw/glx_context.c
vendored
@ -55,20 +55,20 @@ static bool chooseGLXFBConfig(const _GLFWfbconfig* desired,
|
|||||||
const _GLFWfbconfig* closest;
|
const _GLFWfbconfig* closest;
|
||||||
int i, nativeCount, usableCount;
|
int i, nativeCount, usableCount;
|
||||||
const char* vendor;
|
const char* vendor;
|
||||||
bool trustWindowBit = GLFW_TRUE;
|
bool trustWindowBit = true;
|
||||||
|
|
||||||
// HACK: This is a (hopefully temporary) workaround for Chromium
|
// HACK: This is a (hopefully temporary) workaround for Chromium
|
||||||
// (VirtualBox GL) not setting the window bit on any GLXFBConfigs
|
// (VirtualBox GL) not setting the window bit on any GLXFBConfigs
|
||||||
vendor = glXGetClientString(_glfw.x11.display, GLX_VENDOR);
|
vendor = glXGetClientString(_glfw.x11.display, GLX_VENDOR);
|
||||||
if (vendor && strcmp(vendor, "Chromium") == 0)
|
if (vendor && strcmp(vendor, "Chromium") == 0)
|
||||||
trustWindowBit = GLFW_FALSE;
|
trustWindowBit = false;
|
||||||
|
|
||||||
nativeConfigs =
|
nativeConfigs =
|
||||||
glXGetFBConfigs(_glfw.x11.display, _glfw.x11.screen, &nativeCount);
|
glXGetFBConfigs(_glfw.x11.display, _glfw.x11.screen, &nativeCount);
|
||||||
if (!nativeConfigs || !nativeCount)
|
if (!nativeConfigs || !nativeCount)
|
||||||
{
|
{
|
||||||
_glfwInputError(GLFW_API_UNAVAILABLE, "GLX: No GLXFBConfigs returned");
|
_glfwInputError(GLFW_API_UNAVAILABLE, "GLX: No GLXFBConfigs returned");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
usableConfigs = calloc(nativeCount, sizeof(_GLFWfbconfig));
|
usableConfigs = calloc(nativeCount, sizeof(_GLFWfbconfig));
|
||||||
@ -116,9 +116,9 @@ static bool chooseGLXFBConfig(const _GLFWfbconfig* desired,
|
|||||||
u->auxBuffers = getGLXFBConfigAttrib(n, GLX_AUX_BUFFERS);
|
u->auxBuffers = getGLXFBConfigAttrib(n, GLX_AUX_BUFFERS);
|
||||||
|
|
||||||
if (getGLXFBConfigAttrib(n, GLX_STEREO))
|
if (getGLXFBConfigAttrib(n, GLX_STEREO))
|
||||||
u->stereo = GLFW_TRUE;
|
u->stereo = true;
|
||||||
if (getGLXFBConfigAttrib(n, GLX_DOUBLEBUFFER))
|
if (getGLXFBConfigAttrib(n, GLX_DOUBLEBUFFER))
|
||||||
u->doublebuffer = GLFW_TRUE;
|
u->doublebuffer = true;
|
||||||
|
|
||||||
if (_glfw.glx.ARB_multisample)
|
if (_glfw.glx.ARB_multisample)
|
||||||
u->samples = getGLXFBConfigAttrib(n, GLX_SAMPLES);
|
u->samples = getGLXFBConfigAttrib(n, GLX_SAMPLES);
|
||||||
@ -210,10 +210,10 @@ static int extensionSupportedGLX(const char* extension)
|
|||||||
if (extensions)
|
if (extensions)
|
||||||
{
|
{
|
||||||
if (_glfwStringInExtensionString(extension, extensions))
|
if (_glfwStringInExtensionString(extension, extensions))
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static GLFWglproc getProcAddressGLX(const char* procname)
|
static GLFWglproc getProcAddressGLX(const char* procname)
|
||||||
@ -265,7 +265,7 @@ bool _glfwInitGLX(void)
|
|||||||
};
|
};
|
||||||
|
|
||||||
if (_glfw.glx.handle)
|
if (_glfw.glx.handle)
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
|
|
||||||
for (i = 0; sonames[i]; i++)
|
for (i = 0; sonames[i]; i++)
|
||||||
{
|
{
|
||||||
@ -277,7 +277,7 @@ bool _glfwInitGLX(void)
|
|||||||
if (!_glfw.glx.handle)
|
if (!_glfw.glx.handle)
|
||||||
{
|
{
|
||||||
_glfwInputError(GLFW_API_UNAVAILABLE, "GLX: Failed to load GLX");
|
_glfwInputError(GLFW_API_UNAVAILABLE, "GLX: Failed to load GLX");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
_glfw.glx.GetFBConfigs =
|
_glfw.glx.GetFBConfigs =
|
||||||
@ -329,7 +329,7 @@ bool _glfwInitGLX(void)
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||||
"GLX: Failed to load required entry points");
|
"GLX: Failed to load required entry points");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!glXQueryExtension(_glfw.x11.display,
|
if (!glXQueryExtension(_glfw.x11.display,
|
||||||
@ -337,21 +337,21 @@ bool _glfwInitGLX(void)
|
|||||||
&_glfw.glx.eventBase))
|
&_glfw.glx.eventBase))
|
||||||
{
|
{
|
||||||
_glfwInputError(GLFW_API_UNAVAILABLE, "GLX: GLX extension not found");
|
_glfwInputError(GLFW_API_UNAVAILABLE, "GLX: GLX extension not found");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!glXQueryVersion(_glfw.x11.display, &_glfw.glx.major, &_glfw.glx.minor))
|
if (!glXQueryVersion(_glfw.x11.display, &_glfw.glx.major, &_glfw.glx.minor))
|
||||||
{
|
{
|
||||||
_glfwInputError(GLFW_API_UNAVAILABLE,
|
_glfwInputError(GLFW_API_UNAVAILABLE,
|
||||||
"GLX: Failed to query GLX version");
|
"GLX: Failed to query GLX version");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_glfw.glx.major == 1 && _glfw.glx.minor < 3)
|
if (_glfw.glx.major == 1 && _glfw.glx.minor < 3)
|
||||||
{
|
{
|
||||||
_glfwInputError(GLFW_API_UNAVAILABLE,
|
_glfwInputError(GLFW_API_UNAVAILABLE,
|
||||||
"GLX: GLX version 1.3 is required");
|
"GLX: GLX version 1.3 is required");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (extensionSupportedGLX("GLX_EXT_swap_control"))
|
if (extensionSupportedGLX("GLX_EXT_swap_control"))
|
||||||
@ -360,7 +360,7 @@ bool _glfwInitGLX(void)
|
|||||||
getProcAddressGLX("glXSwapIntervalEXT");
|
getProcAddressGLX("glXSwapIntervalEXT");
|
||||||
|
|
||||||
if (_glfw.glx.SwapIntervalEXT)
|
if (_glfw.glx.SwapIntervalEXT)
|
||||||
_glfw.glx.EXT_swap_control = GLFW_TRUE;
|
_glfw.glx.EXT_swap_control = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (extensionSupportedGLX("GLX_SGI_swap_control"))
|
if (extensionSupportedGLX("GLX_SGI_swap_control"))
|
||||||
@ -369,7 +369,7 @@ bool _glfwInitGLX(void)
|
|||||||
getProcAddressGLX("glXSwapIntervalSGI");
|
getProcAddressGLX("glXSwapIntervalSGI");
|
||||||
|
|
||||||
if (_glfw.glx.SwapIntervalSGI)
|
if (_glfw.glx.SwapIntervalSGI)
|
||||||
_glfw.glx.SGI_swap_control = GLFW_TRUE;
|
_glfw.glx.SGI_swap_control = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (extensionSupportedGLX("GLX_MESA_swap_control"))
|
if (extensionSupportedGLX("GLX_MESA_swap_control"))
|
||||||
@ -378,17 +378,17 @@ bool _glfwInitGLX(void)
|
|||||||
getProcAddressGLX("glXSwapIntervalMESA");
|
getProcAddressGLX("glXSwapIntervalMESA");
|
||||||
|
|
||||||
if (_glfw.glx.SwapIntervalMESA)
|
if (_glfw.glx.SwapIntervalMESA)
|
||||||
_glfw.glx.MESA_swap_control = GLFW_TRUE;
|
_glfw.glx.MESA_swap_control = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (extensionSupportedGLX("GLX_ARB_multisample"))
|
if (extensionSupportedGLX("GLX_ARB_multisample"))
|
||||||
_glfw.glx.ARB_multisample = GLFW_TRUE;
|
_glfw.glx.ARB_multisample = true;
|
||||||
|
|
||||||
if (extensionSupportedGLX("GLX_ARB_framebuffer_sRGB"))
|
if (extensionSupportedGLX("GLX_ARB_framebuffer_sRGB"))
|
||||||
_glfw.glx.ARB_framebuffer_sRGB = GLFW_TRUE;
|
_glfw.glx.ARB_framebuffer_sRGB = true;
|
||||||
|
|
||||||
if (extensionSupportedGLX("GLX_EXT_framebuffer_sRGB"))
|
if (extensionSupportedGLX("GLX_EXT_framebuffer_sRGB"))
|
||||||
_glfw.glx.EXT_framebuffer_sRGB = GLFW_TRUE;
|
_glfw.glx.EXT_framebuffer_sRGB = true;
|
||||||
|
|
||||||
if (extensionSupportedGLX("GLX_ARB_create_context"))
|
if (extensionSupportedGLX("GLX_ARB_create_context"))
|
||||||
{
|
{
|
||||||
@ -396,25 +396,25 @@ bool _glfwInitGLX(void)
|
|||||||
getProcAddressGLX("glXCreateContextAttribsARB");
|
getProcAddressGLX("glXCreateContextAttribsARB");
|
||||||
|
|
||||||
if (_glfw.glx.CreateContextAttribsARB)
|
if (_glfw.glx.CreateContextAttribsARB)
|
||||||
_glfw.glx.ARB_create_context = GLFW_TRUE;
|
_glfw.glx.ARB_create_context = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (extensionSupportedGLX("GLX_ARB_create_context_robustness"))
|
if (extensionSupportedGLX("GLX_ARB_create_context_robustness"))
|
||||||
_glfw.glx.ARB_create_context_robustness = GLFW_TRUE;
|
_glfw.glx.ARB_create_context_robustness = true;
|
||||||
|
|
||||||
if (extensionSupportedGLX("GLX_ARB_create_context_profile"))
|
if (extensionSupportedGLX("GLX_ARB_create_context_profile"))
|
||||||
_glfw.glx.ARB_create_context_profile = GLFW_TRUE;
|
_glfw.glx.ARB_create_context_profile = true;
|
||||||
|
|
||||||
if (extensionSupportedGLX("GLX_EXT_create_context_es2_profile"))
|
if (extensionSupportedGLX("GLX_EXT_create_context_es2_profile"))
|
||||||
_glfw.glx.EXT_create_context_es2_profile = GLFW_TRUE;
|
_glfw.glx.EXT_create_context_es2_profile = true;
|
||||||
|
|
||||||
if (extensionSupportedGLX("GLX_ARB_create_context_no_error"))
|
if (extensionSupportedGLX("GLX_ARB_create_context_no_error"))
|
||||||
_glfw.glx.ARB_create_context_no_error = GLFW_TRUE;
|
_glfw.glx.ARB_create_context_no_error = true;
|
||||||
|
|
||||||
if (extensionSupportedGLX("GLX_ARB_context_flush_control"))
|
if (extensionSupportedGLX("GLX_ARB_context_flush_control"))
|
||||||
_glfw.glx.ARB_context_flush_control = GLFW_TRUE;
|
_glfw.glx.ARB_context_flush_control = true;
|
||||||
|
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Terminate GLX
|
// Terminate GLX
|
||||||
@ -455,7 +455,7 @@ bool _glfwCreateContextGLX(_GLFWwindow* window,
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_FORMAT_UNAVAILABLE,
|
_glfwInputError(GLFW_FORMAT_UNAVAILABLE,
|
||||||
"GLX: Failed to find a suitable GLXFBConfig");
|
"GLX: Failed to find a suitable GLXFBConfig");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ctxconfig->client == GLFW_OPENGL_ES_API)
|
if (ctxconfig->client == GLFW_OPENGL_ES_API)
|
||||||
@ -466,7 +466,7 @@ bool _glfwCreateContextGLX(_GLFWwindow* window,
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_API_UNAVAILABLE,
|
_glfwInputError(GLFW_API_UNAVAILABLE,
|
||||||
"GLX: OpenGL ES requested but GLX_EXT_create_context_es2_profile is unavailable");
|
"GLX: OpenGL ES requested but GLX_EXT_create_context_es2_profile is unavailable");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -476,7 +476,7 @@ bool _glfwCreateContextGLX(_GLFWwindow* window,
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_VERSION_UNAVAILABLE,
|
_glfwInputError(GLFW_VERSION_UNAVAILABLE,
|
||||||
"GLX: Forward compatibility requested but GLX_ARB_create_context_profile is unavailable");
|
"GLX: Forward compatibility requested but GLX_ARB_create_context_profile is unavailable");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -487,7 +487,7 @@ bool _glfwCreateContextGLX(_GLFWwindow* window,
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_VERSION_UNAVAILABLE,
|
_glfwInputError(GLFW_VERSION_UNAVAILABLE,
|
||||||
"GLX: An OpenGL profile requested but GLX_ARB_create_context_profile is unavailable");
|
"GLX: An OpenGL profile requested but GLX_ARB_create_context_profile is unavailable");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -552,7 +552,7 @@ bool _glfwCreateContextGLX(_GLFWwindow* window,
|
|||||||
if (ctxconfig->noerror)
|
if (ctxconfig->noerror)
|
||||||
{
|
{
|
||||||
if (_glfw.glx.ARB_create_context_no_error)
|
if (_glfw.glx.ARB_create_context_no_error)
|
||||||
setAttrib(GLX_CONTEXT_OPENGL_NO_ERROR_ARB, GLFW_TRUE);
|
setAttrib(GLX_CONTEXT_OPENGL_NO_ERROR_ARB, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// NOTE: Only request an explicitly versioned context when necessary, as
|
// NOTE: Only request an explicitly versioned context when necessary, as
|
||||||
@ -588,7 +588,7 @@ bool _glfwCreateContextGLX(_GLFWwindow* window,
|
|||||||
if (_glfw.x11.errorCode == _glfw.glx.errorBase + GLXBadProfileARB &&
|
if (_glfw.x11.errorCode == _glfw.glx.errorBase + GLXBadProfileARB &&
|
||||||
ctxconfig->client == GLFW_OPENGL_API &&
|
ctxconfig->client == GLFW_OPENGL_API &&
|
||||||
ctxconfig->profile == GLFW_OPENGL_ANY_PROFILE &&
|
ctxconfig->profile == GLFW_OPENGL_ANY_PROFILE &&
|
||||||
ctxconfig->forward == GLFW_FALSE)
|
ctxconfig->forward == false)
|
||||||
{
|
{
|
||||||
window->context.glx.handle =
|
window->context.glx.handle =
|
||||||
createLegacyContextGLX(window, native, share);
|
createLegacyContextGLX(window, native, share);
|
||||||
@ -606,7 +606,7 @@ bool _glfwCreateContextGLX(_GLFWwindow* window,
|
|||||||
if (!window->context.glx.handle)
|
if (!window->context.glx.handle)
|
||||||
{
|
{
|
||||||
_glfwInputErrorX11(GLFW_VERSION_UNAVAILABLE, "GLX: Failed to create context");
|
_glfwInputErrorX11(GLFW_VERSION_UNAVAILABLE, "GLX: Failed to create context");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
window->context.glx.window =
|
window->context.glx.window =
|
||||||
@ -614,7 +614,7 @@ bool _glfwCreateContextGLX(_GLFWwindow* window,
|
|||||||
if (!window->context.glx.window)
|
if (!window->context.glx.window)
|
||||||
{
|
{
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR, "GLX: Failed to create window");
|
_glfwInputError(GLFW_PLATFORM_ERROR, "GLX: Failed to create window");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
window->context.makeCurrent = makeContextCurrentGLX;
|
window->context.makeCurrent = makeContextCurrentGLX;
|
||||||
@ -624,7 +624,7 @@ bool _glfwCreateContextGLX(_GLFWwindow* window,
|
|||||||
window->context.getProcAddress = getProcAddressGLX;
|
window->context.getProcAddress = getProcAddressGLX;
|
||||||
window->context.destroy = destroyContextGLX;
|
window->context.destroy = destroyContextGLX;
|
||||||
|
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
#undef setAttrib
|
#undef setAttrib
|
||||||
@ -643,7 +643,7 @@ bool _glfwChooseVisualGLX(const _GLFWwndconfig* wndconfig,
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_FORMAT_UNAVAILABLE,
|
_glfwInputError(GLFW_FORMAT_UNAVAILABLE,
|
||||||
"GLX: Failed to find a suitable GLXFBConfig");
|
"GLX: Failed to find a suitable GLXFBConfig");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
result = glXGetVisualFromFBConfig(_glfw.x11.display, native);
|
result = glXGetVisualFromFBConfig(_glfw.x11.display, native);
|
||||||
@ -651,14 +651,14 @@ bool _glfwChooseVisualGLX(const _GLFWwndconfig* wndconfig,
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||||
"GLX: Failed to retrieve Visual for GLXFBConfig");
|
"GLX: Failed to retrieve Visual for GLXFBConfig");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
*visual = result->visual;
|
*visual = result->visual;
|
||||||
*depth = result->depth;
|
*depth = result->depth;
|
||||||
|
|
||||||
XFree(result);
|
XFree(result);
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
56
glfw/ibus_glfw.c
vendored
56
glfw/ibus_glfw.c
vendored
@ -53,7 +53,7 @@ enum Capabilities {
|
|||||||
static inline bool
|
static inline bool
|
||||||
test_env_var(const char *name, const char *val) {
|
test_env_var(const char *name, const char *val) {
|
||||||
const char *q = getenv(name);
|
const char *q = getenv(name);
|
||||||
return (q && strcmp(q, val) == 0) ? GLFW_TRUE : GLFW_FALSE;
|
return (q && strcmp(q, val) == 0) ? true : false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline size_t
|
static inline size_t
|
||||||
@ -200,32 +200,32 @@ read_ibus_address(_GLFWIBUSData *ibus) {
|
|||||||
FILE *addr_file = fopen(ibus->address_file_name, "r");
|
FILE *addr_file = fopen(ibus->address_file_name, "r");
|
||||||
if (!addr_file) {
|
if (!addr_file) {
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR, "Failed to open IBUS address file: %s with error: %s", ibus->address_file_name, strerror(errno));
|
_glfwInputError(GLFW_PLATFORM_ERROR, "Failed to open IBUS address file: %s with error: %s", ibus->address_file_name, strerror(errno));
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
int stat_result = fstat(fileno(addr_file), &s);
|
int stat_result = fstat(fileno(addr_file), &s);
|
||||||
bool found = GLFW_FALSE;
|
bool found = false;
|
||||||
while (fgets(buf, sizeof(buf), addr_file)) {
|
while (fgets(buf, sizeof(buf), addr_file)) {
|
||||||
if (strncmp(buf, "IBUS_ADDRESS=", sizeof("IBUS_ADDRESS=")-1) == 0) {
|
if (strncmp(buf, "IBUS_ADDRESS=", sizeof("IBUS_ADDRESS=")-1) == 0) {
|
||||||
size_t sz = strlen(buf);
|
size_t sz = strlen(buf);
|
||||||
if (buf[sz-1] == '\n') buf[sz-1] = 0;
|
if (buf[sz-1] == '\n') buf[sz-1] = 0;
|
||||||
if (buf[sz-2] == '\r') buf[sz-2] = 0;
|
if (buf[sz-2] == '\r') buf[sz-2] = 0;
|
||||||
found = GLFW_TRUE;
|
found = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fclose(addr_file); addr_file = NULL;
|
fclose(addr_file); addr_file = NULL;
|
||||||
if (stat_result != 0) {
|
if (stat_result != 0) {
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR, "Failed to stat IBUS address file: %s with error: %s", ibus->address_file_name, strerror(errno));
|
_glfwInputError(GLFW_PLATFORM_ERROR, "Failed to stat IBUS address file: %s with error: %s", ibus->address_file_name, strerror(errno));
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
ibus->address_file_mtime = s.st_mtime;
|
ibus->address_file_mtime = s.st_mtime;
|
||||||
if (found) {
|
if (found) {
|
||||||
free((void*)ibus->address);
|
free((void*)ibus->address);
|
||||||
ibus->address = _glfw_strdup(buf + sizeof("IBUS_ADDRESS=") - 1);
|
ibus->address = _glfw_strdup(buf + sizeof("IBUS_ADDRESS=") - 1);
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR, "Could not find IBUS_ADDRESS in %s", ibus->address_file_name);
|
_glfwInputError(GLFW_PLATFORM_ERROR, "Could not find IBUS_ADDRESS in %s", ibus->address_file_name);
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -245,8 +245,8 @@ input_context_created(DBusMessage *msg, const char* errmsg, void *data) {
|
|||||||
dbus_connection_try_register_object_path(ibus->conn, ibus->input_ctx_path, &ibus_vtable, ibus, NULL);
|
dbus_connection_try_register_object_path(ibus->conn, ibus->input_ctx_path, &ibus_vtable, ibus, NULL);
|
||||||
enum Capabilities caps = IBUS_CAP_FOCUS | IBUS_CAP_PREEDIT_TEXT;
|
enum Capabilities caps = IBUS_CAP_FOCUS | IBUS_CAP_PREEDIT_TEXT;
|
||||||
if (!glfw_dbus_call_method_no_reply(ibus->conn, IBUS_SERVICE, ibus->input_ctx_path, IBUS_INPUT_INTERFACE, "SetCapabilities", DBUS_TYPE_UINT32, &caps, DBUS_TYPE_INVALID)) return;
|
if (!glfw_dbus_call_method_no_reply(ibus->conn, IBUS_SERVICE, ibus->input_ctx_path, IBUS_INPUT_INTERFACE, "SetCapabilities", DBUS_TYPE_UINT32, &caps, DBUS_TYPE_INVALID)) return;
|
||||||
ibus->ok = GLFW_TRUE;
|
ibus->ok = true;
|
||||||
glfw_ibus_set_focused(ibus, GLFW_FALSE);
|
glfw_ibus_set_focused(ibus, false);
|
||||||
glfw_ibus_set_cursor_geometry(ibus, 0, 0, 0, 0);
|
glfw_ibus_set_cursor_geometry(ibus, 0, 0, 0, 0);
|
||||||
debug("Connected to IBUS daemon for IME input management\n");
|
debug("Connected to IBUS daemon for IME input management\n");
|
||||||
}
|
}
|
||||||
@ -255,25 +255,25 @@ bool
|
|||||||
setup_connection(_GLFWIBUSData *ibus) {
|
setup_connection(_GLFWIBUSData *ibus) {
|
||||||
const char *client_name = "GLFW_Application";
|
const char *client_name = "GLFW_Application";
|
||||||
const char *address_file_name = get_ibus_address_file_name();
|
const char *address_file_name = get_ibus_address_file_name();
|
||||||
ibus->ok = GLFW_FALSE;
|
ibus->ok = false;
|
||||||
if (!address_file_name) return GLFW_FALSE;
|
if (!address_file_name) return false;
|
||||||
free((void*)ibus->address_file_name);
|
free((void*)ibus->address_file_name);
|
||||||
ibus->address_file_name = _glfw_strdup(address_file_name);
|
ibus->address_file_name = _glfw_strdup(address_file_name);
|
||||||
if (!read_ibus_address(ibus)) return GLFW_FALSE;
|
if (!read_ibus_address(ibus)) return false;
|
||||||
if (ibus->conn) {
|
if (ibus->conn) {
|
||||||
glfw_dbus_close_connection(ibus->conn);
|
glfw_dbus_close_connection(ibus->conn);
|
||||||
ibus->conn = NULL;
|
ibus->conn = NULL;
|
||||||
}
|
}
|
||||||
debug("Connecting to IBUS daemon @ %s for IME input management\n", ibus->address);
|
debug("Connecting to IBUS daemon @ %s for IME input management\n", ibus->address);
|
||||||
ibus->conn = glfw_dbus_connect_to(ibus->address, "Failed to connect to the IBUS daemon, with error", "ibus", GLFW_FALSE);
|
ibus->conn = glfw_dbus_connect_to(ibus->address, "Failed to connect to the IBUS daemon, with error", "ibus", false);
|
||||||
if (!ibus->conn) return GLFW_FALSE;
|
if (!ibus->conn) return false;
|
||||||
free((void*)ibus->input_ctx_path); ibus->input_ctx_path = NULL;
|
free((void*)ibus->input_ctx_path); ibus->input_ctx_path = NULL;
|
||||||
if (!glfw_dbus_call_method_with_reply(
|
if (!glfw_dbus_call_method_with_reply(
|
||||||
ibus->conn, IBUS_SERVICE, IBUS_PATH, IBUS_INTERFACE, "CreateInputContext", DBUS_TIMEOUT_USE_DEFAULT, input_context_created, ibus,
|
ibus->conn, IBUS_SERVICE, IBUS_PATH, IBUS_INTERFACE, "CreateInputContext", DBUS_TIMEOUT_USE_DEFAULT, input_context_created, ibus,
|
||||||
DBUS_TYPE_STRING, &client_name, DBUS_TYPE_INVALID)) {
|
DBUS_TYPE_STRING, &client_name, DBUS_TYPE_INVALID)) {
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -281,7 +281,7 @@ void
|
|||||||
glfw_connect_to_ibus(_GLFWIBUSData *ibus) {
|
glfw_connect_to_ibus(_GLFWIBUSData *ibus) {
|
||||||
if (ibus->inited) return;
|
if (ibus->inited) return;
|
||||||
if (!test_env_var("GLFW_IM_MODULE", "ibus")) return;
|
if (!test_env_var("GLFW_IM_MODULE", "ibus")) return;
|
||||||
ibus->inited = GLFW_TRUE;
|
ibus->inited = true;
|
||||||
setup_connection(ibus);
|
setup_connection(ibus);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -297,21 +297,21 @@ glfw_ibus_terminate(_GLFWIBUSData *ibus) {
|
|||||||
F(address_file_name);
|
F(address_file_name);
|
||||||
#undef F
|
#undef F
|
||||||
|
|
||||||
ibus->ok = GLFW_FALSE;
|
ibus->ok = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
check_connection(_GLFWIBUSData *ibus) {
|
check_connection(_GLFWIBUSData *ibus) {
|
||||||
if (!ibus->inited) return GLFW_FALSE;
|
if (!ibus->inited) return false;
|
||||||
if (ibus->conn && dbus_connection_get_is_connected(ibus->conn)) {
|
if (ibus->conn && dbus_connection_get_is_connected(ibus->conn)) {
|
||||||
return ibus->ok;
|
return ibus->ok;
|
||||||
}
|
}
|
||||||
struct stat s;
|
struct stat s;
|
||||||
if (stat(ibus->address_file_name, &s) != 0 || s.st_mtime != ibus->address_file_mtime) {
|
if (stat(ibus->address_file_name, &s) != 0 || s.st_mtime != ibus->address_file_mtime) {
|
||||||
if (!read_ibus_address(ibus)) return GLFW_FALSE;
|
if (!read_ibus_address(ibus)) return false;
|
||||||
setup_connection(ibus);
|
setup_connection(ibus);
|
||||||
}
|
}
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -395,23 +395,23 @@ key_event_processed(DBusMessage *msg, const char* errmsg, void *data) {
|
|||||||
uint32_t handled = 0;
|
uint32_t handled = 0;
|
||||||
KeyEvent *ev = (KeyEvent*)data;
|
KeyEvent *ev = (KeyEvent*)data;
|
||||||
bool is_release = ev->action == GLFW_RELEASE;
|
bool is_release = ev->action == GLFW_RELEASE;
|
||||||
bool failed = GLFW_FALSE;
|
bool failed = false;
|
||||||
if (errmsg) {
|
if (errmsg) {
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR, "IBUS: Failed to process key with error: %s", errmsg);
|
_glfwInputError(GLFW_PLATFORM_ERROR, "IBUS: Failed to process key with error: %s", errmsg);
|
||||||
failed = GLFW_TRUE;
|
failed = true;
|
||||||
} else {
|
} else {
|
||||||
glfw_dbus_get_args(msg, "Failed to get IBUS handled key from reply", DBUS_TYPE_BOOLEAN, &handled, DBUS_TYPE_INVALID);
|
glfw_dbus_get_args(msg, "Failed to get IBUS handled key from reply", DBUS_TYPE_BOOLEAN, &handled, DBUS_TYPE_INVALID);
|
||||||
debug("IBUS processed scancode: 0x%x release: %d handled: %u\n", ev->keycode, is_release, handled);
|
debug("IBUS processed scancode: 0x%x release: %d handled: %u\n", ev->keycode, is_release, handled);
|
||||||
}
|
}
|
||||||
glfw_xkb_key_from_ime(ev, handled ? GLFW_TRUE : GLFW_FALSE, failed);
|
glfw_xkb_key_from_ime(ev, handled ? true : false, failed);
|
||||||
free(ev);
|
free(ev);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
ibus_process_key(const KeyEvent *ev_, _GLFWIBUSData *ibus) {
|
ibus_process_key(const KeyEvent *ev_, _GLFWIBUSData *ibus) {
|
||||||
if (!check_connection(ibus)) return GLFW_FALSE;
|
if (!check_connection(ibus)) return false;
|
||||||
KeyEvent *ev = malloc(sizeof(KeyEvent));
|
KeyEvent *ev = malloc(sizeof(KeyEvent));
|
||||||
if (!ev) return GLFW_FALSE;
|
if (!ev) return false;
|
||||||
memcpy(ev, ev_, sizeof(KeyEvent));
|
memcpy(ev, ev_, sizeof(KeyEvent));
|
||||||
uint32_t state = ibus_key_state(ev->glfw_modifiers, ev->action);
|
uint32_t state = ibus_key_state(ev->glfw_modifiers, ev->action);
|
||||||
if (!glfw_dbus_call_method_with_reply(
|
if (!glfw_dbus_call_method_with_reply(
|
||||||
@ -420,7 +420,7 @@ ibus_process_key(const KeyEvent *ev_, _GLFWIBUSData *ibus) {
|
|||||||
DBUS_TYPE_UINT32, &ev->ibus_sym, DBUS_TYPE_UINT32, &ev->ibus_keycode, DBUS_TYPE_UINT32,
|
DBUS_TYPE_UINT32, &ev->ibus_sym, DBUS_TYPE_UINT32, &ev->ibus_keycode, DBUS_TYPE_UINT32,
|
||||||
&state, DBUS_TYPE_INVALID)) {
|
&state, DBUS_TYPE_INVALID)) {
|
||||||
free(ev);
|
free(ev);
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
26
glfw/init.c
vendored
26
glfw/init.c
vendored
@ -41,7 +41,7 @@
|
|||||||
|
|
||||||
// Global state shared between compilation units of GLFW
|
// Global state shared between compilation units of GLFW
|
||||||
//
|
//
|
||||||
_GLFWlibrary _glfw = { GLFW_FALSE };
|
_GLFWlibrary _glfw = { false };
|
||||||
|
|
||||||
// These are outside of _glfw so they can be used before initialization and
|
// These are outside of _glfw so they can be used before initialization and
|
||||||
// after termination
|
// after termination
|
||||||
@ -50,12 +50,12 @@ static _GLFWerror _glfwMainThreadError;
|
|||||||
static GLFWerrorfun _glfwErrorCallback;
|
static GLFWerrorfun _glfwErrorCallback;
|
||||||
static _GLFWinitconfig _glfwInitHints =
|
static _GLFWinitconfig _glfwInitHints =
|
||||||
{
|
{
|
||||||
GLFW_TRUE, // hat buttons
|
true, // hat buttons
|
||||||
GLFW_FALSE, // debug keyboard
|
false, // debug keyboard
|
||||||
GLFW_TRUE, // enable joystick
|
true, // enable joystick
|
||||||
{
|
{
|
||||||
GLFW_TRUE, // macOS menu bar
|
true, // macOS menu bar
|
||||||
GLFW_TRUE // macOS bundle chdir
|
true // macOS bundle chdir
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -92,7 +92,7 @@ static void terminate(void)
|
|||||||
_glfwTerminateVulkan();
|
_glfwTerminateVulkan();
|
||||||
_glfwPlatformTerminate();
|
_glfwPlatformTerminate();
|
||||||
|
|
||||||
_glfw.initialized = GLFW_FALSE;
|
_glfw.initialized = false;
|
||||||
|
|
||||||
while (_glfw.errorListHead)
|
while (_glfw.errorListHead)
|
||||||
{
|
{
|
||||||
@ -215,7 +215,7 @@ _glfwDebug(const char *format, ...) {
|
|||||||
GLFWAPI int glfwInit(void)
|
GLFWAPI int glfwInit(void)
|
||||||
{
|
{
|
||||||
if (_glfw.initialized)
|
if (_glfw.initialized)
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
|
|
||||||
memset(&_glfw, 0, sizeof(_glfw));
|
memset(&_glfw, 0, sizeof(_glfw));
|
||||||
_glfw.hints.init = _glfwInitHints;
|
_glfw.hints.init = _glfwInitHints;
|
||||||
@ -223,7 +223,7 @@ GLFWAPI int glfwInit(void)
|
|||||||
if (!_glfwPlatformInit())
|
if (!_glfwPlatformInit())
|
||||||
{
|
{
|
||||||
terminate();
|
terminate();
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!_glfwPlatformCreateMutex(&_glfw.errorLock) ||
|
if (!_glfwPlatformCreateMutex(&_glfw.errorLock) ||
|
||||||
@ -231,12 +231,12 @@ GLFWAPI int glfwInit(void)
|
|||||||
!_glfwPlatformCreateTls(&_glfw.contextSlot))
|
!_glfwPlatformCreateTls(&_glfw.contextSlot))
|
||||||
{
|
{
|
||||||
terminate();
|
terminate();
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
_glfwPlatformSetTls(&_glfw.errorSlot, &_glfwMainThreadError);
|
_glfwPlatformSetTls(&_glfw.errorSlot, &_glfwMainThreadError);
|
||||||
|
|
||||||
_glfw.initialized = GLFW_TRUE;
|
_glfw.initialized = true;
|
||||||
_glfw.timer.offset = _glfwPlatformGetTimerValue();
|
_glfw.timer.offset = _glfwPlatformGetTimerValue();
|
||||||
|
|
||||||
glfwDefaultWindowHints();
|
glfwDefaultWindowHints();
|
||||||
@ -249,12 +249,12 @@ GLFWAPI int glfwInit(void)
|
|||||||
if (!glfwUpdateGamepadMappings(_glfwDefaultMappings[i]))
|
if (!glfwUpdateGamepadMappings(_glfwDefaultMappings[i]))
|
||||||
{
|
{
|
||||||
terminate();
|
terminate();
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
GLFWAPI void glfwTerminate(void)
|
GLFWAPI void glfwTerminate(void)
|
||||||
|
|||||||
60
glfw/input.c
vendored
60
glfw/input.c
vendored
@ -62,13 +62,13 @@ static bool isValidElementForJoystick(const _GLFWmapelement* e,
|
|||||||
const _GLFWjoystick* js)
|
const _GLFWjoystick* js)
|
||||||
{
|
{
|
||||||
if (e->type == _GLFW_JOYSTICK_HATBIT && (e->index >> 4) >= js->hatCount)
|
if (e->type == _GLFW_JOYSTICK_HATBIT && (e->index >> 4) >= js->hatCount)
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
else if (e->type == _GLFW_JOYSTICK_BUTTON && e->index >= js->buttonCount)
|
else if (e->type == _GLFW_JOYSTICK_BUTTON && e->index >= js->buttonCount)
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
else if (e->type == _GLFW_JOYSTICK_AXIS && e->index >= js->axisCount)
|
else if (e->type == _GLFW_JOYSTICK_AXIS && e->index >= js->axisCount)
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
|
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Finds a mapping based on joystick GUID and verifies element indices
|
// Finds a mapping based on joystick GUID and verifies element indices
|
||||||
@ -148,7 +148,7 @@ static bool parseMapping(_GLFWmapping* mapping, const char* string)
|
|||||||
if (length != 32 || c[length] != ',')
|
if (length != 32 || c[length] != ',')
|
||||||
{
|
{
|
||||||
_glfwInputError(GLFW_INVALID_VALUE, NULL);
|
_glfwInputError(GLFW_INVALID_VALUE, NULL);
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
memcpy(mapping->guid, c, length);
|
memcpy(mapping->guid, c, length);
|
||||||
@ -158,7 +158,7 @@ static bool parseMapping(_GLFWmapping* mapping, const char* string)
|
|||||||
if (length >= sizeof(mapping->name) || c[length] != ',')
|
if (length >= sizeof(mapping->name) || c[length] != ',')
|
||||||
{
|
{
|
||||||
_glfwInputError(GLFW_INVALID_VALUE, NULL);
|
_glfwInputError(GLFW_INVALID_VALUE, NULL);
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
memcpy(mapping->name, c, length);
|
memcpy(mapping->name, c, length);
|
||||||
@ -168,7 +168,7 @@ static bool parseMapping(_GLFWmapping* mapping, const char* string)
|
|||||||
{
|
{
|
||||||
// TODO: Implement output modifiers
|
// TODO: Implement output modifiers
|
||||||
if (*c == '+' || *c == '-')
|
if (*c == '+' || *c == '-')
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
|
|
||||||
for (i = 0; i < sizeof(fields) / sizeof(fields[0]); i++)
|
for (i = 0; i < sizeof(fields) / sizeof(fields[0]); i++)
|
||||||
{
|
{
|
||||||
@ -229,7 +229,7 @@ static bool parseMapping(_GLFWmapping* mapping, const char* string)
|
|||||||
{
|
{
|
||||||
length = strlen(_GLFW_PLATFORM_MAPPING_NAME);
|
length = strlen(_GLFW_PLATFORM_MAPPING_NAME);
|
||||||
if (strncmp(c, _GLFW_PLATFORM_MAPPING_NAME, length) != 0)
|
if (strncmp(c, _GLFW_PLATFORM_MAPPING_NAME, length) != 0)
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@ -246,7 +246,7 @@ static bool parseMapping(_GLFWmapping* mapping, const char* string)
|
|||||||
}
|
}
|
||||||
|
|
||||||
_glfwPlatformUpdateGamepadGUID(mapping->guid);
|
_glfwPlatformUpdateGamepadGUID(mapping->guid);
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -260,13 +260,13 @@ void _glfwInputKeyboard(_GLFWwindow* window, int key, int scancode, int action,
|
|||||||
{
|
{
|
||||||
if (key >= 0 && key <= GLFW_KEY_LAST)
|
if (key >= 0 && key <= GLFW_KEY_LAST)
|
||||||
{
|
{
|
||||||
bool repeated = GLFW_FALSE;
|
bool repeated = false;
|
||||||
|
|
||||||
if (action == GLFW_RELEASE && window->keys[key] == GLFW_RELEASE)
|
if (action == GLFW_RELEASE && window->keys[key] == GLFW_RELEASE)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (action == GLFW_PRESS && window->keys[key] == GLFW_PRESS)
|
if (action == GLFW_PRESS && window->keys[key] == GLFW_PRESS)
|
||||||
repeated = GLFW_TRUE;
|
repeated = true;
|
||||||
|
|
||||||
if (action == GLFW_RELEASE && window->stickyKeys)
|
if (action == GLFW_RELEASE && window->stickyKeys)
|
||||||
window->keys[key] = _GLFW_STICK;
|
window->keys[key] = _GLFW_STICK;
|
||||||
@ -406,7 +406,7 @@ _GLFWjoystick* _glfwAllocJoystick(const char* name,
|
|||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
js = _glfw.joysticks + jid;
|
js = _glfw.joysticks + jid;
|
||||||
js->present = GLFW_TRUE;
|
js->present = true;
|
||||||
js->name = _glfw_strdup(name);
|
js->name = _glfw_strdup(name);
|
||||||
js->axes = calloc(axisCount, sizeof(float));
|
js->axes = calloc(axisCount, sizeof(float));
|
||||||
js->buttons = calloc(buttonCount + hatCount * 4, 1);
|
js->buttons = calloc(buttonCount + hatCount * 4, 1);
|
||||||
@ -633,7 +633,7 @@ GLFWAPI void glfwSetInputMode(GLFWwindow* handle, int mode, int value)
|
|||||||
}
|
}
|
||||||
else if (mode == GLFW_STICKY_KEYS)
|
else if (mode == GLFW_STICKY_KEYS)
|
||||||
{
|
{
|
||||||
value = value ? GLFW_TRUE : GLFW_FALSE;
|
value = value ? true : false;
|
||||||
if (window->stickyKeys == value)
|
if (window->stickyKeys == value)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -653,7 +653,7 @@ GLFWAPI void glfwSetInputMode(GLFWwindow* handle, int mode, int value)
|
|||||||
}
|
}
|
||||||
else if (mode == GLFW_STICKY_MOUSE_BUTTONS)
|
else if (mode == GLFW_STICKY_MOUSE_BUTTONS)
|
||||||
{
|
{
|
||||||
value = value ? GLFW_TRUE : GLFW_FALSE;
|
value = value ? true : false;
|
||||||
if (window->stickyMouseButtons == value)
|
if (window->stickyMouseButtons == value)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -672,7 +672,7 @@ GLFWAPI void glfwSetInputMode(GLFWwindow* handle, int mode, int value)
|
|||||||
window->stickyMouseButtons = value;
|
window->stickyMouseButtons = value;
|
||||||
}
|
}
|
||||||
else if (mode == GLFW_LOCK_KEY_MODS)
|
else if (mode == GLFW_LOCK_KEY_MODS)
|
||||||
window->lockKeyMods = value ? GLFW_TRUE : GLFW_FALSE;
|
window->lockKeyMods = value ? true : false;
|
||||||
else
|
else
|
||||||
_glfwInputError(GLFW_INVALID_ENUM, "Invalid input mode 0x%08X", mode);
|
_glfwInputError(GLFW_INVALID_ENUM, "Invalid input mode 0x%08X", mode);
|
||||||
}
|
}
|
||||||
@ -988,17 +988,17 @@ GLFWAPI int glfwJoystickPresent(int jid)
|
|||||||
assert(jid >= GLFW_JOYSTICK_1);
|
assert(jid >= GLFW_JOYSTICK_1);
|
||||||
assert(jid <= GLFW_JOYSTICK_LAST);
|
assert(jid <= GLFW_JOYSTICK_LAST);
|
||||||
|
|
||||||
_GLFW_REQUIRE_INIT_OR_RETURN(GLFW_FALSE);
|
_GLFW_REQUIRE_INIT_OR_RETURN(false);
|
||||||
|
|
||||||
if (jid < 0 || jid > GLFW_JOYSTICK_LAST)
|
if (jid < 0 || jid > GLFW_JOYSTICK_LAST)
|
||||||
{
|
{
|
||||||
_glfwInputError(GLFW_INVALID_ENUM, "Invalid joystick ID %i", jid);
|
_glfwInputError(GLFW_INVALID_ENUM, "Invalid joystick ID %i", jid);
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
js = _glfw.joysticks + jid;
|
js = _glfw.joysticks + jid;
|
||||||
if (!js->present)
|
if (!js->present)
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
|
|
||||||
return _glfwPlatformPollJoystick(js, _GLFW_POLL_PRESENCE);
|
return _glfwPlatformPollJoystick(js, _GLFW_POLL_PRESENCE);
|
||||||
}
|
}
|
||||||
@ -1190,7 +1190,7 @@ GLFWAPI int glfwUpdateGamepadMappings(const char* string)
|
|||||||
|
|
||||||
assert(string != NULL);
|
assert(string != NULL);
|
||||||
|
|
||||||
_GLFW_REQUIRE_INIT_OR_RETURN(GLFW_FALSE);
|
_GLFW_REQUIRE_INIT_OR_RETURN(false);
|
||||||
|
|
||||||
while (*c)
|
while (*c)
|
||||||
{
|
{
|
||||||
@ -1240,7 +1240,7 @@ GLFWAPI int glfwUpdateGamepadMappings(const char* string)
|
|||||||
js->mapping = findValidMapping(js);
|
js->mapping = findValidMapping(js);
|
||||||
}
|
}
|
||||||
|
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
GLFWAPI int glfwJoystickIsGamepad(int jid)
|
GLFWAPI int glfwJoystickIsGamepad(int jid)
|
||||||
@ -1250,20 +1250,20 @@ GLFWAPI int glfwJoystickIsGamepad(int jid)
|
|||||||
assert(jid >= GLFW_JOYSTICK_1);
|
assert(jid >= GLFW_JOYSTICK_1);
|
||||||
assert(jid <= GLFW_JOYSTICK_LAST);
|
assert(jid <= GLFW_JOYSTICK_LAST);
|
||||||
|
|
||||||
_GLFW_REQUIRE_INIT_OR_RETURN(GLFW_FALSE);
|
_GLFW_REQUIRE_INIT_OR_RETURN(false);
|
||||||
|
|
||||||
if (jid < 0 || jid > GLFW_JOYSTICK_LAST)
|
if (jid < 0 || jid > GLFW_JOYSTICK_LAST)
|
||||||
{
|
{
|
||||||
_glfwInputError(GLFW_INVALID_ENUM, "Invalid joystick ID %i", jid);
|
_glfwInputError(GLFW_INVALID_ENUM, "Invalid joystick ID %i", jid);
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
js = _glfw.joysticks + jid;
|
js = _glfw.joysticks + jid;
|
||||||
if (!js->present)
|
if (!js->present)
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
|
|
||||||
if (!_glfwPlatformPollJoystick(js, _GLFW_POLL_PRESENCE))
|
if (!_glfwPlatformPollJoystick(js, _GLFW_POLL_PRESENCE))
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
|
|
||||||
return js->mapping != NULL;
|
return js->mapping != NULL;
|
||||||
}
|
}
|
||||||
@ -1307,23 +1307,23 @@ GLFWAPI int glfwGetGamepadState(int jid, GLFWgamepadstate* state)
|
|||||||
|
|
||||||
memset(state, 0, sizeof(GLFWgamepadstate));
|
memset(state, 0, sizeof(GLFWgamepadstate));
|
||||||
|
|
||||||
_GLFW_REQUIRE_INIT_OR_RETURN(GLFW_FALSE);
|
_GLFW_REQUIRE_INIT_OR_RETURN(false);
|
||||||
|
|
||||||
if (jid < 0 || jid > GLFW_JOYSTICK_LAST)
|
if (jid < 0 || jid > GLFW_JOYSTICK_LAST)
|
||||||
{
|
{
|
||||||
_glfwInputError(GLFW_INVALID_ENUM, "Invalid joystick ID %i", jid);
|
_glfwInputError(GLFW_INVALID_ENUM, "Invalid joystick ID %i", jid);
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
js = _glfw.joysticks + jid;
|
js = _glfw.joysticks + jid;
|
||||||
if (!js->present)
|
if (!js->present)
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
|
|
||||||
if (!_glfwPlatformPollJoystick(js, _GLFW_POLL_ALL))
|
if (!_glfwPlatformPollJoystick(js, _GLFW_POLL_ALL))
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
|
|
||||||
if (!js->mapping)
|
if (!js->mapping)
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
|
|
||||||
for (i = 0; i <= GLFW_GAMEPAD_BUTTON_LAST; i++)
|
for (i = 0; i <= GLFW_GAMEPAD_BUTTON_LAST; i++)
|
||||||
{
|
{
|
||||||
@ -1364,7 +1364,7 @@ GLFWAPI int glfwGetGamepadState(int jid, GLFWgamepadstate* state)
|
|||||||
state->axes[i] = (float) js->buttons[e->index];
|
state->axes[i] = (float) js->buttons[e->index];
|
||||||
}
|
}
|
||||||
|
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
GLFWAPI void glfwSetClipboardString(GLFWwindow* handle, const char* string)
|
GLFWAPI void glfwSetClipboardString(GLFWwindow* handle, const char* string)
|
||||||
|
|||||||
20
glfw/linux_joystick.c
vendored
20
glfw/linux_joystick.c
vendored
@ -142,12 +142,12 @@ static bool openJoystickDevice(const char* path)
|
|||||||
if (!_glfw.joysticks[jid].present)
|
if (!_glfw.joysticks[jid].present)
|
||||||
continue;
|
continue;
|
||||||
if (strcmp(_glfw.joysticks[jid].linjs.path, path) == 0)
|
if (strcmp(_glfw.joysticks[jid].linjs.path, path) == 0)
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
linjs.fd = open(path, O_RDONLY | O_NONBLOCK);
|
linjs.fd = open(path, O_RDONLY | O_NONBLOCK);
|
||||||
if (linjs.fd == -1)
|
if (linjs.fd == -1)
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
|
|
||||||
if (ioctl(linjs.fd, EVIOCGBIT(0, sizeof(evBits)), evBits) < 0 ||
|
if (ioctl(linjs.fd, EVIOCGBIT(0, sizeof(evBits)), evBits) < 0 ||
|
||||||
ioctl(linjs.fd, EVIOCGBIT(EV_KEY, sizeof(keyBits)), keyBits) < 0 ||
|
ioctl(linjs.fd, EVIOCGBIT(EV_KEY, sizeof(keyBits)), keyBits) < 0 ||
|
||||||
@ -158,14 +158,14 @@ static bool openJoystickDevice(const char* path)
|
|||||||
"Linux: Failed to query input device: %s",
|
"Linux: Failed to query input device: %s",
|
||||||
strerror(errno));
|
strerror(errno));
|
||||||
close(linjs.fd);
|
close(linjs.fd);
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ensure this device supports the events expected of a joystick
|
// Ensure this device supports the events expected of a joystick
|
||||||
if (!isBitSet(EV_KEY, evBits) || !isBitSet(EV_ABS, evBits))
|
if (!isBitSet(EV_KEY, evBits) || !isBitSet(EV_ABS, evBits))
|
||||||
{
|
{
|
||||||
close(linjs.fd);
|
close(linjs.fd);
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ioctl(linjs.fd, EVIOCGNAME(sizeof(name)), name) < 0)
|
if (ioctl(linjs.fd, EVIOCGNAME(sizeof(name)), name) < 0)
|
||||||
@ -225,7 +225,7 @@ static bool openJoystickDevice(const char* path)
|
|||||||
if (!js)
|
if (!js)
|
||||||
{
|
{
|
||||||
close(linjs.fd);
|
close(linjs.fd);
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
strncpy(linjs.path, path, sizeof(linjs.path) - 1);
|
strncpy(linjs.path, path, sizeof(linjs.path) - 1);
|
||||||
@ -234,7 +234,7 @@ static bool openJoystickDevice(const char* path)
|
|||||||
pollAbsState(js);
|
pollAbsState(js);
|
||||||
|
|
||||||
_glfwInputJoystick(js, GLFW_CONNECTED);
|
_glfwInputJoystick(js, GLFW_CONNECTED);
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
#undef isBitSet
|
#undef isBitSet
|
||||||
@ -286,7 +286,7 @@ bool _glfwInitJoysticksLinux(void)
|
|||||||
if (regcomp(&_glfw.linjs.regex, "^event[0-9]\\+$", 0) != 0)
|
if (regcomp(&_glfw.linjs.regex, "^event[0-9]\\+$", 0) != 0)
|
||||||
{
|
{
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR, "Linux: Failed to compile regex");
|
_glfwInputError(GLFW_PLATFORM_ERROR, "Linux: Failed to compile regex");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
dir = opendir(dirname);
|
dir = opendir(dirname);
|
||||||
@ -315,7 +315,7 @@ bool _glfwInitJoysticksLinux(void)
|
|||||||
// Continue with no joysticks if enumeration fails
|
// Continue with no joysticks if enumeration fails
|
||||||
|
|
||||||
qsort(_glfw.joysticks, count, sizeof(_GLFWjoystick), compareJoysticks);
|
qsort(_glfw.joysticks, count, sizeof(_GLFWjoystick), compareJoysticks);
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Close all opened joystick handles
|
// Close all opened joystick handles
|
||||||
@ -408,10 +408,10 @@ int _glfwPlatformPollJoystick(_GLFWjoystick* js, int mode)
|
|||||||
if (e.type == EV_SYN)
|
if (e.type == EV_SYN)
|
||||||
{
|
{
|
||||||
if (e.code == SYN_DROPPED)
|
if (e.code == SYN_DROPPED)
|
||||||
_glfw.linjs.dropped = GLFW_TRUE;
|
_glfw.linjs.dropped = true;
|
||||||
else if (e.code == SYN_REPORT)
|
else if (e.code == SYN_REPORT)
|
||||||
{
|
{
|
||||||
_glfw.linjs.dropped = GLFW_FALSE;
|
_glfw.linjs.dropped = false;
|
||||||
pollAbsState(js);
|
pollAbsState(js);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
6
glfw/main_loop.h
vendored
6
glfw/main_loop.h
vendored
@ -12,20 +12,20 @@
|
|||||||
#define GLFW_LOOP_BACKEND x11
|
#define GLFW_LOOP_BACKEND x11
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static bool keep_going = GLFW_FALSE;
|
static bool keep_going = false;
|
||||||
|
|
||||||
void _glfwPlatformRequestTickCallback() {
|
void _glfwPlatformRequestTickCallback() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void _glfwPlatformStopMainLoop(void) {
|
void _glfwPlatformStopMainLoop(void) {
|
||||||
if (keep_going) {
|
if (keep_going) {
|
||||||
keep_going = GLFW_FALSE;
|
keep_going = false;
|
||||||
_glfwPlatformPostEmptyEvent();
|
_glfwPlatformPostEmptyEvent();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void _glfwPlatformRunMainLoop(GLFWtickcallback tick_callback, void* data) {
|
void _glfwPlatformRunMainLoop(GLFWtickcallback tick_callback, void* data) {
|
||||||
keep_going = GLFW_TRUE;
|
keep_going = true;
|
||||||
while(keep_going) {
|
while(keep_going) {
|
||||||
_glfwPlatformWaitEvents();
|
_glfwPlatformWaitEvents();
|
||||||
EVDBG("loop tick");
|
EVDBG("loop tick");
|
||||||
|
|||||||
6
glfw/monitor.c
vendored
6
glfw/monitor.c
vendored
@ -66,11 +66,11 @@ static bool refreshVideoModes(_GLFWmonitor* monitor)
|
|||||||
GLFWvidmode* modes;
|
GLFWvidmode* modes;
|
||||||
|
|
||||||
if (monitor->modes)
|
if (monitor->modes)
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
|
|
||||||
modes = _glfwPlatformGetVideoModes(monitor, &modeCount);
|
modes = _glfwPlatformGetVideoModes(monitor, &modeCount);
|
||||||
if (!modes)
|
if (!modes)
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
|
|
||||||
qsort(modes, modeCount, sizeof(GLFWvidmode), compareVideoModes);
|
qsort(modes, modeCount, sizeof(GLFWvidmode), compareVideoModes);
|
||||||
|
|
||||||
@ -78,7 +78,7 @@ static bool refreshVideoModes(_GLFWmonitor* monitor)
|
|||||||
monitor->modes = modes;
|
monitor->modes = modes;
|
||||||
monitor->modeCount = modeCount;
|
monitor->modeCount = modeCount;
|
||||||
|
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -54,7 +54,7 @@ static void swapIntervalNSGL(int interval)
|
|||||||
static int extensionSupportedNSGL(const char* extension)
|
static int extensionSupportedNSGL(const char* extension)
|
||||||
{
|
{
|
||||||
// There are no NSGL extensions
|
// There are no NSGL extensions
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static GLFWglproc getProcAddressNSGL(const char* procname)
|
static GLFWglproc getProcAddressNSGL(const char* procname)
|
||||||
@ -90,7 +90,7 @@ static void destroyContextNSGL(_GLFWwindow* window)
|
|||||||
bool _glfwInitNSGL(void)
|
bool _glfwInitNSGL(void)
|
||||||
{
|
{
|
||||||
if (_glfw.nsgl.framework)
|
if (_glfw.nsgl.framework)
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
|
|
||||||
_glfw.nsgl.framework =
|
_glfw.nsgl.framework =
|
||||||
CFBundleGetBundleWithIdentifier(CFSTR("com.apple.opengl"));
|
CFBundleGetBundleWithIdentifier(CFSTR("com.apple.opengl"));
|
||||||
@ -98,10 +98,10 @@ bool _glfwInitNSGL(void)
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_API_UNAVAILABLE,
|
_glfwInputError(GLFW_API_UNAVAILABLE,
|
||||||
"NSGL: Failed to locate OpenGL framework");
|
"NSGL: Failed to locate OpenGL framework");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Terminate OpenGL support
|
// Terminate OpenGL support
|
||||||
@ -120,7 +120,7 @@ bool _glfwCreateContextNSGL(_GLFWwindow* window,
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_API_UNAVAILABLE,
|
_glfwInputError(GLFW_API_UNAVAILABLE,
|
||||||
"NSGL: OpenGL ES is not available on macOS");
|
"NSGL: OpenGL ES is not available on macOS");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ctxconfig->major > 2)
|
if (ctxconfig->major > 2)
|
||||||
@ -129,7 +129,7 @@ bool _glfwCreateContextNSGL(_GLFWwindow* window,
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_VERSION_UNAVAILABLE,
|
_glfwInputError(GLFW_VERSION_UNAVAILABLE,
|
||||||
"NSGL: The targeted version of macOS does not support OpenGL 3.0 or 3.1 but may support 3.2 and above");
|
"NSGL: The targeted version of macOS does not support OpenGL 3.0 or 3.1 but may support 3.2 and above");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -231,7 +231,7 @@ bool _glfwCreateContextNSGL(_GLFWwindow* window,
|
|||||||
#if MAC_OS_X_VERSION_MAX_ALLOWED >= 101200
|
#if MAC_OS_X_VERSION_MAX_ALLOWED >= 101200
|
||||||
_glfwInputError(GLFW_FORMAT_UNAVAILABLE,
|
_glfwInputError(GLFW_FORMAT_UNAVAILABLE,
|
||||||
"NSGL: Stereo rendering is deprecated");
|
"NSGL: Stereo rendering is deprecated");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
#else
|
#else
|
||||||
addAttrib(NSOpenGLPFAStereo);
|
addAttrib(NSOpenGLPFAStereo);
|
||||||
#endif
|
#endif
|
||||||
@ -267,7 +267,7 @@ bool _glfwCreateContextNSGL(_GLFWwindow* window,
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_FORMAT_UNAVAILABLE,
|
_glfwInputError(GLFW_FORMAT_UNAVAILABLE,
|
||||||
"NSGL: Failed to find a suitable pixel format");
|
"NSGL: Failed to find a suitable pixel format");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
NSOpenGLContext* share = NULL;
|
NSOpenGLContext* share = NULL;
|
||||||
@ -282,7 +282,7 @@ bool _glfwCreateContextNSGL(_GLFWwindow* window,
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_VERSION_UNAVAILABLE,
|
_glfwInputError(GLFW_VERSION_UNAVAILABLE,
|
||||||
"NSGL: Failed to create OpenGL context");
|
"NSGL: Failed to create OpenGL context");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fbconfig->transparent)
|
if (fbconfig->transparent)
|
||||||
@ -307,7 +307,7 @@ bool _glfwCreateContextNSGL(_GLFWwindow* window,
|
|||||||
window->context.getProcAddress = getProcAddressNSGL;
|
window->context.getProcAddress = getProcAddressNSGL;
|
||||||
window->context.destroy = destroyContextNSGL;
|
window->context.destroy = destroyContextNSGL;
|
||||||
|
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
2
glfw/null_init.c
vendored
2
glfw/null_init.c
vendored
@ -35,7 +35,7 @@
|
|||||||
int _glfwPlatformInit(void)
|
int _glfwPlatformInit(void)
|
||||||
{
|
{
|
||||||
_glfwInitTimerPOSIX();
|
_glfwInitTimerPOSIX();
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void _glfwPlatformTerminate(void)
|
void _glfwPlatformTerminate(void)
|
||||||
|
|||||||
2
glfw/null_joystick.c
vendored
2
glfw/null_joystick.c
vendored
@ -33,7 +33,7 @@
|
|||||||
|
|
||||||
int _glfwPlatformPollJoystick(_GLFWjoystick* js, int mode)
|
int _glfwPlatformPollJoystick(_GLFWjoystick* js, int mode)
|
||||||
{
|
{
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void _glfwPlatformUpdateGamepadGUID(char* guid)
|
void _glfwPlatformUpdateGamepadGUID(char* guid)
|
||||||
|
|||||||
2
glfw/null_monitor.c
vendored
2
glfw/null_monitor.c
vendored
@ -64,7 +64,7 @@ void _glfwPlatformGetVideoMode(_GLFWmonitor* monitor, GLFWvidmode* mode)
|
|||||||
|
|
||||||
bool _glfwPlatformGetGammaRamp(_GLFWmonitor* monitor, GLFWgammaramp* ramp)
|
bool _glfwPlatformGetGammaRamp(_GLFWmonitor* monitor, GLFWgammaramp* ramp)
|
||||||
{
|
{
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void _glfwPlatformSetGammaRamp(_GLFWmonitor* monitor, const GLFWgammaramp* ramp)
|
void _glfwPlatformSetGammaRamp(_GLFWmonitor* monitor, const GLFWgammaramp* ramp)
|
||||||
|
|||||||
34
glfw/null_window.c
vendored
34
glfw/null_window.c
vendored
@ -34,7 +34,7 @@ static int createNativeWindow(_GLFWwindow* window,
|
|||||||
window->null.width = wndconfig->width;
|
window->null.width = wndconfig->width;
|
||||||
window->null.height = wndconfig->height;
|
window->null.height = wndconfig->height;
|
||||||
|
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -48,7 +48,7 @@ int _glfwPlatformCreateWindow(_GLFWwindow* window,
|
|||||||
const _GLFWfbconfig* fbconfig)
|
const _GLFWfbconfig* fbconfig)
|
||||||
{
|
{
|
||||||
if (!createNativeWindow(window, wndconfig))
|
if (!createNativeWindow(window, wndconfig))
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
|
|
||||||
if (ctxconfig->client != GLFW_NO_API)
|
if (ctxconfig->client != GLFW_NO_API)
|
||||||
{
|
{
|
||||||
@ -56,18 +56,18 @@ int _glfwPlatformCreateWindow(_GLFWwindow* window,
|
|||||||
ctxconfig->source == GLFW_OSMESA_CONTEXT_API)
|
ctxconfig->source == GLFW_OSMESA_CONTEXT_API)
|
||||||
{
|
{
|
||||||
if (!_glfwInitOSMesa())
|
if (!_glfwInitOSMesa())
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
if (!_glfwCreateContextOSMesa(window, ctxconfig, fbconfig))
|
if (!_glfwCreateContextOSMesa(window, ctxconfig, fbconfig))
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_glfwInputError(GLFW_API_UNAVAILABLE, "Null: EGL not available");
|
_glfwInputError(GLFW_API_UNAVAILABLE, "Null: EGL not available");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void _glfwPlatformDestroyWindow(_GLFWwindow* window)
|
void _glfwPlatformDestroyWindow(_GLFWwindow* window)
|
||||||
@ -167,17 +167,17 @@ void _glfwPlatformMaximizeWindow(_GLFWwindow* window)
|
|||||||
|
|
||||||
int _glfwPlatformWindowMaximized(_GLFWwindow* window)
|
int _glfwPlatformWindowMaximized(_GLFWwindow* window)
|
||||||
{
|
{
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
int _glfwPlatformWindowHovered(_GLFWwindow* window)
|
int _glfwPlatformWindowHovered(_GLFWwindow* window)
|
||||||
{
|
{
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
int _glfwPlatformFramebufferTransparent(_GLFWwindow* window)
|
int _glfwPlatformFramebufferTransparent(_GLFWwindow* window)
|
||||||
{
|
{
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void _glfwPlatformSetWindowResizable(_GLFWwindow* window, bool enabled)
|
void _glfwPlatformSetWindowResizable(_GLFWwindow* window, bool enabled)
|
||||||
@ -212,7 +212,7 @@ void _glfwPlatformRequestWindowAttention(_GLFWwindow* window)
|
|||||||
|
|
||||||
int _glfwPlatformWindowBell(_GLFWwindow* window)
|
int _glfwPlatformWindowBell(_GLFWwindow* window)
|
||||||
{
|
{
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void _glfwPlatformUnhideWindow(_GLFWwindow* window)
|
void _glfwPlatformUnhideWindow(_GLFWwindow* window)
|
||||||
@ -229,22 +229,22 @@ void _glfwPlatformFocusWindow(_GLFWwindow* window)
|
|||||||
|
|
||||||
int _glfwPlatformWindowFocused(_GLFWwindow* window)
|
int _glfwPlatformWindowFocused(_GLFWwindow* window)
|
||||||
{
|
{
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
int _glfwPlatformWindowOccluded(_GLFWwindow* window)
|
int _glfwPlatformWindowOccluded(_GLFWwindow* window)
|
||||||
{
|
{
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
int _glfwPlatformWindowIconified(_GLFWwindow* window)
|
int _glfwPlatformWindowIconified(_GLFWwindow* window)
|
||||||
{
|
{
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
int _glfwPlatformWindowVisible(_GLFWwindow* window)
|
int _glfwPlatformWindowVisible(_GLFWwindow* window)
|
||||||
{
|
{
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void _glfwPlatformPollEvents(void)
|
void _glfwPlatformPollEvents(void)
|
||||||
@ -279,12 +279,12 @@ int _glfwPlatformCreateCursor(_GLFWcursor* cursor,
|
|||||||
const GLFWimage* image,
|
const GLFWimage* image,
|
||||||
int xhot, int yhot, int count)
|
int xhot, int yhot, int count)
|
||||||
{
|
{
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
int _glfwPlatformCreateStandardCursor(_GLFWcursor* cursor, int shape)
|
int _glfwPlatformCreateStandardCursor(_GLFWcursor* cursor, int shape)
|
||||||
{
|
{
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void _glfwPlatformDestroyCursor(_GLFWcursor* cursor)
|
void _glfwPlatformDestroyCursor(_GLFWcursor* cursor)
|
||||||
@ -322,7 +322,7 @@ int _glfwPlatformGetPhysicalDevicePresentationSupport(VkInstance instance,
|
|||||||
VkPhysicalDevice device,
|
VkPhysicalDevice device,
|
||||||
uint32_t queuefamily)
|
uint32_t queuefamily)
|
||||||
{
|
{
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
VkResult _glfwPlatformCreateWindowSurface(VkInstance instance,
|
VkResult _glfwPlatformCreateWindowSurface(VkInstance instance,
|
||||||
|
|||||||
32
glfw/osmesa_context.c
vendored
32
glfw/osmesa_context.c
vendored
@ -100,7 +100,7 @@ static void swapIntervalOSMesa(int interval)
|
|||||||
static int extensionSupportedOSMesa(const char* extension)
|
static int extensionSupportedOSMesa(const char* extension)
|
||||||
{
|
{
|
||||||
// OSMesa does not have extensions
|
// OSMesa does not have extensions
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -130,7 +130,7 @@ bool _glfwInitOSMesa(void)
|
|||||||
};
|
};
|
||||||
|
|
||||||
if (_glfw.osmesa.handle)
|
if (_glfw.osmesa.handle)
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
|
|
||||||
for (i = 0; sonames[i]; i++)
|
for (i = 0; sonames[i]; i++)
|
||||||
{
|
{
|
||||||
@ -142,7 +142,7 @@ bool _glfwInitOSMesa(void)
|
|||||||
if (!_glfw.osmesa.handle)
|
if (!_glfw.osmesa.handle)
|
||||||
{
|
{
|
||||||
_glfwInputError(GLFW_API_UNAVAILABLE, "OSMesa: Library not found");
|
_glfwInputError(GLFW_API_UNAVAILABLE, "OSMesa: Library not found");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
_glfw.osmesa.CreateContextExt = (PFN_OSMesaCreateContextExt)
|
_glfw.osmesa.CreateContextExt = (PFN_OSMesaCreateContextExt)
|
||||||
@ -171,10 +171,10 @@ bool _glfwInitOSMesa(void)
|
|||||||
"OSMesa: Failed to load required entry points");
|
"OSMesa: Failed to load required entry points");
|
||||||
|
|
||||||
_glfwTerminateOSMesa();
|
_glfwTerminateOSMesa();
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void _glfwTerminateOSMesa(void)
|
void _glfwTerminateOSMesa(void)
|
||||||
@ -207,7 +207,7 @@ bool _glfwCreateContextOSMesa(_GLFWwindow* window,
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_API_UNAVAILABLE,
|
_glfwInputError(GLFW_API_UNAVAILABLE,
|
||||||
"OSMesa: OpenGL ES is not available on OSMesa");
|
"OSMesa: OpenGL ES is not available on OSMesa");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ctxconfig->share)
|
if (ctxconfig->share)
|
||||||
@ -241,7 +241,7 @@ bool _glfwCreateContextOSMesa(_GLFWwindow* window,
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_VERSION_UNAVAILABLE,
|
_glfwInputError(GLFW_VERSION_UNAVAILABLE,
|
||||||
"OSMesa: Forward-compatible contexts not supported");
|
"OSMesa: Forward-compatible contexts not supported");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
setAttrib(0, 0);
|
setAttrib(0, 0);
|
||||||
@ -255,7 +255,7 @@ bool _glfwCreateContextOSMesa(_GLFWwindow* window,
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_VERSION_UNAVAILABLE,
|
_glfwInputError(GLFW_VERSION_UNAVAILABLE,
|
||||||
"OSMesa: OpenGL profiles unavailable");
|
"OSMesa: OpenGL profiles unavailable");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
window->context.osmesa.handle =
|
window->context.osmesa.handle =
|
||||||
@ -270,7 +270,7 @@ bool _glfwCreateContextOSMesa(_GLFWwindow* window,
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_VERSION_UNAVAILABLE,
|
_glfwInputError(GLFW_VERSION_UNAVAILABLE,
|
||||||
"OSMesa: Failed to create context");
|
"OSMesa: Failed to create context");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
window->context.makeCurrent = makeContextCurrentOSMesa;
|
window->context.makeCurrent = makeContextCurrentOSMesa;
|
||||||
@ -280,7 +280,7 @@ bool _glfwCreateContextOSMesa(_GLFWwindow* window,
|
|||||||
window->context.getProcAddress = getProcAddressOSMesa;
|
window->context.getProcAddress = getProcAddressOSMesa;
|
||||||
window->context.destroy = destroyContextOSMesa;
|
window->context.destroy = destroyContextOSMesa;
|
||||||
|
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
#undef setAttrib
|
#undef setAttrib
|
||||||
@ -298,7 +298,7 @@ GLFWAPI int glfwGetOSMesaColorBuffer(GLFWwindow* handle, int* width,
|
|||||||
_GLFWwindow* window = (_GLFWwindow*) handle;
|
_GLFWwindow* window = (_GLFWwindow*) handle;
|
||||||
assert(window != NULL);
|
assert(window != NULL);
|
||||||
|
|
||||||
_GLFW_REQUIRE_INIT_OR_RETURN(GLFW_FALSE);
|
_GLFW_REQUIRE_INIT_OR_RETURN(false);
|
||||||
|
|
||||||
if (!OSMesaGetColorBuffer(window->context.osmesa.handle,
|
if (!OSMesaGetColorBuffer(window->context.osmesa.handle,
|
||||||
&mesaWidth, &mesaHeight,
|
&mesaWidth, &mesaHeight,
|
||||||
@ -306,7 +306,7 @@ GLFWAPI int glfwGetOSMesaColorBuffer(GLFWwindow* handle, int* width,
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||||
"OSMesa: Failed to retrieve color buffer");
|
"OSMesa: Failed to retrieve color buffer");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (width)
|
if (width)
|
||||||
@ -318,7 +318,7 @@ GLFWAPI int glfwGetOSMesaColorBuffer(GLFWwindow* handle, int* width,
|
|||||||
if (buffer)
|
if (buffer)
|
||||||
*buffer = mesaBuffer;
|
*buffer = mesaBuffer;
|
||||||
|
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
GLFWAPI int glfwGetOSMesaDepthBuffer(GLFWwindow* handle,
|
GLFWAPI int glfwGetOSMesaDepthBuffer(GLFWwindow* handle,
|
||||||
@ -331,7 +331,7 @@ GLFWAPI int glfwGetOSMesaDepthBuffer(GLFWwindow* handle,
|
|||||||
_GLFWwindow* window = (_GLFWwindow*) handle;
|
_GLFWwindow* window = (_GLFWwindow*) handle;
|
||||||
assert(window != NULL);
|
assert(window != NULL);
|
||||||
|
|
||||||
_GLFW_REQUIRE_INIT_OR_RETURN(GLFW_FALSE);
|
_GLFW_REQUIRE_INIT_OR_RETURN(false);
|
||||||
|
|
||||||
if (!OSMesaGetDepthBuffer(window->context.osmesa.handle,
|
if (!OSMesaGetDepthBuffer(window->context.osmesa.handle,
|
||||||
&mesaWidth, &mesaHeight,
|
&mesaWidth, &mesaHeight,
|
||||||
@ -339,7 +339,7 @@ GLFWAPI int glfwGetOSMesaDepthBuffer(GLFWwindow* handle,
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||||
"OSMesa: Failed to retrieve depth buffer");
|
"OSMesa: Failed to retrieve depth buffer");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (width)
|
if (width)
|
||||||
@ -351,7 +351,7 @@ GLFWAPI int glfwGetOSMesaDepthBuffer(GLFWwindow* handle,
|
|||||||
if (buffer)
|
if (buffer)
|
||||||
*buffer = mesaBuffer;
|
*buffer = mesaBuffer;
|
||||||
|
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
GLFWAPI OSMesaContext glfwGetOSMesaContext(GLFWwindow* handle)
|
GLFWAPI OSMesaContext glfwGetOSMesaContext(GLFWwindow* handle)
|
||||||
|
|||||||
22
glfw/posix_thread.c
vendored
22
glfw/posix_thread.c
vendored
@ -37,17 +37,17 @@
|
|||||||
|
|
||||||
bool _glfwPlatformCreateTls(_GLFWtls* tls)
|
bool _glfwPlatformCreateTls(_GLFWtls* tls)
|
||||||
{
|
{
|
||||||
assert(tls->posix.allocated == GLFW_FALSE);
|
assert(tls->posix.allocated == false);
|
||||||
|
|
||||||
if (pthread_key_create(&tls->posix.key, NULL) != 0)
|
if (pthread_key_create(&tls->posix.key, NULL) != 0)
|
||||||
{
|
{
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||||
"POSIX: Failed to create context TLS");
|
"POSIX: Failed to create context TLS");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
tls->posix.allocated = GLFW_TRUE;
|
tls->posix.allocated = true;
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void _glfwPlatformDestroyTls(_GLFWtls* tls)
|
void _glfwPlatformDestroyTls(_GLFWtls* tls)
|
||||||
@ -59,27 +59,27 @@ void _glfwPlatformDestroyTls(_GLFWtls* tls)
|
|||||||
|
|
||||||
void* _glfwPlatformGetTls(_GLFWtls* tls)
|
void* _glfwPlatformGetTls(_GLFWtls* tls)
|
||||||
{
|
{
|
||||||
assert(tls->posix.allocated == GLFW_TRUE);
|
assert(tls->posix.allocated == true);
|
||||||
return pthread_getspecific(tls->posix.key);
|
return pthread_getspecific(tls->posix.key);
|
||||||
}
|
}
|
||||||
|
|
||||||
void _glfwPlatformSetTls(_GLFWtls* tls, void* value)
|
void _glfwPlatformSetTls(_GLFWtls* tls, void* value)
|
||||||
{
|
{
|
||||||
assert(tls->posix.allocated == GLFW_TRUE);
|
assert(tls->posix.allocated == true);
|
||||||
pthread_setspecific(tls->posix.key, value);
|
pthread_setspecific(tls->posix.key, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool _glfwPlatformCreateMutex(_GLFWmutex* mutex)
|
bool _glfwPlatformCreateMutex(_GLFWmutex* mutex)
|
||||||
{
|
{
|
||||||
assert(mutex->posix.allocated == GLFW_FALSE);
|
assert(mutex->posix.allocated == false);
|
||||||
|
|
||||||
if (pthread_mutex_init(&mutex->posix.handle, NULL) != 0)
|
if (pthread_mutex_init(&mutex->posix.handle, NULL) != 0)
|
||||||
{
|
{
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR, "POSIX: Failed to create mutex");
|
_glfwInputError(GLFW_PLATFORM_ERROR, "POSIX: Failed to create mutex");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return mutex->posix.allocated = GLFW_TRUE;
|
return mutex->posix.allocated = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void _glfwPlatformDestroyMutex(_GLFWmutex* mutex)
|
void _glfwPlatformDestroyMutex(_GLFWmutex* mutex)
|
||||||
@ -91,13 +91,13 @@ void _glfwPlatformDestroyMutex(_GLFWmutex* mutex)
|
|||||||
|
|
||||||
void _glfwPlatformLockMutex(_GLFWmutex* mutex)
|
void _glfwPlatformLockMutex(_GLFWmutex* mutex)
|
||||||
{
|
{
|
||||||
assert(mutex->posix.allocated == GLFW_TRUE);
|
assert(mutex->posix.allocated == true);
|
||||||
pthread_mutex_lock(&mutex->posix.handle);
|
pthread_mutex_lock(&mutex->posix.handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
void _glfwPlatformUnlockMutex(_GLFWmutex* mutex)
|
void _glfwPlatformUnlockMutex(_GLFWmutex* mutex)
|
||||||
{
|
{
|
||||||
assert(mutex->posix.allocated == GLFW_TRUE);
|
assert(mutex->posix.allocated == true);
|
||||||
pthread_mutex_unlock(&mutex->posix.handle);
|
pthread_mutex_unlock(&mutex->posix.handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
4
glfw/posix_time.c
vendored
4
glfw/posix_time.c
vendored
@ -44,13 +44,13 @@ void _glfwInitTimerPOSIX(void)
|
|||||||
|
|
||||||
if (clock_gettime(CLOCK_MONOTONIC, &ts) == 0)
|
if (clock_gettime(CLOCK_MONOTONIC, &ts) == 0)
|
||||||
{
|
{
|
||||||
_glfw.timer.posix.monotonic = GLFW_TRUE;
|
_glfw.timer.posix.monotonic = true;
|
||||||
_glfw.timer.posix.frequency = 1000000000;
|
_glfw.timer.posix.frequency = 1000000000;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
_glfw.timer.posix.monotonic = GLFW_FALSE;
|
_glfw.timer.posix.monotonic = false;
|
||||||
_glfw.timer.posix.frequency = 1000000;
|
_glfw.timer.posix.frequency = 1000000;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
36
glfw/vulkan.c
vendored
36
glfw/vulkan.c
vendored
@ -46,7 +46,7 @@ bool _glfwInitVulkan(int mode)
|
|||||||
uint32_t i, count;
|
uint32_t i, count;
|
||||||
|
|
||||||
if (_glfw.vk.available)
|
if (_glfw.vk.available)
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
|
|
||||||
#if !defined(_GLFW_VULKAN_STATIC)
|
#if !defined(_GLFW_VULKAN_STATIC)
|
||||||
#if defined(_GLFW_VULKAN_LIBRARY)
|
#if defined(_GLFW_VULKAN_LIBRARY)
|
||||||
@ -63,7 +63,7 @@ bool _glfwInitVulkan(int mode)
|
|||||||
if (mode == _GLFW_REQUIRE_LOADER)
|
if (mode == _GLFW_REQUIRE_LOADER)
|
||||||
_glfwInputError(GLFW_API_UNAVAILABLE, "Vulkan: Loader not found");
|
_glfwInputError(GLFW_API_UNAVAILABLE, "Vulkan: Loader not found");
|
||||||
|
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
_glfw.vk.GetInstanceProcAddr = (PFN_vkGetInstanceProcAddr)
|
_glfw.vk.GetInstanceProcAddr = (PFN_vkGetInstanceProcAddr)
|
||||||
@ -74,7 +74,7 @@ bool _glfwInitVulkan(int mode)
|
|||||||
"Vulkan: Loader does not export vkGetInstanceProcAddr");
|
"Vulkan: Loader does not export vkGetInstanceProcAddr");
|
||||||
|
|
||||||
_glfwTerminateVulkan();
|
_glfwTerminateVulkan();
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
_glfw.vk.EnumerateInstanceExtensionProperties = (PFN_vkEnumerateInstanceExtensionProperties)
|
_glfw.vk.EnumerateInstanceExtensionProperties = (PFN_vkEnumerateInstanceExtensionProperties)
|
||||||
@ -85,7 +85,7 @@ bool _glfwInitVulkan(int mode)
|
|||||||
"Vulkan: Failed to retrieve vkEnumerateInstanceExtensionProperties");
|
"Vulkan: Failed to retrieve vkEnumerateInstanceExtensionProperties");
|
||||||
|
|
||||||
_glfwTerminateVulkan();
|
_glfwTerminateVulkan();
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
#endif // _GLFW_VULKAN_STATIC
|
#endif // _GLFW_VULKAN_STATIC
|
||||||
|
|
||||||
@ -101,7 +101,7 @@ bool _glfwInitVulkan(int mode)
|
|||||||
}
|
}
|
||||||
|
|
||||||
_glfwTerminateVulkan();
|
_glfwTerminateVulkan();
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
ep = calloc(count, sizeof(VkExtensionProperties));
|
ep = calloc(count, sizeof(VkExtensionProperties));
|
||||||
@ -115,37 +115,37 @@ bool _glfwInitVulkan(int mode)
|
|||||||
|
|
||||||
free(ep);
|
free(ep);
|
||||||
_glfwTerminateVulkan();
|
_glfwTerminateVulkan();
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < count; i++)
|
for (i = 0; i < count; i++)
|
||||||
{
|
{
|
||||||
if (strcmp(ep[i].extensionName, "VK_KHR_surface") == 0)
|
if (strcmp(ep[i].extensionName, "VK_KHR_surface") == 0)
|
||||||
_glfw.vk.KHR_surface = GLFW_TRUE;
|
_glfw.vk.KHR_surface = true;
|
||||||
#if defined(_GLFW_WIN32)
|
#if defined(_GLFW_WIN32)
|
||||||
else if (strcmp(ep[i].extensionName, "VK_KHR_win32_surface") == 0)
|
else if (strcmp(ep[i].extensionName, "VK_KHR_win32_surface") == 0)
|
||||||
_glfw.vk.KHR_win32_surface = GLFW_TRUE;
|
_glfw.vk.KHR_win32_surface = true;
|
||||||
#elif defined(_GLFW_COCOA)
|
#elif defined(_GLFW_COCOA)
|
||||||
else if (strcmp(ep[i].extensionName, "VK_MVK_macos_surface") == 0)
|
else if (strcmp(ep[i].extensionName, "VK_MVK_macos_surface") == 0)
|
||||||
_glfw.vk.MVK_macos_surface = GLFW_TRUE;
|
_glfw.vk.MVK_macos_surface = true;
|
||||||
#elif defined(_GLFW_X11)
|
#elif defined(_GLFW_X11)
|
||||||
else if (strcmp(ep[i].extensionName, "VK_KHR_xlib_surface") == 0)
|
else if (strcmp(ep[i].extensionName, "VK_KHR_xlib_surface") == 0)
|
||||||
_glfw.vk.KHR_xlib_surface = GLFW_TRUE;
|
_glfw.vk.KHR_xlib_surface = true;
|
||||||
else if (strcmp(ep[i].extensionName, "VK_KHR_xcb_surface") == 0)
|
else if (strcmp(ep[i].extensionName, "VK_KHR_xcb_surface") == 0)
|
||||||
_glfw.vk.KHR_xcb_surface = GLFW_TRUE;
|
_glfw.vk.KHR_xcb_surface = true;
|
||||||
#elif defined(_GLFW_WAYLAND)
|
#elif defined(_GLFW_WAYLAND)
|
||||||
else if (strcmp(ep[i].extensionName, "VK_KHR_wayland_surface") == 0)
|
else if (strcmp(ep[i].extensionName, "VK_KHR_wayland_surface") == 0)
|
||||||
_glfw.vk.KHR_wayland_surface = GLFW_TRUE;
|
_glfw.vk.KHR_wayland_surface = true;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
free(ep);
|
free(ep);
|
||||||
|
|
||||||
_glfw.vk.available = GLFW_TRUE;
|
_glfw.vk.available = true;
|
||||||
|
|
||||||
_glfwPlatformGetRequiredInstanceExtensions(_glfw.vk.extensions);
|
_glfwPlatformGetRequiredInstanceExtensions(_glfw.vk.extensions);
|
||||||
|
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void _glfwTerminateVulkan(void)
|
void _glfwTerminateVulkan(void)
|
||||||
@ -218,7 +218,7 @@ const char* _glfwGetVulkanResultString(VkResult result)
|
|||||||
|
|
||||||
GLFWAPI int glfwVulkanSupported(void)
|
GLFWAPI int glfwVulkanSupported(void)
|
||||||
{
|
{
|
||||||
_GLFW_REQUIRE_INIT_OR_RETURN(GLFW_FALSE);
|
_GLFW_REQUIRE_INIT_OR_RETURN(false);
|
||||||
return _glfwInitVulkan(_GLFW_FIND_LOADER);
|
return _glfwInitVulkan(_GLFW_FIND_LOADER);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -273,16 +273,16 @@ GLFWAPI int glfwGetPhysicalDevicePresentationSupport(VkInstance instance,
|
|||||||
assert(instance != VK_NULL_HANDLE);
|
assert(instance != VK_NULL_HANDLE);
|
||||||
assert(device != VK_NULL_HANDLE);
|
assert(device != VK_NULL_HANDLE);
|
||||||
|
|
||||||
_GLFW_REQUIRE_INIT_OR_RETURN(GLFW_FALSE);
|
_GLFW_REQUIRE_INIT_OR_RETURN(false);
|
||||||
|
|
||||||
if (!_glfwInitVulkan(_GLFW_REQUIRE_LOADER))
|
if (!_glfwInitVulkan(_GLFW_REQUIRE_LOADER))
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
|
|
||||||
if (!_glfw.vk.extensions[0])
|
if (!_glfw.vk.extensions[0])
|
||||||
{
|
{
|
||||||
_glfwInputError(GLFW_API_UNAVAILABLE,
|
_glfwInputError(GLFW_API_UNAVAILABLE,
|
||||||
"Vulkan: Window surface creation extensions not found");
|
"Vulkan: Window surface creation extensions not found");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return _glfwPlatformGetPhysicalDevicePresentationSupport(instance,
|
return _glfwPlatformGetPhysicalDevicePresentationSupport(instance,
|
||||||
|
|||||||
54
glfw/wgl_context.c
vendored
54
glfw/wgl_context.c
vendored
@ -122,9 +122,9 @@ static int choosePixelFormat(_GLFWwindow* window,
|
|||||||
u->auxBuffers = getPixelFormatAttrib(window, n, WGL_AUX_BUFFERS_ARB);
|
u->auxBuffers = getPixelFormatAttrib(window, n, WGL_AUX_BUFFERS_ARB);
|
||||||
|
|
||||||
if (getPixelFormatAttrib(window, n, WGL_STEREO_ARB))
|
if (getPixelFormatAttrib(window, n, WGL_STEREO_ARB))
|
||||||
u->stereo = GLFW_TRUE;
|
u->stereo = true;
|
||||||
if (getPixelFormatAttrib(window, n, WGL_DOUBLE_BUFFER_ARB))
|
if (getPixelFormatAttrib(window, n, WGL_DOUBLE_BUFFER_ARB))
|
||||||
u->doublebuffer = GLFW_TRUE;
|
u->doublebuffer = true;
|
||||||
|
|
||||||
if (_glfw.wgl.ARB_multisample)
|
if (_glfw.wgl.ARB_multisample)
|
||||||
u->samples = getPixelFormatAttrib(window, n, WGL_SAMPLES_ARB);
|
u->samples = getPixelFormatAttrib(window, n, WGL_SAMPLES_ARB);
|
||||||
@ -135,7 +135,7 @@ static int choosePixelFormat(_GLFWwindow* window,
|
|||||||
_glfw.wgl.EXT_framebuffer_sRGB)
|
_glfw.wgl.EXT_framebuffer_sRGB)
|
||||||
{
|
{
|
||||||
if (getPixelFormatAttrib(window, n, WGL_FRAMEBUFFER_SRGB_CAPABLE_ARB))
|
if (getPixelFormatAttrib(window, n, WGL_FRAMEBUFFER_SRGB_CAPABLE_ARB))
|
||||||
u->sRGB = GLFW_TRUE;
|
u->sRGB = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -145,7 +145,7 @@ static int choosePixelFormat(_GLFWwindow* window,
|
|||||||
if (getPixelFormatAttrib(window, n, WGL_COLORSPACE_EXT) ==
|
if (getPixelFormatAttrib(window, n, WGL_COLORSPACE_EXT) ==
|
||||||
WGL_COLORSPACE_SRGB_EXT)
|
WGL_COLORSPACE_SRGB_EXT)
|
||||||
{
|
{
|
||||||
u->sRGB = GLFW_TRUE;
|
u->sRGB = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -195,9 +195,9 @@ static int choosePixelFormat(_GLFWwindow* window,
|
|||||||
u->auxBuffers = pfd.cAuxBuffers;
|
u->auxBuffers = pfd.cAuxBuffers;
|
||||||
|
|
||||||
if (pfd.dwFlags & PFD_STEREO)
|
if (pfd.dwFlags & PFD_STEREO)
|
||||||
u->stereo = GLFW_TRUE;
|
u->stereo = true;
|
||||||
if (pfd.dwFlags & PFD_DOUBLEBUFFER)
|
if (pfd.dwFlags & PFD_DOUBLEBUFFER)
|
||||||
u->doublebuffer = GLFW_TRUE;
|
u->doublebuffer = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
u->handle = n;
|
u->handle = n;
|
||||||
@ -308,7 +308,7 @@ static int extensionSupportedWGL(const char* extension)
|
|||||||
if (extensions)
|
if (extensions)
|
||||||
{
|
{
|
||||||
if (_glfwStringInExtensionString(extension, extensions))
|
if (_glfwStringInExtensionString(extension, extensions))
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -318,11 +318,11 @@ static int extensionSupportedWGL(const char* extension)
|
|||||||
if (extensions)
|
if (extensions)
|
||||||
{
|
{
|
||||||
if (_glfwStringInExtensionString(extension, extensions))
|
if (_glfwStringInExtensionString(extension, extensions))
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static GLFWglproc getProcAddressWGL(const char* procname)
|
static GLFWglproc getProcAddressWGL(const char* procname)
|
||||||
@ -359,14 +359,14 @@ bool _glfwInitWGL(void)
|
|||||||
HDC pdc, dc;
|
HDC pdc, dc;
|
||||||
|
|
||||||
if (_glfw.wgl.instance)
|
if (_glfw.wgl.instance)
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
|
|
||||||
_glfw.wgl.instance = LoadLibraryA("opengl32.dll");
|
_glfw.wgl.instance = LoadLibraryA("opengl32.dll");
|
||||||
if (!_glfw.wgl.instance)
|
if (!_glfw.wgl.instance)
|
||||||
{
|
{
|
||||||
_glfwInputErrorWin32(GLFW_PLATFORM_ERROR,
|
_glfwInputErrorWin32(GLFW_PLATFORM_ERROR,
|
||||||
"WGL: Failed to load opengl32.dll");
|
"WGL: Failed to load opengl32.dll");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
_glfw.wgl.CreateContext = (PFN_wglCreateContext)
|
_glfw.wgl.CreateContext = (PFN_wglCreateContext)
|
||||||
@ -402,7 +402,7 @@ bool _glfwInitWGL(void)
|
|||||||
{
|
{
|
||||||
_glfwInputErrorWin32(GLFW_PLATFORM_ERROR,
|
_glfwInputErrorWin32(GLFW_PLATFORM_ERROR,
|
||||||
"WGL: Failed to set pixel format for dummy context");
|
"WGL: Failed to set pixel format for dummy context");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
rc = wglCreateContext(dc);
|
rc = wglCreateContext(dc);
|
||||||
@ -410,7 +410,7 @@ bool _glfwInitWGL(void)
|
|||||||
{
|
{
|
||||||
_glfwInputErrorWin32(GLFW_PLATFORM_ERROR,
|
_glfwInputErrorWin32(GLFW_PLATFORM_ERROR,
|
||||||
"WGL: Failed to create dummy context");
|
"WGL: Failed to create dummy context");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
pdc = wglGetCurrentDC();
|
pdc = wglGetCurrentDC();
|
||||||
@ -422,7 +422,7 @@ bool _glfwInitWGL(void)
|
|||||||
"WGL: Failed to make dummy context current");
|
"WGL: Failed to make dummy context current");
|
||||||
wglMakeCurrent(pdc, prc);
|
wglMakeCurrent(pdc, prc);
|
||||||
wglDeleteContext(rc);
|
wglDeleteContext(rc);
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// NOTE: Functions must be loaded first as they're needed to retrieve the
|
// NOTE: Functions must be loaded first as they're needed to retrieve the
|
||||||
@ -467,7 +467,7 @@ bool _glfwInitWGL(void)
|
|||||||
|
|
||||||
wglMakeCurrent(pdc, prc);
|
wglMakeCurrent(pdc, prc);
|
||||||
wglDeleteContext(rc);
|
wglDeleteContext(rc);
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Terminate WGL
|
// Terminate WGL
|
||||||
@ -504,26 +504,26 @@ bool _glfwCreateContextWGL(_GLFWwindow* window,
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||||
"WGL: Failed to retrieve DC for window");
|
"WGL: Failed to retrieve DC for window");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
pixelFormat = choosePixelFormat(window, ctxconfig, fbconfig);
|
pixelFormat = choosePixelFormat(window, ctxconfig, fbconfig);
|
||||||
if (!pixelFormat)
|
if (!pixelFormat)
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
|
|
||||||
if (!DescribePixelFormat(window->context.wgl.dc,
|
if (!DescribePixelFormat(window->context.wgl.dc,
|
||||||
pixelFormat, sizeof(pfd), &pfd))
|
pixelFormat, sizeof(pfd), &pfd))
|
||||||
{
|
{
|
||||||
_glfwInputErrorWin32(GLFW_PLATFORM_ERROR,
|
_glfwInputErrorWin32(GLFW_PLATFORM_ERROR,
|
||||||
"WGL: Failed to retrieve PFD for selected pixel format");
|
"WGL: Failed to retrieve PFD for selected pixel format");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!SetPixelFormat(window->context.wgl.dc, pixelFormat, &pfd))
|
if (!SetPixelFormat(window->context.wgl.dc, pixelFormat, &pfd))
|
||||||
{
|
{
|
||||||
_glfwInputErrorWin32(GLFW_PLATFORM_ERROR,
|
_glfwInputErrorWin32(GLFW_PLATFORM_ERROR,
|
||||||
"WGL: Failed to set selected pixel format");
|
"WGL: Failed to set selected pixel format");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ctxconfig->client == GLFW_OPENGL_API)
|
if (ctxconfig->client == GLFW_OPENGL_API)
|
||||||
@ -534,7 +534,7 @@ bool _glfwCreateContextWGL(_GLFWwindow* window,
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_VERSION_UNAVAILABLE,
|
_glfwInputError(GLFW_VERSION_UNAVAILABLE,
|
||||||
"WGL: A forward compatible OpenGL context requested but WGL_ARB_create_context is unavailable");
|
"WGL: A forward compatible OpenGL context requested but WGL_ARB_create_context is unavailable");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -544,7 +544,7 @@ bool _glfwCreateContextWGL(_GLFWwindow* window,
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_VERSION_UNAVAILABLE,
|
_glfwInputError(GLFW_VERSION_UNAVAILABLE,
|
||||||
"WGL: OpenGL profile requested but WGL_ARB_create_context_profile is unavailable");
|
"WGL: OpenGL profile requested but WGL_ARB_create_context_profile is unavailable");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -556,7 +556,7 @@ bool _glfwCreateContextWGL(_GLFWwindow* window,
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_API_UNAVAILABLE,
|
_glfwInputError(GLFW_API_UNAVAILABLE,
|
||||||
"WGL: OpenGL ES requested but WGL_ARB_create_context_es2_profile is unavailable");
|
"WGL: OpenGL ES requested but WGL_ARB_create_context_es2_profile is unavailable");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -619,7 +619,7 @@ bool _glfwCreateContextWGL(_GLFWwindow* window,
|
|||||||
if (ctxconfig->noerror)
|
if (ctxconfig->noerror)
|
||||||
{
|
{
|
||||||
if (_glfw.wgl.ARB_create_context_no_error)
|
if (_glfw.wgl.ARB_create_context_no_error)
|
||||||
setAttrib(WGL_CONTEXT_OPENGL_NO_ERROR_ARB, GLFW_TRUE);
|
setAttrib(WGL_CONTEXT_OPENGL_NO_ERROR_ARB, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// NOTE: Only request an explicitly versioned context when necessary, as
|
// NOTE: Only request an explicitly versioned context when necessary, as
|
||||||
@ -687,7 +687,7 @@ bool _glfwCreateContextWGL(_GLFWwindow* window,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -697,7 +697,7 @@ bool _glfwCreateContextWGL(_GLFWwindow* window,
|
|||||||
{
|
{
|
||||||
_glfwInputErrorWin32(GLFW_VERSION_UNAVAILABLE,
|
_glfwInputErrorWin32(GLFW_VERSION_UNAVAILABLE,
|
||||||
"WGL: Failed to create OpenGL context");
|
"WGL: Failed to create OpenGL context");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (share)
|
if (share)
|
||||||
@ -706,7 +706,7 @@ bool _glfwCreateContextWGL(_GLFWwindow* window,
|
|||||||
{
|
{
|
||||||
_glfwInputErrorWin32(GLFW_PLATFORM_ERROR,
|
_glfwInputErrorWin32(GLFW_PLATFORM_ERROR,
|
||||||
"WGL: Failed to enable sharing with specified OpenGL context");
|
"WGL: Failed to enable sharing with specified OpenGL context");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -718,7 +718,7 @@ bool _glfwCreateContextWGL(_GLFWwindow* window,
|
|||||||
window->context.getProcAddress = getProcAddressWGL;
|
window->context.getProcAddress = getProcAddressWGL;
|
||||||
window->context.destroy = destroyContextWGL;
|
window->context.destroy = destroyContextWGL;
|
||||||
|
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
#undef setAttrib
|
#undef setAttrib
|
||||||
|
|||||||
62
glfw/window.c
vendored
62
glfw/window.c
vendored
@ -168,7 +168,7 @@ void _glfwInputWindowDamage(_GLFWwindow* window)
|
|||||||
//
|
//
|
||||||
void _glfwInputWindowCloseRequest(_GLFWwindow* window)
|
void _glfwInputWindowCloseRequest(_GLFWwindow* window)
|
||||||
{
|
{
|
||||||
window->shouldClose = GLFW_TRUE;
|
window->shouldClose = true;
|
||||||
|
|
||||||
if (window->callbacks.close)
|
if (window->callbacks.close)
|
||||||
window->callbacks.close((GLFWwindow*) window);
|
window->callbacks.close((GLFWwindow*) window);
|
||||||
@ -300,13 +300,13 @@ void glfwDefaultWindowHints(void)
|
|||||||
|
|
||||||
// The default is a focused, visible, resizable window with decorations
|
// The default is a focused, visible, resizable window with decorations
|
||||||
memset(&_glfw.hints.window, 0, sizeof(_glfw.hints.window));
|
memset(&_glfw.hints.window, 0, sizeof(_glfw.hints.window));
|
||||||
_glfw.hints.window.resizable = GLFW_TRUE;
|
_glfw.hints.window.resizable = true;
|
||||||
_glfw.hints.window.visible = GLFW_TRUE;
|
_glfw.hints.window.visible = true;
|
||||||
_glfw.hints.window.decorated = GLFW_TRUE;
|
_glfw.hints.window.decorated = true;
|
||||||
_glfw.hints.window.focused = GLFW_TRUE;
|
_glfw.hints.window.focused = true;
|
||||||
_glfw.hints.window.autoIconify = GLFW_TRUE;
|
_glfw.hints.window.autoIconify = true;
|
||||||
_glfw.hints.window.centerCursor = GLFW_TRUE;
|
_glfw.hints.window.centerCursor = true;
|
||||||
_glfw.hints.window.focusOnShow = GLFW_TRUE;
|
_glfw.hints.window.focusOnShow = true;
|
||||||
|
|
||||||
// The default is 24 bits of color, 24 bits of depth and 8 bits of stencil,
|
// The default is 24 bits of color, 24 bits of depth and 8 bits of stencil,
|
||||||
// double buffered
|
// double buffered
|
||||||
@ -317,13 +317,13 @@ void glfwDefaultWindowHints(void)
|
|||||||
_glfw.hints.framebuffer.alphaBits = 8;
|
_glfw.hints.framebuffer.alphaBits = 8;
|
||||||
_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 = 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;
|
||||||
|
|
||||||
// The default is to use full Retina resolution framebuffers
|
// The default is to use full Retina resolution framebuffers
|
||||||
_glfw.hints.window.ns.retina = GLFW_TRUE;
|
_glfw.hints.window.ns.retina = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
GLFWAPI void glfwWindowHint(int hint, int value)
|
GLFWAPI void glfwWindowHint(int hint, int value)
|
||||||
@ -366,55 +366,55 @@ GLFWAPI void glfwWindowHint(int hint, int value)
|
|||||||
_glfw.hints.framebuffer.auxBuffers = value;
|
_glfw.hints.framebuffer.auxBuffers = value;
|
||||||
return;
|
return;
|
||||||
case GLFW_STEREO:
|
case GLFW_STEREO:
|
||||||
_glfw.hints.framebuffer.stereo = value ? GLFW_TRUE : GLFW_FALSE;
|
_glfw.hints.framebuffer.stereo = value ? true : false;
|
||||||
return;
|
return;
|
||||||
case GLFW_DOUBLEBUFFER:
|
case GLFW_DOUBLEBUFFER:
|
||||||
_glfw.hints.framebuffer.doublebuffer = value ? GLFW_TRUE : GLFW_FALSE;
|
_glfw.hints.framebuffer.doublebuffer = value ? true : false;
|
||||||
return;
|
return;
|
||||||
case GLFW_TRANSPARENT_FRAMEBUFFER:
|
case GLFW_TRANSPARENT_FRAMEBUFFER:
|
||||||
_glfw.hints.framebuffer.transparent = value ? GLFW_TRUE : GLFW_FALSE;
|
_glfw.hints.framebuffer.transparent = value ? true : false;
|
||||||
return;
|
return;
|
||||||
case GLFW_SAMPLES:
|
case GLFW_SAMPLES:
|
||||||
_glfw.hints.framebuffer.samples = value;
|
_glfw.hints.framebuffer.samples = value;
|
||||||
return;
|
return;
|
||||||
case GLFW_SRGB_CAPABLE:
|
case GLFW_SRGB_CAPABLE:
|
||||||
_glfw.hints.framebuffer.sRGB = value ? GLFW_TRUE : GLFW_FALSE;
|
_glfw.hints.framebuffer.sRGB = value ? true : false;
|
||||||
return;
|
return;
|
||||||
case GLFW_RESIZABLE:
|
case GLFW_RESIZABLE:
|
||||||
_glfw.hints.window.resizable = value ? GLFW_TRUE : GLFW_FALSE;
|
_glfw.hints.window.resizable = value ? true : false;
|
||||||
return;
|
return;
|
||||||
case GLFW_DECORATED:
|
case GLFW_DECORATED:
|
||||||
_glfw.hints.window.decorated = value ? GLFW_TRUE : GLFW_FALSE;
|
_glfw.hints.window.decorated = value ? true : false;
|
||||||
return;
|
return;
|
||||||
case GLFW_FOCUSED:
|
case GLFW_FOCUSED:
|
||||||
_glfw.hints.window.focused = value ? GLFW_TRUE : GLFW_FALSE;
|
_glfw.hints.window.focused = value ? true : false;
|
||||||
return;
|
return;
|
||||||
case GLFW_AUTO_ICONIFY:
|
case GLFW_AUTO_ICONIFY:
|
||||||
_glfw.hints.window.autoIconify = value ? GLFW_TRUE : GLFW_FALSE;
|
_glfw.hints.window.autoIconify = value ? true : false;
|
||||||
return;
|
return;
|
||||||
case GLFW_FLOATING:
|
case GLFW_FLOATING:
|
||||||
_glfw.hints.window.floating = value ? GLFW_TRUE : GLFW_FALSE;
|
_glfw.hints.window.floating = value ? true : false;
|
||||||
return;
|
return;
|
||||||
case GLFW_MAXIMIZED:
|
case GLFW_MAXIMIZED:
|
||||||
_glfw.hints.window.maximized = value ? GLFW_TRUE : GLFW_FALSE;
|
_glfw.hints.window.maximized = value ? true : false;
|
||||||
return;
|
return;
|
||||||
case GLFW_VISIBLE:
|
case GLFW_VISIBLE:
|
||||||
_glfw.hints.window.visible = value ? GLFW_TRUE : GLFW_FALSE;
|
_glfw.hints.window.visible = value ? true : false;
|
||||||
return;
|
return;
|
||||||
case GLFW_COCOA_RETINA_FRAMEBUFFER:
|
case GLFW_COCOA_RETINA_FRAMEBUFFER:
|
||||||
_glfw.hints.window.ns.retina = value ? GLFW_TRUE : GLFW_FALSE;
|
_glfw.hints.window.ns.retina = value ? true : false;
|
||||||
return;
|
return;
|
||||||
case GLFW_COCOA_GRAPHICS_SWITCHING:
|
case GLFW_COCOA_GRAPHICS_SWITCHING:
|
||||||
_glfw.hints.context.nsgl.offline = value ? GLFW_TRUE : GLFW_FALSE;
|
_glfw.hints.context.nsgl.offline = value ? true : false;
|
||||||
return;
|
return;
|
||||||
case GLFW_SCALE_TO_MONITOR:
|
case GLFW_SCALE_TO_MONITOR:
|
||||||
_glfw.hints.window.scaleToMonitor = value ? GLFW_TRUE : GLFW_FALSE;
|
_glfw.hints.window.scaleToMonitor = value ? true : false;
|
||||||
return;
|
return;
|
||||||
case GLFW_CENTER_CURSOR:
|
case GLFW_CENTER_CURSOR:
|
||||||
_glfw.hints.window.centerCursor = value ? GLFW_TRUE : GLFW_FALSE;
|
_glfw.hints.window.centerCursor = value ? true : false;
|
||||||
return;
|
return;
|
||||||
case GLFW_FOCUS_ON_SHOW:
|
case GLFW_FOCUS_ON_SHOW:
|
||||||
_glfw.hints.window.focusOnShow = value ? GLFW_TRUE : GLFW_FALSE;
|
_glfw.hints.window.focusOnShow = value ? true : false;
|
||||||
return;
|
return;
|
||||||
case GLFW_CLIENT_API:
|
case GLFW_CLIENT_API:
|
||||||
_glfw.hints.context.client = value;
|
_glfw.hints.context.client = value;
|
||||||
@ -432,13 +432,13 @@ GLFWAPI void glfwWindowHint(int hint, int value)
|
|||||||
_glfw.hints.context.robustness = value;
|
_glfw.hints.context.robustness = value;
|
||||||
return;
|
return;
|
||||||
case GLFW_OPENGL_FORWARD_COMPAT:
|
case GLFW_OPENGL_FORWARD_COMPAT:
|
||||||
_glfw.hints.context.forward = value ? GLFW_TRUE : GLFW_FALSE;
|
_glfw.hints.context.forward = value ? true : false;
|
||||||
return;
|
return;
|
||||||
case GLFW_OPENGL_DEBUG_CONTEXT:
|
case GLFW_OPENGL_DEBUG_CONTEXT:
|
||||||
_glfw.hints.context.debug = value ? GLFW_TRUE : GLFW_FALSE;
|
_glfw.hints.context.debug = value ? true : false;
|
||||||
return;
|
return;
|
||||||
case GLFW_CONTEXT_NO_ERROR:
|
case GLFW_CONTEXT_NO_ERROR:
|
||||||
_glfw.hints.context.noerror = value ? GLFW_TRUE : GLFW_FALSE;
|
_glfw.hints.context.noerror = value ? true : false;
|
||||||
return;
|
return;
|
||||||
case GLFW_OPENGL_PROFILE:
|
case GLFW_OPENGL_PROFILE:
|
||||||
_glfw.hints.context.profile = value;
|
_glfw.hints.context.profile = value;
|
||||||
@ -836,7 +836,7 @@ GLFWAPI int glfwWindowBell(GLFWwindow* handle)
|
|||||||
_GLFWwindow* window = (_GLFWwindow*) handle;
|
_GLFWwindow* window = (_GLFWwindow*) handle;
|
||||||
assert(window != NULL);
|
assert(window != NULL);
|
||||||
|
|
||||||
_GLFW_REQUIRE_INIT_OR_RETURN(GLFW_FALSE);
|
_GLFW_REQUIRE_INIT_OR_RETURN(false);
|
||||||
|
|
||||||
return _glfwPlatformWindowBell(window);
|
return _glfwPlatformWindowBell(window);
|
||||||
}
|
}
|
||||||
@ -932,7 +932,7 @@ GLFWAPI void glfwSetWindowAttrib(GLFWwindow* handle, int attrib, int value)
|
|||||||
|
|
||||||
_GLFW_REQUIRE_INIT();
|
_GLFW_REQUIRE_INIT();
|
||||||
|
|
||||||
value = value ? GLFW_TRUE : GLFW_FALSE;
|
value = value ? true : false;
|
||||||
|
|
||||||
if (attrib == GLFW_AUTO_ICONIFY)
|
if (attrib == GLFW_AUTO_ICONIFY)
|
||||||
window->autoIconify = value;
|
window->autoIconify = value;
|
||||||
|
|||||||
34
glfw/wl_init.c
vendored
34
glfw/wl_init.c
vendored
@ -103,10 +103,10 @@ static void pointerHandleEnter(void* data,
|
|||||||
_glfw.wl.pointerSerial = serial;
|
_glfw.wl.pointerSerial = serial;
|
||||||
_glfw.wl.pointerFocus = window;
|
_glfw.wl.pointerFocus = window;
|
||||||
|
|
||||||
window->wl.hovered = GLFW_TRUE;
|
window->wl.hovered = true;
|
||||||
|
|
||||||
_glfwPlatformSetCursor(window, window->wl.currentCursor);
|
_glfwPlatformSetCursor(window, window->wl.currentCursor);
|
||||||
_glfwInputCursorEnter(window, GLFW_TRUE);
|
_glfwInputCursorEnter(window, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void pointerHandleLeave(void* data,
|
static void pointerHandleLeave(void* data,
|
||||||
@ -119,11 +119,11 @@ static void pointerHandleLeave(void* data,
|
|||||||
if (!window)
|
if (!window)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
window->wl.hovered = GLFW_FALSE;
|
window->wl.hovered = false;
|
||||||
|
|
||||||
_glfw.wl.pointerSerial = serial;
|
_glfw.wl.pointerSerial = serial;
|
||||||
_glfw.wl.pointerFocus = NULL;
|
_glfw.wl.pointerFocus = NULL;
|
||||||
_glfwInputCursorEnter(window, GLFW_FALSE);
|
_glfwInputCursorEnter(window, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void setCursor(GLFWCursorShape shape)
|
static void setCursor(GLFWCursorShape shape)
|
||||||
@ -370,7 +370,7 @@ static void keyboardHandleEnter(void* data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
_glfw.wl.keyboardFocus = window;
|
_glfw.wl.keyboardFocus = window;
|
||||||
_glfwInputWindowFocus(window, GLFW_TRUE);
|
_glfwInputWindowFocus(window, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void keyboardHandleLeave(void* data,
|
static void keyboardHandleLeave(void* data,
|
||||||
@ -384,7 +384,7 @@ static void keyboardHandleLeave(void* data,
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
_glfw.wl.keyboardFocus = NULL;
|
_glfw.wl.keyboardFocus = NULL;
|
||||||
_glfwInputWindowFocus(window, GLFW_FALSE);
|
_glfwInputWindowFocus(window, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -408,12 +408,12 @@ static void keyboardHandleKey(void* data,
|
|||||||
return;
|
return;
|
||||||
int action = state == WL_KEYBOARD_KEY_STATE_PRESSED ? GLFW_PRESS : GLFW_RELEASE;
|
int action = state == WL_KEYBOARD_KEY_STATE_PRESSED ? GLFW_PRESS : GLFW_RELEASE;
|
||||||
glfw_xkb_handle_key_event(window, &_glfw.wl.xkb, key, action);
|
glfw_xkb_handle_key_event(window, &_glfw.wl.xkb, key, action);
|
||||||
bool repeatable = GLFW_FALSE;
|
bool repeatable = false;
|
||||||
|
|
||||||
if (action == GLFW_PRESS && _glfw.wl.keyboardRepeatRate > 0 && glfw_xkb_should_repeat(&_glfw.wl.xkb, key))
|
if (action == GLFW_PRESS && _glfw.wl.keyboardRepeatRate > 0 && glfw_xkb_should_repeat(&_glfw.wl.xkb, key))
|
||||||
{
|
{
|
||||||
_glfw.wl.keyRepeatInfo.key = key;
|
_glfw.wl.keyRepeatInfo.key = key;
|
||||||
repeatable = GLFW_TRUE;
|
repeatable = true;
|
||||||
_glfw.wl.keyRepeatInfo.keyboardFocus = window;
|
_glfw.wl.keyRepeatInfo.keyboardFocus = window;
|
||||||
}
|
}
|
||||||
if (repeatable) {
|
if (repeatable) {
|
||||||
@ -683,7 +683,7 @@ int _glfwPlatformInit(void)
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||||
"Wayland: failed to create self pipe");
|
"Wayland: failed to create self pipe");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
_glfw.wl.cursor.handle = _glfw_dlopen("libwayland-cursor.so.0");
|
_glfw.wl.cursor.handle = _glfw_dlopen("libwayland-cursor.so.0");
|
||||||
@ -691,7 +691,7 @@ int _glfwPlatformInit(void)
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||||
"Wayland: Failed to open libwayland-cursor");
|
"Wayland: Failed to open libwayland-cursor");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
_glfw.wl.cursor.theme_load = (PFN_wl_cursor_theme_load)
|
_glfw.wl.cursor.theme_load = (PFN_wl_cursor_theme_load)
|
||||||
@ -708,7 +708,7 @@ int _glfwPlatformInit(void)
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||||
"Wayland: Failed to open libwayland-egl");
|
"Wayland: Failed to open libwayland-egl");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
_glfw.wl.egl.window_create = (PFN_wl_egl_window_create)
|
_glfw.wl.egl.window_create = (PFN_wl_egl_window_create)
|
||||||
@ -723,7 +723,7 @@ int _glfwPlatformInit(void)
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||||
"Wayland: Failed to connect to display");
|
"Wayland: Failed to connect to display");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
initPollData(&_glfw.wl.eventLoopData, _glfw.wl.eventLoopData.wakeupFds[0], wl_display_get_fd(_glfw.wl.display));
|
initPollData(&_glfw.wl.eventLoopData, _glfw.wl.eventLoopData.wakeupFds[0], wl_display_get_fd(_glfw.wl.display));
|
||||||
glfw_dbus_init(&_glfw.wl.dbus, &_glfw.wl.eventLoopData);
|
glfw_dbus_init(&_glfw.wl.dbus, &_glfw.wl.eventLoopData);
|
||||||
@ -733,7 +733,7 @@ int _glfwPlatformInit(void)
|
|||||||
_glfw.wl.registry = wl_display_get_registry(_glfw.wl.display);
|
_glfw.wl.registry = wl_display_get_registry(_glfw.wl.display);
|
||||||
wl_registry_add_listener(_glfw.wl.registry, ®istryListener, NULL);
|
wl_registry_add_listener(_glfw.wl.registry, ®istryListener, NULL);
|
||||||
|
|
||||||
if (!glfw_xkb_create_context(&_glfw.wl.xkb)) return GLFW_FALSE;
|
if (!glfw_xkb_create_context(&_glfw.wl.xkb)) return false;
|
||||||
|
|
||||||
// Sync so we got all registry objects
|
// Sync so we got all registry objects
|
||||||
wl_display_roundtrip(_glfw.wl.display);
|
wl_display_roundtrip(_glfw.wl.display);
|
||||||
@ -744,7 +744,7 @@ int _glfwPlatformInit(void)
|
|||||||
#ifdef __linux__
|
#ifdef __linux__
|
||||||
if (_glfw.hints.init.enableJoysticks) {
|
if (_glfw.hints.init.enableJoysticks) {
|
||||||
if (!_glfwInitJoysticksLinux())
|
if (!_glfwInitJoysticksLinux())
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -753,7 +753,7 @@ int _glfwPlatformInit(void)
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||||
"Wayland: Failed to find xdg-shell in your compositor");
|
"Wayland: Failed to find xdg-shell in your compositor");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_glfw.wl.shm)
|
if (_glfw.wl.shm)
|
||||||
@ -773,13 +773,13 @@ int _glfwPlatformInit(void)
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||||
"Wayland: Unable to load default cursor theme");
|
"Wayland: Unable to load default cursor theme");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
_glfw.wl.cursorSurface =
|
_glfw.wl.cursorSurface =
|
||||||
wl_compositor_create_surface(_glfw.wl.compositor);
|
wl_compositor_create_surface(_glfw.wl.compositor);
|
||||||
}
|
}
|
||||||
|
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void _glfwPlatformTerminate(void)
|
void _glfwPlatformTerminate(void)
|
||||||
|
|||||||
2
glfw/wl_monitor.c
vendored
2
glfw/wl_monitor.c
vendored
@ -200,7 +200,7 @@ bool _glfwPlatformGetGammaRamp(_GLFWmonitor* monitor, GLFWgammaramp* ramp)
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||||
"Wayland: Gamma ramp access is not available");
|
"Wayland: Gamma ramp access is not available");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void _glfwPlatformSetGammaRamp(_GLFWmonitor* monitor, const GLFWgammaramp* ramp)
|
void _glfwPlatformSetGammaRamp(_GLFWmonitor* monitor, const GLFWgammaramp* ramp)
|
||||||
|
|||||||
106
glfw/wl_window.c
vendored
106
glfw/wl_window.c
vendored
@ -50,7 +50,7 @@ static bool checkScaleChange(_GLFWwindow* window)
|
|||||||
|
|
||||||
// Check if we will be able to set the buffer scale or not.
|
// Check if we will be able to set the buffer scale or not.
|
||||||
if (_glfw.wl.compositorVersion < 3)
|
if (_glfw.wl.compositorVersion < 3)
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
|
|
||||||
// Get the scale factor from the highest scale monitor.
|
// Get the scale factor from the highest scale monitor.
|
||||||
for (i = 0; i < window->wl.monitorsCount; ++i)
|
for (i = 0; i < window->wl.monitorsCount; ++i)
|
||||||
@ -65,9 +65,9 @@ static bool checkScaleChange(_GLFWwindow* window)
|
|||||||
{
|
{
|
||||||
window->wl.scale = scale;
|
window->wl.scale = scale;
|
||||||
wl_surface_set_buffer_scale(window->wl.surface, scale);
|
wl_surface_set_buffer_scale(window->wl.surface, scale);
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Makes the surface considered as XRGB instead of ARGB.
|
// Makes the surface considered as XRGB instead of ARGB.
|
||||||
@ -408,10 +408,10 @@ static void handleLeave(void *data,
|
|||||||
bool found;
|
bool found;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0, found = GLFW_FALSE; i < window->wl.monitorsCount - 1; ++i)
|
for (i = 0, found = false; i < window->wl.monitorsCount - 1; ++i)
|
||||||
{
|
{
|
||||||
if (monitor == window->wl.monitors[i])
|
if (monitor == window->wl.monitors[i])
|
||||||
found = GLFW_TRUE;
|
found = true;
|
||||||
if (found)
|
if (found)
|
||||||
window->wl.monitors[i] = window->wl.monitors[i + 1];
|
window->wl.monitors[i] = window->wl.monitors[i + 1];
|
||||||
}
|
}
|
||||||
@ -451,7 +451,7 @@ static bool createSurface(_GLFWwindow* window,
|
|||||||
{
|
{
|
||||||
window->wl.surface = wl_compositor_create_surface(_glfw.wl.compositor);
|
window->wl.surface = wl_compositor_create_surface(_glfw.wl.compositor);
|
||||||
if (!window->wl.surface)
|
if (!window->wl.surface)
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
|
|
||||||
wl_surface_add_listener(window->wl.surface,
|
wl_surface_add_listener(window->wl.surface,
|
||||||
&surfaceListener,
|
&surfaceListener,
|
||||||
@ -463,7 +463,7 @@ static bool createSurface(_GLFWwindow* window,
|
|||||||
wndconfig->width,
|
wndconfig->width,
|
||||||
wndconfig->height);
|
wndconfig->height);
|
||||||
if (!window->wl.native)
|
if (!window->wl.native)
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
|
|
||||||
window->wl.width = wndconfig->width;
|
window->wl.width = wndconfig->width;
|
||||||
window->wl.height = wndconfig->height;
|
window->wl.height = wndconfig->height;
|
||||||
@ -472,7 +472,7 @@ static bool createSurface(_GLFWwindow* window,
|
|||||||
if (!window->wl.transparent)
|
if (!window->wl.transparent)
|
||||||
setOpaqueRegion(window);
|
setOpaqueRegion(window);
|
||||||
|
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -513,24 +513,24 @@ static void xdgToplevelHandleConfigure(void* data,
|
|||||||
float aspectRatio;
|
float aspectRatio;
|
||||||
float targetRatio;
|
float targetRatio;
|
||||||
uint32_t* state;
|
uint32_t* state;
|
||||||
bool maximized = GLFW_FALSE;
|
bool maximized = false;
|
||||||
bool fullscreen = GLFW_FALSE;
|
bool fullscreen = false;
|
||||||
bool activated = GLFW_FALSE;
|
bool activated = false;
|
||||||
|
|
||||||
wl_array_for_each(state, states)
|
wl_array_for_each(state, states)
|
||||||
{
|
{
|
||||||
switch (*state)
|
switch (*state)
|
||||||
{
|
{
|
||||||
case XDG_TOPLEVEL_STATE_MAXIMIZED:
|
case XDG_TOPLEVEL_STATE_MAXIMIZED:
|
||||||
maximized = GLFW_TRUE;
|
maximized = true;
|
||||||
break;
|
break;
|
||||||
case XDG_TOPLEVEL_STATE_FULLSCREEN:
|
case XDG_TOPLEVEL_STATE_FULLSCREEN:
|
||||||
fullscreen = GLFW_TRUE;
|
fullscreen = true;
|
||||||
break;
|
break;
|
||||||
case XDG_TOPLEVEL_STATE_RESIZING:
|
case XDG_TOPLEVEL_STATE_RESIZING:
|
||||||
break;
|
break;
|
||||||
case XDG_TOPLEVEL_STATE_ACTIVATED:
|
case XDG_TOPLEVEL_STATE_ACTIVATED:
|
||||||
activated = GLFW_TRUE;
|
activated = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -600,7 +600,7 @@ static void setXdgDecorations(_GLFWwindow* window)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
window->wl.decorations.serverSide = GLFW_FALSE;
|
window->wl.decorations.serverSide = false;
|
||||||
createDecorations(window);
|
createDecorations(window);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -613,7 +613,7 @@ static bool createXdgSurface(_GLFWwindow* window)
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||||
"Wayland: xdg-surface creation failed");
|
"Wayland: xdg-surface creation failed");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
xdg_surface_add_listener(window->wl.xdg.surface,
|
xdg_surface_add_listener(window->wl.xdg.surface,
|
||||||
@ -625,7 +625,7 @@ static bool createXdgSurface(_GLFWwindow* window)
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||||
"Wayland: xdg-toplevel creation failed");
|
"Wayland: xdg-toplevel creation failed");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
xdg_toplevel_add_listener(window->wl.xdg.toplevel,
|
xdg_toplevel_add_listener(window->wl.xdg.toplevel,
|
||||||
@ -646,17 +646,17 @@ static bool createXdgSurface(_GLFWwindow* window)
|
|||||||
{
|
{
|
||||||
xdg_toplevel_set_fullscreen(window->wl.xdg.toplevel,
|
xdg_toplevel_set_fullscreen(window->wl.xdg.toplevel,
|
||||||
window->monitor->wl.output);
|
window->monitor->wl.output);
|
||||||
setIdleInhibitor(window, GLFW_TRUE);
|
setIdleInhibitor(window, true);
|
||||||
}
|
}
|
||||||
else if (window->wl.maximized)
|
else if (window->wl.maximized)
|
||||||
{
|
{
|
||||||
xdg_toplevel_set_maximized(window->wl.xdg.toplevel);
|
xdg_toplevel_set_maximized(window->wl.xdg.toplevel);
|
||||||
setIdleInhibitor(window, GLFW_FALSE);
|
setIdleInhibitor(window, false);
|
||||||
setXdgDecorations(window);
|
setXdgDecorations(window);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
setIdleInhibitor(window, GLFW_FALSE);
|
setIdleInhibitor(window, false);
|
||||||
setXdgDecorations(window);
|
setXdgDecorations(window);
|
||||||
}
|
}
|
||||||
if (strlen(window->wl.appId))
|
if (strlen(window->wl.appId))
|
||||||
@ -665,7 +665,7 @@ static bool createXdgSurface(_GLFWwindow* window)
|
|||||||
wl_surface_commit(window->wl.surface);
|
wl_surface_commit(window->wl.surface);
|
||||||
wl_display_roundtrip(_glfw.wl.display);
|
wl_display_roundtrip(_glfw.wl.display);
|
||||||
|
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -807,7 +807,7 @@ struct wl_cursor* _glfwLoadCursor(GLFWCursorShape shape)
|
|||||||
ans = try_cursor_names(NUMARGS(__VA_ARGS__), __VA_ARGS__); \
|
ans = try_cursor_names(NUMARGS(__VA_ARGS__), __VA_ARGS__); \
|
||||||
if (!ans && !warnings[name]) {\
|
if (!ans && !warnings[name]) {\
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR, "Wayland: Could not find standard cursor: %s", #name); \
|
_glfwInputError(GLFW_PLATFORM_ERROR, "Wayland: Could not find standard cursor: %s", #name); \
|
||||||
warnings[name] = GLFW_TRUE; \
|
warnings[name] = true; \
|
||||||
} \
|
} \
|
||||||
break; }
|
break; }
|
||||||
|
|
||||||
@ -845,7 +845,7 @@ int _glfwPlatformCreateWindow(_GLFWwindow* window,
|
|||||||
strncpy(window->wl.appId, wndconfig->wl.appId, sizeof(window->wl.appId));
|
strncpy(window->wl.appId, wndconfig->wl.appId, sizeof(window->wl.appId));
|
||||||
|
|
||||||
if (!createSurface(window, wndconfig))
|
if (!createSurface(window, wndconfig))
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
|
|
||||||
if (ctxconfig->client != GLFW_NO_API)
|
if (ctxconfig->client != GLFW_NO_API)
|
||||||
{
|
{
|
||||||
@ -853,16 +853,16 @@ int _glfwPlatformCreateWindow(_GLFWwindow* window,
|
|||||||
ctxconfig->source == GLFW_NATIVE_CONTEXT_API)
|
ctxconfig->source == GLFW_NATIVE_CONTEXT_API)
|
||||||
{
|
{
|
||||||
if (!_glfwInitEGL())
|
if (!_glfwInitEGL())
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
if (!_glfwCreateContextEGL(window, ctxconfig, fbconfig))
|
if (!_glfwCreateContextEGL(window, ctxconfig, fbconfig))
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
else if (ctxconfig->source == GLFW_OSMESA_CONTEXT_API)
|
else if (ctxconfig->source == GLFW_OSMESA_CONTEXT_API)
|
||||||
{
|
{
|
||||||
if (!_glfwInitOSMesa())
|
if (!_glfwInitOSMesa())
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
if (!_glfwCreateContextOSMesa(window, ctxconfig, fbconfig))
|
if (!_glfwCreateContextOSMesa(window, ctxconfig, fbconfig))
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -872,15 +872,15 @@ int _glfwPlatformCreateWindow(_GLFWwindow* window,
|
|||||||
if (wndconfig->visible)
|
if (wndconfig->visible)
|
||||||
{
|
{
|
||||||
if (!createXdgSurface(window))
|
if (!createXdgSurface(window))
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
|
|
||||||
window->wl.visible = GLFW_TRUE;
|
window->wl.visible = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
window->wl.xdg.surface = NULL;
|
window->wl.xdg.surface = NULL;
|
||||||
window->wl.xdg.toplevel = NULL;
|
window->wl.xdg.toplevel = NULL;
|
||||||
window->wl.visible = GLFW_FALSE;
|
window->wl.visible = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
window->wl.currentCursor = NULL;
|
window->wl.currentCursor = NULL;
|
||||||
@ -889,7 +889,7 @@ int _glfwPlatformCreateWindow(_GLFWwindow* window,
|
|||||||
window->wl.monitorsCount = 0;
|
window->wl.monitorsCount = 0;
|
||||||
window->wl.monitorsSize = 1;
|
window->wl.monitorsSize = 1;
|
||||||
|
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void _glfwPlatformDestroyWindow(_GLFWwindow* window)
|
void _glfwPlatformDestroyWindow(_GLFWwindow* window)
|
||||||
@ -897,12 +897,12 @@ void _glfwPlatformDestroyWindow(_GLFWwindow* window)
|
|||||||
if (window == _glfw.wl.pointerFocus)
|
if (window == _glfw.wl.pointerFocus)
|
||||||
{
|
{
|
||||||
_glfw.wl.pointerFocus = NULL;
|
_glfw.wl.pointerFocus = NULL;
|
||||||
_glfwInputCursorEnter(window, GLFW_FALSE);
|
_glfwInputCursorEnter(window, false);
|
||||||
}
|
}
|
||||||
if (window == _glfw.wl.keyboardFocus)
|
if (window == _glfw.wl.keyboardFocus)
|
||||||
{
|
{
|
||||||
_glfw.wl.keyboardFocus = NULL;
|
_glfw.wl.keyboardFocus = NULL;
|
||||||
_glfwInputWindowFocus(window, GLFW_FALSE);
|
_glfwInputWindowFocus(window, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (window->wl.idleInhibitor)
|
if (window->wl.idleInhibitor)
|
||||||
@ -1063,7 +1063,7 @@ void _glfwPlatformRestoreWindow(_GLFWwindow* window)
|
|||||||
// minimized, so there is nothing to do in this case.
|
// minimized, so there is nothing to do in this case.
|
||||||
}
|
}
|
||||||
_glfwInputWindowMonitor(window, NULL);
|
_glfwInputWindowMonitor(window, NULL);
|
||||||
window->wl.maximized = GLFW_FALSE;
|
window->wl.maximized = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void _glfwPlatformMaximizeWindow(_GLFWwindow* window)
|
void _glfwPlatformMaximizeWindow(_GLFWwindow* window)
|
||||||
@ -1072,7 +1072,7 @@ void _glfwPlatformMaximizeWindow(_GLFWwindow* window)
|
|||||||
{
|
{
|
||||||
xdg_toplevel_set_maximized(window->wl.xdg.toplevel);
|
xdg_toplevel_set_maximized(window->wl.xdg.toplevel);
|
||||||
}
|
}
|
||||||
window->wl.maximized = GLFW_TRUE;
|
window->wl.maximized = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void _glfwPlatformShowWindow(_GLFWwindow* window)
|
void _glfwPlatformShowWindow(_GLFWwindow* window)
|
||||||
@ -1080,7 +1080,7 @@ void _glfwPlatformShowWindow(_GLFWwindow* window)
|
|||||||
if (!window->wl.visible)
|
if (!window->wl.visible)
|
||||||
{
|
{
|
||||||
createXdgSurface(window);
|
createXdgSurface(window);
|
||||||
window->wl.visible = GLFW_TRUE;
|
window->wl.visible = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1093,17 +1093,17 @@ void _glfwPlatformHideWindow(_GLFWwindow* window)
|
|||||||
window->wl.xdg.toplevel = NULL;
|
window->wl.xdg.toplevel = NULL;
|
||||||
window->wl.xdg.surface = NULL;
|
window->wl.xdg.surface = NULL;
|
||||||
}
|
}
|
||||||
window->wl.visible = GLFW_FALSE;
|
window->wl.visible = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void _glfwPlatformRequestWindowAttention(_GLFWwindow* window)
|
void _glfwPlatformRequestWindowAttention(_GLFWwindow* window)
|
||||||
{
|
{
|
||||||
// TODO
|
// TODO
|
||||||
static bool notified = GLFW_FALSE;
|
static bool notified = false;
|
||||||
if (!notified) {
|
if (!notified) {
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||||
"Wayland: Window attention request not implemented yet");
|
"Wayland: Window attention request not implemented yet");
|
||||||
notified = GLFW_TRUE;
|
notified = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1113,11 +1113,11 @@ int _glfwPlatformWindowBell(_GLFWwindow* window)
|
|||||||
static char tty[L_ctermid + 1];
|
static char tty[L_ctermid + 1];
|
||||||
int fd = open(ctermid(tty), O_WRONLY | O_CLOEXEC);
|
int fd = open(ctermid(tty), O_WRONLY | O_CLOEXEC);
|
||||||
if (fd > -1) {
|
if (fd > -1) {
|
||||||
int ret = write(fd, "\x07", 1) == 1 ? GLFW_TRUE : GLFW_FALSE;
|
int ret = write(fd, "\x07", 1) == 1 ? true : false;
|
||||||
close(fd);
|
close(fd);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void _glfwPlatformFocusWindow(_GLFWwindow* window)
|
void _glfwPlatformFocusWindow(_GLFWwindow* window)
|
||||||
@ -1143,14 +1143,14 @@ int _glfwPlatformWindowFocused(_GLFWwindow* window)
|
|||||||
|
|
||||||
int _glfwPlatformWindowOccluded(_GLFWwindow* window)
|
int _glfwPlatformWindowOccluded(_GLFWwindow* window)
|
||||||
{
|
{
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
int _glfwPlatformWindowIconified(_GLFWwindow* window)
|
int _glfwPlatformWindowIconified(_GLFWwindow* window)
|
||||||
{
|
{
|
||||||
// xdg-shell doesn’t give any way to request whether a surface is
|
// xdg-shell doesn’t give any way to request whether a surface is
|
||||||
// iconified.
|
// iconified.
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
int _glfwPlatformWindowVisible(_GLFWwindow* window)
|
int _glfwPlatformWindowVisible(_GLFWwindow* window)
|
||||||
@ -1272,12 +1272,12 @@ int _glfwPlatformCreateCursor(_GLFWcursor* cursor,
|
|||||||
{
|
{
|
||||||
cursor->wl.buffer = createShmBuffer(image);
|
cursor->wl.buffer = createShmBuffer(image);
|
||||||
if (!cursor->wl.buffer)
|
if (!cursor->wl.buffer)
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
cursor->wl.width = image->width;
|
cursor->wl.width = image->width;
|
||||||
cursor->wl.height = image->height;
|
cursor->wl.height = image->height;
|
||||||
cursor->wl.xhot = xhot;
|
cursor->wl.xhot = xhot;
|
||||||
cursor->wl.yhot = yhot;
|
cursor->wl.yhot = yhot;
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
int _glfwPlatformCreateStandardCursor(_GLFWcursor* cursor, GLFWCursorShape shape)
|
int _glfwPlatformCreateStandardCursor(_GLFWcursor* cursor, GLFWCursorShape shape)
|
||||||
@ -1285,10 +1285,10 @@ int _glfwPlatformCreateStandardCursor(_GLFWcursor* cursor, GLFWCursorShape shape
|
|||||||
struct wl_cursor* standardCursor;
|
struct wl_cursor* standardCursor;
|
||||||
|
|
||||||
standardCursor = _glfwLoadCursor(shape);
|
standardCursor = _glfwLoadCursor(shape);
|
||||||
if (!standardCursor) return GLFW_FALSE;
|
if (!standardCursor) return false;
|
||||||
cursor->wl.cursor = standardCursor;
|
cursor->wl.cursor = standardCursor;
|
||||||
cursor->wl.currentImage = 0;
|
cursor->wl.currentImage = 0;
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void _glfwPlatformDestroyCursor(_GLFWcursor* cursor)
|
void _glfwPlatformDestroyCursor(_GLFWcursor* cursor)
|
||||||
@ -1810,7 +1810,7 @@ static inline bool _glfwEnsureDataDevice(void) {
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||||
"Wayland: Cannot use clipboard, data device manager is not ready");
|
"Wayland: Cannot use clipboard, data device manager is not ready");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!_glfw.wl.dataDevice)
|
if (!_glfw.wl.dataDevice)
|
||||||
@ -1819,16 +1819,16 @@ static inline bool _glfwEnsureDataDevice(void) {
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||||
"Wayland: Cannot use clipboard, seat is not ready");
|
"Wayland: Cannot use clipboard, seat is not ready");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
if (!_glfw.wl.dataDevice)
|
if (!_glfw.wl.dataDevice)
|
||||||
{
|
{
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||||
"Wayland: Cannot use clipboard, failed to create data device");
|
"Wayland: Cannot use clipboard, failed to create data device");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void _glfwPlatformSetClipboardString(const char* string)
|
void _glfwPlatformSetClipboardString(const char* string)
|
||||||
@ -1873,11 +1873,11 @@ const char* _glfwPlatformGetClipboardString(void)
|
|||||||
void _glfwPlatformSetPrimarySelectionString(const char* string)
|
void _glfwPlatformSetPrimarySelectionString(const char* string)
|
||||||
{
|
{
|
||||||
if (!_glfw.wl.primarySelectionDevice) {
|
if (!_glfw.wl.primarySelectionDevice) {
|
||||||
static bool warned_about_primary_selection_device = GLFW_FALSE;
|
static bool warned_about_primary_selection_device = false;
|
||||||
if (!warned_about_primary_selection_device) {
|
if (!warned_about_primary_selection_device) {
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||||
"Wayland: Cannot copy no primary selection device available");
|
"Wayland: Cannot copy no primary selection device available");
|
||||||
warned_about_primary_selection_device = GLFW_TRUE;
|
warned_about_primary_selection_device = true;
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
38
glfw/x11_init.c
vendored
38
glfw/x11_init.c
vendored
@ -199,7 +199,7 @@ static bool initExtensions(void)
|
|||||||
&_glfw.x11.xi.major,
|
&_glfw.x11.xi.major,
|
||||||
&_glfw.x11.xi.minor) == Success)
|
&_glfw.x11.xi.minor) == Success)
|
||||||
{
|
{
|
||||||
_glfw.x11.xi.available = GLFW_TRUE;
|
_glfw.x11.xi.available = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -258,7 +258,7 @@ static bool initExtensions(void)
|
|||||||
{
|
{
|
||||||
// The GLFW RandR path requires at least version 1.3
|
// The GLFW RandR path requires at least version 1.3
|
||||||
if (_glfw.x11.randr.major > 1 || _glfw.x11.randr.minor >= 3)
|
if (_glfw.x11.randr.major > 1 || _glfw.x11.randr.minor >= 3)
|
||||||
_glfw.x11.randr.available = GLFW_TRUE;
|
_glfw.x11.randr.available = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -277,14 +277,14 @@ static bool initExtensions(void)
|
|||||||
{
|
{
|
||||||
// This is likely an older Nvidia driver with broken gamma support
|
// This is likely an older Nvidia driver with broken gamma support
|
||||||
// Flag it as useless and fall back to xf86vm gamma, if available
|
// Flag it as useless and fall back to xf86vm gamma, if available
|
||||||
_glfw.x11.randr.gammaBroken = GLFW_TRUE;
|
_glfw.x11.randr.gammaBroken = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!sr->ncrtc)
|
if (!sr->ncrtc)
|
||||||
{
|
{
|
||||||
// A system without CRTCs is likely a system with broken RandR
|
// A system without CRTCs is likely a system with broken RandR
|
||||||
// Disable the RandR monitor path and fall back to core functions
|
// Disable the RandR monitor path and fall back to core functions
|
||||||
_glfw.x11.randr.monitorBroken = GLFW_TRUE;
|
_glfw.x11.randr.monitorBroken = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
XRRFreeScreenResources(sr);
|
XRRFreeScreenResources(sr);
|
||||||
@ -330,7 +330,7 @@ static bool initExtensions(void)
|
|||||||
&_glfw.x11.xinerama.minor))
|
&_glfw.x11.xinerama.minor))
|
||||||
{
|
{
|
||||||
if (XineramaIsActive(_glfw.x11.display))
|
if (XineramaIsActive(_glfw.x11.display))
|
||||||
_glfw.x11.xinerama.available = GLFW_TRUE;
|
_glfw.x11.xinerama.available = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -356,7 +356,7 @@ static bool initExtensions(void)
|
|||||||
&_glfw.x11.xrender.major,
|
&_glfw.x11.xrender.major,
|
||||||
&_glfw.x11.xrender.minor))
|
&_glfw.x11.xrender.minor))
|
||||||
{
|
{
|
||||||
_glfw.x11.xrender.available = GLFW_TRUE;
|
_glfw.x11.xrender.available = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -373,19 +373,19 @@ static bool initExtensions(void)
|
|||||||
if (!_glfw.x11.xkb.available)
|
if (!_glfw.x11.xkb.available)
|
||||||
{
|
{
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR, "X11: Failed to load Xkb extension");
|
_glfwInputError(GLFW_PLATFORM_ERROR, "X11: Failed to load Xkb extension");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
Bool supported;
|
Bool supported;
|
||||||
if (XkbSetDetectableAutoRepeat(_glfw.x11.display, True, &supported))
|
if (XkbSetDetectableAutoRepeat(_glfw.x11.display, True, &supported))
|
||||||
{
|
{
|
||||||
if (supported)
|
if (supported)
|
||||||
_glfw.x11.xkb.detectable = GLFW_TRUE;
|
_glfw.x11.xkb.detectable = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!glfw_xkb_set_x11_events_mask()) return GLFW_FALSE;
|
if (!glfw_xkb_set_x11_events_mask()) return false;
|
||||||
if (!glfw_xkb_create_context(&_glfw.x11.xkb)) return GLFW_FALSE;
|
if (!glfw_xkb_create_context(&_glfw.x11.xkb)) return false;
|
||||||
if (!glfw_xkb_update_x11_keyboard_id(&_glfw.x11.xkb)) return GLFW_FALSE;
|
if (!glfw_xkb_update_x11_keyboard_id(&_glfw.x11.xkb)) return false;
|
||||||
if (!glfw_xkb_compile_keymap(&_glfw.x11.xkb, NULL)) return GLFW_FALSE;
|
if (!glfw_xkb_compile_keymap(&_glfw.x11.xkb, NULL)) return false;
|
||||||
|
|
||||||
// Detect whether an EWMH-conformant window manager is running
|
// Detect whether an EWMH-conformant window manager is running
|
||||||
detectEWMH();
|
detectEWMH();
|
||||||
@ -457,7 +457,7 @@ static bool initExtensions(void)
|
|||||||
_glfw.x11.NET_WM_CM_Sx = XInternAtom(_glfw.x11.display, name, False);
|
_glfw.x11.NET_WM_CM_Sx = XInternAtom(_glfw.x11.display, name, False);
|
||||||
}
|
}
|
||||||
|
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Retrieve system content scale via folklore heuristics
|
// Retrieve system content scale via folklore heuristics
|
||||||
@ -624,7 +624,7 @@ int _glfwPlatformInit(void)
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||||
"X11: failed to create self pipe");
|
"X11: failed to create self pipe");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
_glfw.x11.display = XOpenDisplay(NULL);
|
_glfw.x11.display = XOpenDisplay(NULL);
|
||||||
@ -642,7 +642,7 @@ int _glfwPlatformInit(void)
|
|||||||
"X11: The DISPLAY environment variable is missing");
|
"X11: The DISPLAY environment variable is missing");
|
||||||
}
|
}
|
||||||
|
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
initPollData(&_glfw.x11.eventLoopData, _glfw.x11.eventLoopData.wakeupFds[0], ConnectionNumber(_glfw.x11.display));
|
initPollData(&_glfw.x11.eventLoopData, _glfw.x11.eventLoopData.wakeupFds[0], ConnectionNumber(_glfw.x11.display));
|
||||||
@ -654,10 +654,10 @@ int _glfwPlatformInit(void)
|
|||||||
_glfw.x11.RESOURCE_MANAGER = XInternAtom(_glfw.x11.display, "RESOURCE_MANAGER", True);
|
_glfw.x11.RESOURCE_MANAGER = XInternAtom(_glfw.x11.display, "RESOURCE_MANAGER", True);
|
||||||
XSelectInput(_glfw.x11.display, _glfw.x11.root, PropertyChangeMask);
|
XSelectInput(_glfw.x11.display, _glfw.x11.root, PropertyChangeMask);
|
||||||
|
|
||||||
_glfwGetSystemContentScaleX11(&_glfw.x11.contentScaleX, &_glfw.x11.contentScaleY, GLFW_FALSE);
|
_glfwGetSystemContentScaleX11(&_glfw.x11.contentScaleX, &_glfw.x11.contentScaleY, false);
|
||||||
|
|
||||||
if (!initExtensions())
|
if (!initExtensions())
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
|
|
||||||
_glfw.x11.helperWindowHandle = createHelperWindow();
|
_glfw.x11.helperWindowHandle = createHelperWindow();
|
||||||
_glfw.x11.hiddenCursorHandle = createHiddenCursor();
|
_glfw.x11.hiddenCursorHandle = createHiddenCursor();
|
||||||
@ -665,7 +665,7 @@ int _glfwPlatformInit(void)
|
|||||||
#if defined(__linux__)
|
#if defined(__linux__)
|
||||||
if (_glfw.hints.init.enableJoysticks) {
|
if (_glfw.hints.init.enableJoysticks) {
|
||||||
if (!_glfwInitJoysticksLinux())
|
if (!_glfwInitJoysticksLinux())
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
if (_glfw.linjs.inotify > 0)
|
if (_glfw.linjs.inotify > 0)
|
||||||
addWatch(&_glfw.x11.eventLoopData, "joystick", _glfw.linjs.inotify, POLLIN, 1, NULL, NULL);
|
addWatch(&_glfw.x11.eventLoopData, "joystick", _glfw.linjs.inotify, POLLIN, 1, NULL, NULL);
|
||||||
}
|
}
|
||||||
@ -674,7 +674,7 @@ int _glfwPlatformInit(void)
|
|||||||
_glfwInitTimerPOSIX();
|
_glfwInitTimerPOSIX();
|
||||||
|
|
||||||
_glfwPollMonitorsX11();
|
_glfwPollMonitorsX11();
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void _glfwPlatformTerminate(void)
|
void _glfwPlatformTerminate(void)
|
||||||
|
|||||||
6
glfw/x11_monitor.c
vendored
6
glfw/x11_monitor.c
vendored
@ -544,7 +544,7 @@ bool _glfwPlatformGetGammaRamp(_GLFWmonitor* monitor, GLFWgammaramp* ramp)
|
|||||||
memcpy(ramp->blue, gamma->blue, size * sizeof(unsigned short));
|
memcpy(ramp->blue, gamma->blue, size * sizeof(unsigned short));
|
||||||
|
|
||||||
XRRFreeGamma(gamma);
|
XRRFreeGamma(gamma);
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
else if (_glfw.x11.vidmode.available)
|
else if (_glfw.x11.vidmode.available)
|
||||||
{
|
{
|
||||||
@ -556,13 +556,13 @@ bool _glfwPlatformGetGammaRamp(_GLFWmonitor* monitor, GLFWgammaramp* ramp)
|
|||||||
XF86VidModeGetGammaRamp(_glfw.x11.display,
|
XF86VidModeGetGammaRamp(_glfw.x11.display,
|
||||||
_glfw.x11.screen,
|
_glfw.x11.screen,
|
||||||
ramp->size, ramp->red, ramp->green, ramp->blue);
|
ramp->size, ramp->red, ramp->green, ramp->blue);
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||||
"X11: Gamma ramp access not supported by server");
|
"X11: Gamma ramp access not supported by server");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
100
glfw/x11_window.c
vendored
100
glfw/x11_window.c
vendored
@ -76,19 +76,19 @@ static bool
|
|||||||
waitForX11Event(double timeout) {
|
waitForX11Event(double timeout) {
|
||||||
// returns true iff there is X11 data waiting to be read, does not run watches and timers
|
// returns true iff there is X11 data waiting to be read, does not run watches and timers
|
||||||
double end_time = glfwGetTime() + timeout;
|
double end_time = glfwGetTime() + timeout;
|
||||||
while(GLFW_TRUE) {
|
while(true) {
|
||||||
if (timeout >= 0) {
|
if (timeout >= 0) {
|
||||||
const int result = pollWithTimeout(_glfw.x11.eventLoopData.fds, 1, timeout);
|
const int result = pollWithTimeout(_glfw.x11.eventLoopData.fds, 1, timeout);
|
||||||
if (result > 0) return GLFW_TRUE;
|
if (result > 0) return true;
|
||||||
timeout = end_time - glfwGetTime();
|
timeout = end_time - glfwGetTime();
|
||||||
if (timeout <= 0) return GLFW_FALSE;
|
if (timeout <= 0) return false;
|
||||||
if (result < 0 && (errno == EINTR || errno == EAGAIN)) continue;
|
if (result < 0 && (errno == EINTR || errno == EAGAIN)) continue;
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
const int result = poll(_glfw.x11.eventLoopData.fds, 1, -1);
|
const int result = poll(_glfw.x11.eventLoopData.fds, 1, -1);
|
||||||
if (result > 0) return GLFW_TRUE;
|
if (result > 0) return true;
|
||||||
if (result < 0 && (errno == EINTR || errno == EAGAIN)) continue;
|
if (result < 0 && (errno == EINTR || errno == EAGAIN)) continue;
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -106,10 +106,10 @@ static bool waitForVisibilityNotify(_GLFWwindow* window)
|
|||||||
&dummy))
|
&dummy))
|
||||||
{
|
{
|
||||||
if (!waitForX11Event(0.1))
|
if (!waitForX11Event(0.1))
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns whether the window is iconified
|
// Returns whether the window is iconified
|
||||||
@ -270,7 +270,7 @@ is_window_fullscreen(_GLFWwindow* window)
|
|||||||
{
|
{
|
||||||
Atom* states;
|
Atom* states;
|
||||||
unsigned long i;
|
unsigned long i;
|
||||||
bool ans = GLFW_FALSE;
|
bool ans = false;
|
||||||
if (!_glfw.x11.NET_WM_STATE || !_glfw.x11.NET_WM_STATE_FULLSCREEN)
|
if (!_glfw.x11.NET_WM_STATE || !_glfw.x11.NET_WM_STATE_FULLSCREEN)
|
||||||
return ans;
|
return ans;
|
||||||
const unsigned long count =
|
const unsigned long count =
|
||||||
@ -283,7 +283,7 @@ is_window_fullscreen(_GLFWwindow* window)
|
|||||||
{
|
{
|
||||||
if (states[i] == _glfw.x11.NET_WM_STATE_FULLSCREEN)
|
if (states[i] == _glfw.x11.NET_WM_STATE_FULLSCREEN)
|
||||||
{
|
{
|
||||||
ans = GLFW_TRUE;
|
ans = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -551,7 +551,7 @@ static bool createNativeWindow(_GLFWwindow* window,
|
|||||||
{
|
{
|
||||||
_glfwInputErrorX11(GLFW_PLATFORM_ERROR,
|
_glfwInputErrorX11(GLFW_PLATFORM_ERROR,
|
||||||
"X11: Failed to create window");
|
"X11: Failed to create window");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
XSaveContext(_glfw.x11.display,
|
XSaveContext(_glfw.x11.display,
|
||||||
@ -561,7 +561,7 @@ static bool createNativeWindow(_GLFWwindow* window,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!wndconfig->decorated)
|
if (!wndconfig->decorated)
|
||||||
_glfwPlatformSetWindowDecorated(window, GLFW_FALSE);
|
_glfwPlatformSetWindowDecorated(window, false);
|
||||||
|
|
||||||
if (_glfw.x11.NET_WM_STATE && !window->monitor)
|
if (_glfw.x11.NET_WM_STATE && !window->monitor)
|
||||||
{
|
{
|
||||||
@ -581,7 +581,7 @@ static bool createNativeWindow(_GLFWwindow* window,
|
|||||||
{
|
{
|
||||||
states[count++] = _glfw.x11.NET_WM_STATE_MAXIMIZED_VERT;
|
states[count++] = _glfw.x11.NET_WM_STATE_MAXIMIZED_VERT;
|
||||||
states[count++] = _glfw.x11.NET_WM_STATE_MAXIMIZED_HORZ;
|
states[count++] = _glfw.x11.NET_WM_STATE_MAXIMIZED_HORZ;
|
||||||
window->x11.maximized = GLFW_TRUE;
|
window->x11.maximized = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -630,7 +630,7 @@ static bool createNativeWindow(_GLFWwindow* window,
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_OUT_OF_MEMORY,
|
_glfwInputError(GLFW_OUT_OF_MEMORY,
|
||||||
"X11: Failed to allocate WM hints");
|
"X11: Failed to allocate WM hints");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
hints->flags = StateHint;
|
hints->flags = StateHint;
|
||||||
@ -684,7 +684,7 @@ static bool createNativeWindow(_GLFWwindow* window,
|
|||||||
_glfwPlatformGetWindowPos(window, &window->x11.xpos, &window->x11.ypos);
|
_glfwPlatformGetWindowPos(window, &window->x11.xpos, &window->x11.ypos);
|
||||||
_glfwPlatformGetWindowSize(window, &window->x11.width, &window->x11.height);
|
_glfwPlatformGetWindowSize(window, &window->x11.width, &window->x11.height);
|
||||||
|
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set the specified property to the selection converted to the requested target
|
// Set the specified property to the selection converted to the requested target
|
||||||
@ -1056,7 +1056,7 @@ static void releaseMonitor(_GLFWwindow* window)
|
|||||||
static void onConfigChange(void)
|
static void onConfigChange(void)
|
||||||
{
|
{
|
||||||
float xscale, yscale;
|
float xscale, yscale;
|
||||||
_glfwGetSystemContentScaleX11(&xscale, &yscale, GLFW_TRUE);
|
_glfwGetSystemContentScaleX11(&xscale, &yscale, true);
|
||||||
|
|
||||||
if (xscale != _glfw.x11.contentScaleX || yscale != _glfw.x11.contentScaleY)
|
if (xscale != _glfw.x11.contentScaleX || yscale != _glfw.x11.contentScaleY)
|
||||||
{
|
{
|
||||||
@ -1076,8 +1076,8 @@ static void onConfigChange(void)
|
|||||||
static void processEvent(XEvent *event)
|
static void processEvent(XEvent *event)
|
||||||
{
|
{
|
||||||
_GLFWwindow* window = NULL;
|
_GLFWwindow* window = NULL;
|
||||||
static bool keymap_dirty = GLFW_FALSE;
|
static bool keymap_dirty = false;
|
||||||
#define UPDATE_KEYMAP_IF_NEEDED if (keymap_dirty) { keymap_dirty = GLFW_FALSE; glfw_xkb_compile_keymap(&_glfw.x11.xkb, NULL); }
|
#define UPDATE_KEYMAP_IF_NEEDED if (keymap_dirty) { keymap_dirty = false; glfw_xkb_compile_keymap(&_glfw.x11.xkb, NULL); }
|
||||||
|
|
||||||
if (_glfw.x11.randr.available)
|
if (_glfw.x11.randr.available)
|
||||||
{
|
{
|
||||||
@ -1153,7 +1153,7 @@ static void processEvent(XEvent *event)
|
|||||||
/* fallthrough */
|
/* fallthrough */
|
||||||
case XkbMapNotify:
|
case XkbMapNotify:
|
||||||
{
|
{
|
||||||
keymap_dirty = GLFW_TRUE;
|
keymap_dirty = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
case XkbStateNotify:
|
case XkbStateNotify:
|
||||||
@ -1310,7 +1310,7 @@ static void processEvent(XEvent *event)
|
|||||||
if (window->cursorMode == GLFW_CURSOR_HIDDEN)
|
if (window->cursorMode == GLFW_CURSOR_HIDDEN)
|
||||||
updateCursorImage(window);
|
updateCursorImage(window);
|
||||||
|
|
||||||
_glfwInputCursorEnter(window, GLFW_TRUE);
|
_glfwInputCursorEnter(window, true);
|
||||||
_glfwInputCursorPos(window, x, y);
|
_glfwInputCursorPos(window, x, y);
|
||||||
|
|
||||||
window->x11.lastCursorPosX = x;
|
window->x11.lastCursorPosX = x;
|
||||||
@ -1320,7 +1320,7 @@ static void processEvent(XEvent *event)
|
|||||||
|
|
||||||
case LeaveNotify:
|
case LeaveNotify:
|
||||||
{
|
{
|
||||||
_glfwInputCursorEnter(window, GLFW_FALSE);
|
_glfwInputCursorEnter(window, false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1612,7 +1612,7 @@ static void processEvent(XEvent *event)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
_glfwInputWindowFocus(window, GLFW_TRUE);
|
_glfwInputWindowFocus(window, true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1632,7 +1632,7 @@ static void processEvent(XEvent *event)
|
|||||||
if (window->monitor && window->autoIconify)
|
if (window->monitor && window->autoIconify)
|
||||||
_glfwPlatformIconifyWindow(window);
|
_glfwPlatformIconifyWindow(window);
|
||||||
|
|
||||||
_glfwInputWindowFocus(window, GLFW_FALSE);
|
_glfwInputWindowFocus(window, false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1723,7 +1723,7 @@ unsigned long _glfwGetWindowPropertyX11(Window window,
|
|||||||
bool _glfwIsVisualTransparentX11(Visual* visual)
|
bool _glfwIsVisualTransparentX11(Visual* visual)
|
||||||
{
|
{
|
||||||
if (!_glfw.x11.xrender.available)
|
if (!_glfw.x11.xrender.available)
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
|
|
||||||
XRenderPictFormat* pf = XRenderFindVisualFormat(_glfw.x11.display, visual);
|
XRenderPictFormat* pf = XRenderFindVisualFormat(_glfw.x11.display, visual);
|
||||||
return pf && pf->direct.alphaMask;
|
return pf && pf->direct.alphaMask;
|
||||||
@ -1795,21 +1795,21 @@ int _glfwPlatformCreateWindow(_GLFWwindow* window,
|
|||||||
if (ctxconfig->source == GLFW_NATIVE_CONTEXT_API)
|
if (ctxconfig->source == GLFW_NATIVE_CONTEXT_API)
|
||||||
{
|
{
|
||||||
if (!_glfwInitGLX())
|
if (!_glfwInitGLX())
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
if (!_glfwChooseVisualGLX(wndconfig, ctxconfig, fbconfig, &visual, &depth))
|
if (!_glfwChooseVisualGLX(wndconfig, ctxconfig, fbconfig, &visual, &depth))
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
else if (ctxconfig->source == GLFW_EGL_CONTEXT_API)
|
else if (ctxconfig->source == GLFW_EGL_CONTEXT_API)
|
||||||
{
|
{
|
||||||
if (!_glfwInitEGL())
|
if (!_glfwInitEGL())
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
if (!_glfwChooseVisualEGL(wndconfig, ctxconfig, fbconfig, &visual, &depth))
|
if (!_glfwChooseVisualEGL(wndconfig, ctxconfig, fbconfig, &visual, &depth))
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
else if (ctxconfig->source == GLFW_OSMESA_CONTEXT_API)
|
else if (ctxconfig->source == GLFW_OSMESA_CONTEXT_API)
|
||||||
{
|
{
|
||||||
if (!_glfwInitOSMesa())
|
if (!_glfwInitOSMesa())
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1821,24 +1821,24 @@ int _glfwPlatformCreateWindow(_GLFWwindow* window,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!createNativeWindow(window, wndconfig, visual, depth))
|
if (!createNativeWindow(window, wndconfig, visual, depth))
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
|
|
||||||
if (ctxconfig->client != GLFW_NO_API)
|
if (ctxconfig->client != GLFW_NO_API)
|
||||||
{
|
{
|
||||||
if (ctxconfig->source == GLFW_NATIVE_CONTEXT_API)
|
if (ctxconfig->source == GLFW_NATIVE_CONTEXT_API)
|
||||||
{
|
{
|
||||||
if (!_glfwCreateContextGLX(window, ctxconfig, fbconfig))
|
if (!_glfwCreateContextGLX(window, ctxconfig, fbconfig))
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
else if (ctxconfig->source == GLFW_EGL_CONTEXT_API)
|
else if (ctxconfig->source == GLFW_EGL_CONTEXT_API)
|
||||||
{
|
{
|
||||||
if (!_glfwCreateContextEGL(window, ctxconfig, fbconfig))
|
if (!_glfwCreateContextEGL(window, ctxconfig, fbconfig))
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
else if (ctxconfig->source == GLFW_OSMESA_CONTEXT_API)
|
else if (ctxconfig->source == GLFW_OSMESA_CONTEXT_API)
|
||||||
{
|
{
|
||||||
if (!_glfwCreateContextOSMesa(window, ctxconfig, fbconfig))
|
if (!_glfwCreateContextOSMesa(window, ctxconfig, fbconfig))
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1850,7 +1850,7 @@ int _glfwPlatformCreateWindow(_GLFWwindow* window,
|
|||||||
}
|
}
|
||||||
|
|
||||||
XFlush(_glfw.x11.display);
|
XFlush(_glfw.x11.display);
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void _glfwPlatformDestroyWindow(_GLFWwindow* window)
|
void _glfwPlatformDestroyWindow(_GLFWwindow* window)
|
||||||
@ -2194,7 +2194,7 @@ void _glfwPlatformRequestWindowAttention(_GLFWwindow* window)
|
|||||||
|
|
||||||
int _glfwPlatformWindowBell(_GLFWwindow* window)
|
int _glfwPlatformWindowBell(_GLFWwindow* window)
|
||||||
{
|
{
|
||||||
return XkbBell(_glfw.x11.display, window->x11.handle, 100, (Atom)0) ? GLFW_TRUE : GLFW_FALSE;
|
return XkbBell(_glfw.x11.display, window->x11.handle, 100, (Atom)0) ? true : false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void _glfwPlatformFocusWindow(_GLFWwindow* window)
|
void _glfwPlatformFocusWindow(_GLFWwindow* window)
|
||||||
@ -2274,7 +2274,7 @@ int _glfwPlatformWindowFocused(_GLFWwindow* window)
|
|||||||
|
|
||||||
int _glfwPlatformWindowOccluded(_GLFWwindow* window)
|
int _glfwPlatformWindowOccluded(_GLFWwindow* window)
|
||||||
{
|
{
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
int _glfwPlatformWindowIconified(_GLFWwindow* window)
|
int _glfwPlatformWindowIconified(_GLFWwindow* window)
|
||||||
@ -2293,7 +2293,7 @@ int _glfwPlatformWindowMaximized(_GLFWwindow* window)
|
|||||||
{
|
{
|
||||||
Atom* states;
|
Atom* states;
|
||||||
unsigned long i;
|
unsigned long i;
|
||||||
bool maximized = GLFW_FALSE;
|
bool maximized = false;
|
||||||
if (!_glfw.x11.NET_WM_STATE ||
|
if (!_glfw.x11.NET_WM_STATE ||
|
||||||
!_glfw.x11.NET_WM_STATE_MAXIMIZED_VERT ||
|
!_glfw.x11.NET_WM_STATE_MAXIMIZED_VERT ||
|
||||||
!_glfw.x11.NET_WM_STATE_MAXIMIZED_HORZ)
|
!_glfw.x11.NET_WM_STATE_MAXIMIZED_HORZ)
|
||||||
@ -2309,7 +2309,7 @@ int _glfwPlatformWindowMaximized(_GLFWwindow* window)
|
|||||||
if (states[i] == _glfw.x11.NET_WM_STATE_MAXIMIZED_VERT ||
|
if (states[i] == _glfw.x11.NET_WM_STATE_MAXIMIZED_VERT ||
|
||||||
states[i] == _glfw.x11.NET_WM_STATE_MAXIMIZED_HORZ)
|
states[i] == _glfw.x11.NET_WM_STATE_MAXIMIZED_HORZ)
|
||||||
{
|
{
|
||||||
maximized = GLFW_TRUE;
|
maximized = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2332,20 +2332,20 @@ int _glfwPlatformWindowHovered(_GLFWwindow* window)
|
|||||||
if (!XQueryPointer(_glfw.x11.display, w,
|
if (!XQueryPointer(_glfw.x11.display, w,
|
||||||
&root, &w, &rootX, &rootY, &childX, &childY, &mask))
|
&root, &w, &rootX, &rootY, &childX, &childY, &mask))
|
||||||
{
|
{
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (w == window->x11.handle)
|
if (w == window->x11.handle)
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
int _glfwPlatformFramebufferTransparent(_GLFWwindow* window)
|
int _glfwPlatformFramebufferTransparent(_GLFWwindow* window)
|
||||||
{
|
{
|
||||||
if (!window->x11.transparent)
|
if (!window->x11.transparent)
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
|
|
||||||
return XGetSelectionOwner(_glfw.x11.display, _glfw.x11.NET_WM_CM_Sx) != None;
|
return XGetSelectionOwner(_glfw.x11.display, _glfw.x11.NET_WM_CM_Sx) != None;
|
||||||
}
|
}
|
||||||
@ -2612,9 +2612,9 @@ int _glfwPlatformCreateCursor(_GLFWcursor* cursor,
|
|||||||
{
|
{
|
||||||
cursor->x11.handle = _glfwCreateCursorX11(image, xhot, yhot);
|
cursor->x11.handle = _glfwCreateCursorX11(image, xhot, yhot);
|
||||||
if (!cursor->x11.handle)
|
if (!cursor->x11.handle)
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
|
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
int _glfwPlatformCreateStandardCursor(_GLFWcursor* cursor, GLFWCursorShape shape)
|
int _glfwPlatformCreateStandardCursor(_GLFWcursor* cursor, GLFWCursorShape shape)
|
||||||
@ -2633,7 +2633,7 @@ int _glfwPlatformCreateStandardCursor(_GLFWcursor* cursor, GLFWCursorShape shape
|
|||||||
C(GLFW_SW_RESIZE_CURSOR, XC_bottom_left_corner);
|
C(GLFW_SW_RESIZE_CURSOR, XC_bottom_left_corner);
|
||||||
C(GLFW_SE_RESIZE_CURSOR, XC_bottom_right_corner);
|
C(GLFW_SE_RESIZE_CURSOR, XC_bottom_right_corner);
|
||||||
case GLFW_INVALID_CURSOR:
|
case GLFW_INVALID_CURSOR:
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
#undef C
|
#undef C
|
||||||
|
|
||||||
@ -2642,10 +2642,10 @@ int _glfwPlatformCreateStandardCursor(_GLFWcursor* cursor, GLFWCursorShape shape
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||||
"X11: Failed to create standard cursor");
|
"X11: Failed to create standard cursor");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void _glfwPlatformDestroyCursor(_GLFWcursor* cursor)
|
void _glfwPlatformDestroyCursor(_GLFWcursor* cursor)
|
||||||
@ -2747,7 +2747,7 @@ int _glfwPlatformGetPhysicalDevicePresentationSupport(VkInstance instance,
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_API_UNAVAILABLE,
|
_glfwInputError(GLFW_API_UNAVAILABLE,
|
||||||
"X11: Vulkan instance missing VK_KHR_xcb_surface extension");
|
"X11: Vulkan instance missing VK_KHR_xcb_surface extension");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
xcb_connection_t* connection = XGetXCBConnection(_glfw.x11.display);
|
xcb_connection_t* connection = XGetXCBConnection(_glfw.x11.display);
|
||||||
@ -2755,7 +2755,7 @@ int _glfwPlatformGetPhysicalDevicePresentationSupport(VkInstance instance,
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||||
"X11: Failed to retrieve XCB connection");
|
"X11: Failed to retrieve XCB connection");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return vkGetPhysicalDeviceXcbPresentationSupportKHR(device,
|
return vkGetPhysicalDeviceXcbPresentationSupportKHR(device,
|
||||||
@ -2773,7 +2773,7 @@ int _glfwPlatformGetPhysicalDevicePresentationSupport(VkInstance instance,
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_API_UNAVAILABLE,
|
_glfwInputError(GLFW_API_UNAVAILABLE,
|
||||||
"X11: Vulkan instance missing VK_KHR_xlib_surface extension");
|
"X11: Vulkan instance missing VK_KHR_xlib_surface extension");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return vkGetPhysicalDeviceXlibPresentationSupportKHR(device,
|
return vkGetPhysicalDeviceXlibPresentationSupportKHR(device,
|
||||||
|
|||||||
26
glfw/xkb_glfw.c
vendored
26
glfw/xkb_glfw.c
vendored
@ -140,9 +140,9 @@ bool
|
|||||||
glfw_xkb_set_x11_events_mask(void) {
|
glfw_xkb_set_x11_events_mask(void) {
|
||||||
if (!XkbSelectEvents(_glfw.x11.display, XkbUseCoreKbd, XkbNewKeyboardNotifyMask | XkbMapNotifyMask | XkbStateNotifyMask, XkbNewKeyboardNotifyMask | XkbMapNotifyMask | XkbStateNotifyMask)) {
|
if (!XkbSelectEvents(_glfw.x11.display, XkbUseCoreKbd, XkbNewKeyboardNotifyMask | XkbMapNotifyMask | XkbStateNotifyMask, XkbNewKeyboardNotifyMask | XkbMapNotifyMask | XkbStateNotifyMask)) {
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR, "Failed to set XKB events mask");
|
_glfwInputError(GLFW_PLATFORM_ERROR, "Failed to set XKB events mask");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
@ -151,15 +151,15 @@ glfw_xkb_update_x11_keyboard_id(_GLFWXKBData *xkb) {
|
|||||||
xcb_connection_t* conn = XGetXCBConnection(_glfw.x11.display);
|
xcb_connection_t* conn = XGetXCBConnection(_glfw.x11.display);
|
||||||
if (!conn) {
|
if (!conn) {
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR, "X11: Failed to retrieve XCB connection");
|
_glfwInputError(GLFW_PLATFORM_ERROR, "X11: Failed to retrieve XCB connection");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
xkb->keyboard_device_id = xkb_x11_get_core_keyboard_device_id(conn);
|
xkb->keyboard_device_id = xkb_x11_get_core_keyboard_device_id(conn);
|
||||||
if (xkb->keyboard_device_id == -1) {
|
if (xkb->keyboard_device_id == -1) {
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR, "X11: Failed to retrieve core keyboard device id");
|
_glfwInputError(GLFW_PLATFORM_ERROR, "X11: Failed to retrieve core keyboard device id");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define xkb_glfw_load_keymap(keymap, ...) {\
|
#define xkb_glfw_load_keymap(keymap, ...) {\
|
||||||
@ -211,10 +211,10 @@ glfw_xkb_create_context(_GLFWXKBData *xkb) {
|
|||||||
{
|
{
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||||
"Failed to initialize XKB context");
|
"Failed to initialize XKB context");
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
glfw_connect_to_ibus(&xkb->ibus);
|
glfw_connect_to_ibus(&xkb->ibus);
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char*
|
static const char*
|
||||||
@ -268,13 +268,13 @@ glfw_xkb_compile_keymap(_GLFWXKBData *xkb, const char *map_str) {
|
|||||||
if (err) {
|
if (err) {
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR, "%s", err);
|
_glfwInputError(GLFW_PLATFORM_ERROR, "%s", err);
|
||||||
release_keyboard_data(xkb);
|
release_keyboard_data(xkb);
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
err = load_states(xkb);
|
err = load_states(xkb);
|
||||||
if (err) {
|
if (err) {
|
||||||
_glfwInputError(GLFW_PLATFORM_ERROR, "%s", err);
|
_glfwInputError(GLFW_PLATFORM_ERROR, "%s", err);
|
||||||
release_keyboard_data(xkb);
|
release_keyboard_data(xkb);
|
||||||
return GLFW_FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
load_compose_tables(xkb);
|
load_compose_tables(xkb);
|
||||||
#define S(a, n) xkb->a##Idx = xkb_keymap_mod_get_index(xkb->keymap, n); xkb->a##Mask = 1 << xkb->a##Idx;
|
#define S(a, n) xkb->a##Idx = xkb_keymap_mod_get_index(xkb->keymap, n); xkb->a##Mask = 1 << xkb->a##Idx;
|
||||||
@ -292,7 +292,7 @@ glfw_xkb_compile_keymap(_GLFWXKBData *xkb, const char *map_str) {
|
|||||||
}
|
}
|
||||||
xkb->states.modifiers = 0;
|
xkb->states.modifiers = 0;
|
||||||
xkb->states.activeUnknownModifiers = 0;
|
xkb->states.activeUnknownModifiers = 0;
|
||||||
return GLFW_TRUE;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline xkb_mod_mask_t
|
static inline xkb_mod_mask_t
|
||||||
@ -413,7 +413,7 @@ glfw_xkb_update_ime_state(_GLFWwindow *w, _GLFWXKBData *xkb, int which, int a, i
|
|||||||
int x = 0, y = 0;
|
int x = 0, y = 0;
|
||||||
switch(which) {
|
switch(which) {
|
||||||
case 1:
|
case 1:
|
||||||
glfw_ibus_set_focused(&xkb->ibus, a ? GLFW_TRUE : GLFW_FALSE);
|
glfw_ibus_set_focused(&xkb->ibus, a ? true : false);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
_glfwPlatformGetWindowPos(w, &x, &y);
|
_glfwPlatformGetWindowPos(w, &x, &y);
|
||||||
@ -500,13 +500,13 @@ glfw_xkb_handle_key_event(_GLFWwindow *window, _GLFWXKBData *xkb, xkb_keycode_t
|
|||||||
if (key_event.text[0]) { debug("%s: %s ", text_type, key_event.text); }
|
if (key_event.text[0]) { debug("%s: %s ", text_type, key_event.text); }
|
||||||
}
|
}
|
||||||
int glfw_keycode = glfw_key_for_sym(glfw_sym);
|
int glfw_keycode = glfw_key_for_sym(glfw_sym);
|
||||||
bool is_fallback = GLFW_FALSE;
|
bool is_fallback = false;
|
||||||
if (glfw_keycode == GLFW_KEY_UNKNOWN && !key_event.text[0]) {
|
if (glfw_keycode == GLFW_KEY_UNKNOWN && !key_event.text[0]) {
|
||||||
int num_default_syms = xkb_state_key_get_syms(sg->default_state, code_for_sym, &default_syms);
|
int num_default_syms = xkb_state_key_get_syms(sg->default_state, code_for_sym, &default_syms);
|
||||||
if (num_default_syms > 0) {
|
if (num_default_syms > 0) {
|
||||||
glfw_sym = default_syms[0];
|
glfw_sym = default_syms[0];
|
||||||
glfw_keycode = glfw_key_for_sym(glfw_sym);
|
glfw_keycode = glfw_key_for_sym(glfw_sym);
|
||||||
is_fallback = GLFW_TRUE;
|
is_fallback = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
debug(
|
debug(
|
||||||
|
|||||||
40
kitty/glfw-wrapper.h
generated
40
kitty/glfw-wrapper.h
generated
@ -28,24 +28,6 @@
|
|||||||
#define GLFW_VERSION_REVISION 0
|
#define GLFW_VERSION_REVISION 0
|
||||||
/*! @} */
|
/*! @} */
|
||||||
|
|
||||||
/*! @name Boolean values
|
|
||||||
* @{ */
|
|
||||||
/*! @brief One.
|
|
||||||
*
|
|
||||||
* One. Seriously. You don't _need_ to use this symbol in your code. It's
|
|
||||||
* semantic sugar for the number 1. You can also use `1` or `true` or `_True`
|
|
||||||
* or `GL_TRUE` or whatever you want.
|
|
||||||
*/
|
|
||||||
#define GLFW_TRUE true
|
|
||||||
/*! @brief Zero.
|
|
||||||
*
|
|
||||||
* Zero. Seriously. You don't _need_ to use this symbol in your code. It's
|
|
||||||
* semantic sugar for the number 0. You can also use `0` or `false` or
|
|
||||||
* `_False` or `GL_FALSE` or whatever you want.
|
|
||||||
*/
|
|
||||||
#define GLFW_FALSE false
|
|
||||||
/*! @} */
|
|
||||||
|
|
||||||
/*! @name Key and button actions
|
/*! @name Key and button actions
|
||||||
* @{ */
|
* @{ */
|
||||||
/*! @brief The key or mouse button was released.
|
/*! @brief The key or mouse button was released.
|
||||||
@ -979,8 +961,8 @@ typedef void (* GLFWwindowrefreshfun)(GLFWwindow*);
|
|||||||
* This is the function signature for window focus callback functions.
|
* This is the function signature for window focus callback functions.
|
||||||
*
|
*
|
||||||
* @param[in] window The window that gained or lost input focus.
|
* @param[in] window The window that gained or lost input focus.
|
||||||
* @param[in] focused `GLFW_TRUE` if the window was given input focus, or
|
* @param[in] focused `true` if the window was given input focus, or
|
||||||
* `GLFW_FALSE` if it lost it.
|
* `false` if it lost it.
|
||||||
*
|
*
|
||||||
* @sa @ref window_focus
|
* @sa @ref window_focus
|
||||||
* @sa @ref glfwSetWindowFocusCallback
|
* @sa @ref glfwSetWindowFocusCallback
|
||||||
@ -996,7 +978,7 @@ typedef void (* GLFWwindowfocusfun)(GLFWwindow*,int);
|
|||||||
* This is the function signature for window occlusion callback functions.
|
* This is the function signature for window occlusion callback functions.
|
||||||
*
|
*
|
||||||
* @param[in] window The window whose occlusion state changed.
|
* @param[in] window The window whose occlusion state changed.
|
||||||
* @param[in] occluded `GLFW_TRUE` if the window was occluded, or `GLFW_FALSE`
|
* @param[in] occluded `true` if the window was occluded, or `false`
|
||||||
* if the window is no longer occluded.
|
* if the window is no longer occluded.
|
||||||
*
|
*
|
||||||
* @sa @ref window_occlusion
|
* @sa @ref window_occlusion
|
||||||
@ -1015,8 +997,8 @@ typedef void (* GLFWwindowocclusionfun)(GLFWwindow*, bool);
|
|||||||
* functions.
|
* functions.
|
||||||
*
|
*
|
||||||
* @param[in] window The window that was iconified or restored.
|
* @param[in] window The window that was iconified or restored.
|
||||||
* @param[in] iconified `GLFW_TRUE` if the window was iconified, or
|
* @param[in] iconified `true` if the window was iconified, or
|
||||||
* `GLFW_FALSE` if it was restored.
|
* `false` if it was restored.
|
||||||
*
|
*
|
||||||
* @sa @ref window_iconify
|
* @sa @ref window_iconify
|
||||||
* @sa @ref glfwSetWindowIconifyCallback
|
* @sa @ref glfwSetWindowIconifyCallback
|
||||||
@ -1033,8 +1015,8 @@ typedef void (* GLFWwindowiconifyfun)(GLFWwindow*,int);
|
|||||||
* functions.
|
* functions.
|
||||||
*
|
*
|
||||||
* @param[in] window The window that was maximized or restored.
|
* @param[in] window The window that was maximized or restored.
|
||||||
* @param[in] iconified `GLFW_TRUE` if the window was maximized, or
|
* @param[in] iconified `true` if the window was maximized, or
|
||||||
* `GLFW_FALSE` if it was restored.
|
* `false` if it was restored.
|
||||||
*
|
*
|
||||||
* @sa @ref window_maximize
|
* @sa @ref window_maximize
|
||||||
* @sa glfwSetWindowMaximizeCallback
|
* @sa glfwSetWindowMaximizeCallback
|
||||||
@ -1126,8 +1108,8 @@ typedef void (* GLFWcursorposfun)(GLFWwindow*,double,double);
|
|||||||
* This is the function signature for cursor enter/leave callback functions.
|
* This is the function signature for cursor enter/leave callback functions.
|
||||||
*
|
*
|
||||||
* @param[in] window The window that received the event.
|
* @param[in] window The window that received the event.
|
||||||
* @param[in] entered `GLFW_TRUE` if the cursor entered the window's client
|
* @param[in] entered `true` if the cursor entered the window's client
|
||||||
* area, or `GLFW_FALSE` if it left it.
|
* area, or `false` if it left it.
|
||||||
*
|
*
|
||||||
* @sa @ref cursor_enter
|
* @sa @ref cursor_enter
|
||||||
* @sa @ref glfwSetCursorEnterCallback
|
* @sa @ref glfwSetCursorEnterCallback
|
||||||
@ -1379,9 +1361,9 @@ typedef struct GLFWgamepadstate
|
|||||||
* succeeds, you should call @ref glfwTerminate before the application exits.
|
* succeeds, you should call @ref glfwTerminate before the application exits.
|
||||||
*
|
*
|
||||||
* Additional calls to this function after successful initialization but before
|
* Additional calls to this function after successful initialization but before
|
||||||
* termination will return `GLFW_TRUE` immediately.
|
* termination will return `true` immediately.
|
||||||
*
|
*
|
||||||
* @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an
|
* @return `true` if successful, or `false` if an
|
||||||
* [error](@ref error_handling) occurred.
|
* [error](@ref error_handling) occurred.
|
||||||
*
|
*
|
||||||
* @errors Possible errors include @ref GLFW_PLATFORM_ERROR.
|
* @errors Possible errors include @ref GLFW_PLATFORM_ERROR.
|
||||||
|
|||||||
@ -506,7 +506,7 @@ create_os_window(PyObject UNUSED *self, PyObject *args) {
|
|||||||
// We use a temp window to avoid the need to set the window size after
|
// We use a temp window to avoid the need to set the window size after
|
||||||
// creation, which causes a resize event and all the associated processing.
|
// creation, which causes a resize event and all the associated processing.
|
||||||
// The temp window is used to get the DPI.
|
// The temp window is used to get the DPI.
|
||||||
glfwWindowHint(GLFW_VISIBLE, GLFW_FALSE);
|
glfwWindowHint(GLFW_VISIBLE, false);
|
||||||
GLFWwindow *common_context = global_state.num_os_windows ? global_state.os_windows[0].handle : NULL;
|
GLFWwindow *common_context = global_state.num_os_windows ? global_state.os_windows[0].handle : NULL;
|
||||||
#ifdef __APPLE__
|
#ifdef __APPLE__
|
||||||
if (is_first_window && !application_quit_canary) {
|
if (is_first_window && !application_quit_canary) {
|
||||||
@ -531,7 +531,7 @@ create_os_window(PyObject UNUSED *self, PyObject *args) {
|
|||||||
// https://github.com/glfw/glfw/issues/1268 It doesn't matter since there
|
// https://github.com/glfw/glfw/issues/1268 It doesn't matter since there
|
||||||
// is no startup notification in Wayland anyway. It amazes me that anyone
|
// is no startup notification in Wayland anyway. It amazes me that anyone
|
||||||
// uses Wayland as anything other than a butt for jokes.
|
// uses Wayland as anything other than a butt for jokes.
|
||||||
if (global_state.is_wayland) glfwWindowHint(GLFW_VISIBLE, GLFW_TRUE);
|
if (global_state.is_wayland) glfwWindowHint(GLFW_VISIBLE, true);
|
||||||
GLFWwindow *glfw_window = glfwCreateWindow(width, height, title, NULL, temp_window);
|
GLFWwindow *glfw_window = glfwCreateWindow(width, height, title, NULL, temp_window);
|
||||||
glfwDestroyWindow(temp_window); temp_window = NULL;
|
glfwDestroyWindow(temp_window); temp_window = NULL;
|
||||||
if (glfw_window == NULL) { PyErr_SetString(PyExc_ValueError, "Failed to create GLFWwindow"); return NULL; }
|
if (glfw_window == NULL) { PyErr_SetString(PyExc_ValueError, "Failed to create GLFWwindow"); return NULL; }
|
||||||
@ -1176,7 +1176,7 @@ init_glfw(PyObject *m) {
|
|||||||
ADDC(GLFW_RELEASE);
|
ADDC(GLFW_RELEASE);
|
||||||
ADDC(GLFW_PRESS);
|
ADDC(GLFW_PRESS);
|
||||||
ADDC(GLFW_REPEAT);
|
ADDC(GLFW_REPEAT);
|
||||||
ADDC(GLFW_TRUE); ADDC(GLFW_FALSE);
|
ADDC(true); ADDC(false);
|
||||||
ADDC(GLFW_IBEAM_CURSOR); ADDC(GLFW_HAND_CURSOR); ADDC(GLFW_ARROW_CURSOR);
|
ADDC(GLFW_IBEAM_CURSOR); ADDC(GLFW_HAND_CURSOR); ADDC(GLFW_ARROW_CURSOR);
|
||||||
|
|
||||||
// --- Keys --------------------------------------------------------------------
|
// --- Keys --------------------------------------------------------------------
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user