Fix the build and review comments

This commit is contained in:
Lubos Dolezel 2020-05-15 12:38:22 +02:00
parent b26bedb31c
commit 6453711d11
7 changed files with 241 additions and 46 deletions

View File

@ -601,7 +601,7 @@ static NSData *makeWindowIcon() {
[_caContext renderSurface: surface];
glFlush();
CGLSwapBuffers(_cglWindow);
CGLFlushDrawable(_cglWindow);
CGLSetCurrentContext(prevContext);
}

View File

@ -136,4 +136,34 @@ add_framework(CoreGraphics
IOKit
)
function(add_backend name)
cmake_parse_arguments(BACKEND "" "INFO_PLIST" "SOURCES;DEPENDENCIES;RESOURCES" ${ARGN})
set(path "/System/Library/Frameworks/CoreGraphics.framework/Versions/C/Resources/Backends/${name}.backend/Contents")
set(DYLIB_INSTALL_NAME "${path}/MacOS/${name}")
add_darling_library(${name}_cgbackend SHARED ${BACKEND_SOURCES})
set_target_properties(${name}_cgbackend PROPERTIES OUTPUT_NAME "${name}" SUFFIX "" PREFIX "")
make_fat(${name}_cgbackend)
if (BACKEND_DEPENDENCIES)
target_link_libraries(${name}_cgbackend PRIVATE ${BACKEND_DEPENDENCIES})
endif (BACKEND_DEPENDENCIES)
install(TARGETS ${name}_cgbackend DESTINATION "libexec/darling${path}/MacOS")
install(FILES ${BACKEND_INFO_PLIST} DESTINATION "libexec/darling${path}" RENAME Info.plist)
if (BACKEND_RESOURCES)
while (BACKEND_RESOURCES)
list(GET BACKEND_RESOURCES 0 res_install_path)
list(GET BACKEND_RESOURCES 1 res_source_path)
get_filename_component(res_install_dir ${res_install_path} DIRECTORY)
get_filename_component(res_install_name ${res_install_path} NAME)
install(FILES ${res_source_path}
DESTINATION libexec/darling${path}/Resources/${res_install_dir}
RENAME ${res_install_name})
list(REMOVE_AT BACKEND_RESOURCES 0 1)
endwhile (BACKEND_RESOURCES)
endif (BACKEND_RESOURCES)
endfunction(add_backend)
add_subdirectory(X11.backend)

View File

@ -1,33 +1,3 @@
function(add_backend name)
cmake_parse_arguments(BACKEND "" "INFO_PLIST" "SOURCES;DEPENDENCIES;RESOURCES" ${ARGN})
set(path "/System/Library/Frameworks/CoreGraphics.framework/Versions/C/Resources/Backends/${name}.backend/Contents")
set(DYLIB_INSTALL_NAME "${path}/MacOS/${name}")
add_darling_library(${name}_cgbackend SHARED ${BACKEND_SOURCES})
set_target_properties(${name}_cgbackend PROPERTIES OUTPUT_NAME "${name}" SUFFIX "" PREFIX "")
make_fat(${name}_cgbackend)
if (BACKEND_DEPENDENCIES)
target_link_libraries(${name}_cgbackend PRIVATE ${BACKEND_DEPENDENCIES})
endif (BACKEND_DEPENDENCIES)
install(TARGETS ${name}_cgbackend DESTINATION "libexec/darling${path}/MacOS")
install(FILES ${BACKEND_INFO_PLIST} DESTINATION "libexec/darling${path}" RENAME Info.plist)
if (BACKEND_RESOURCES)
while (BACKEND_RESOURCES)
list(GET BACKEND_RESOURCES 0 res_install_path)
list(GET BACKEND_RESOURCES 1 res_source_path)
get_filename_component(res_install_dir ${res_install_path} DIRECTORY)
get_filename_component(res_install_name ${res_install_path} NAME)
install(FILES ${res_source_path}
DESTINATION libexec/darling${path}/Resources/${res_install_dir}
RENAME ${res_install_name})
list(REMOVE_AT BACKEND_RESOURCES 0 1)
endwhile (BACKEND_RESOURCES)
endif (BACKEND_RESOURCES)
endfunction(add_backend)
add_backend(X11
SOURCES
CGSConnectionX11.m
@ -41,13 +11,10 @@ add_backend(X11
system
CoreFoundation
Foundation
AppKit
Onyx2D
CoreGraphics
OpenGL
QuartzCore
# native libraries
X11
X11
XRandR
Xcursor
fontconfig

View File

@ -20,16 +20,219 @@
#ifndef _CGEVENTTYPES_H_
#define _CGEVENTTYPES_H_
#include <CoreFoundation/CFAvailability.h>
#include <CoreFoundation/CFBase.h>
#include <CoreFoundation/CFAvailability.h>
#include <CoreGraphics/CGBase.h>
#include <CoreGraphics/CGRemoteOperation.h>
typedef CF_ENUM(uint32_t, CGEventTapLocation) {
kCGHIDEventTap = 0,
kCGSessionEventTap,
kCGAnnotatedSessionEventTap
typedef struct __CGEvent *CGEventRef;
typedef uint32_t CGMouseButton;
enum {
kCGMouseButtonLeft = 0,
kCGMouseButtonRight = 1,
kCGMouseButtonCenter = 2
};
typedef uint32_t CGScrollEventUnit;
enum {
kCGScrollEventUnitPixel = 0,
kCGScrollEventUnitLine = 1,
};
typedef uint32_t CGMomentumScrollPhase;
enum {
kCGMomentumScrollPhaseNone = 0,
kCGMomentumScrollPhaseBegin = 1,
kCGMomentumScrollPhaseContinue = 2,
kCGMomentumScrollPhaseEnd = 3
};
typedef uint32_t CGScrollPhase;
enum {
kCGScrollPhaseBegan = 1,
kCGScrollPhaseChanged = 2,
kCGScrollPhaseEnded = 4,
kCGScrollPhaseCancelled = 8,
kCGScrollPhaseMayBegin = 128
};
typedef uint32_t CGGesturePhase;
enum {
kCGGesturePhaseNone = 0,
kCGGesturePhaseBegan = 1,
kCGGesturePhaseChanged = 2,
kCGGesturePhaseEnded = 4,
kCGGesturePhaseCancelled = 8,
kCGGesturePhaseMayBegin = 128
};
typedef uint64_t CGEventFlags;
enum {
kCGEventFlagMaskAlphaShift = 0x00010000,
kCGEventFlagMaskShift = 0x00020000,
kCGEventFlagMaskControl = 0x00040000,
kCGEventFlagMaskAlternate = 0x00080000,
kCGEventFlagMaskCommand = 0x00100000,
kCGEventFlagMaskHelp = 0x00400000,
kCGEventFlagMaskSecondaryFn = 0x00800000,
kCGEventFlagMaskNumericPad = 0x00200000,
kCGEventFlagMaskNonCoalesced = 0x00000100
};
typedef uint32_t CGEventType;
enum {
kCGEventNull = 0,
kCGEventLeftMouseDown = 1,
kCGEventLeftMouseUp = 2,
kCGEventRightMouseDown = 3,
kCGEventRightMouseUp = 4,
kCGEventMouseMoved = 5,
kCGEventLeftMouseDragged = 6,
kCGEventRightMouseDragged = 7,
kCGEventKeyDown = 10,
kCGEventKeyUp = 11,
kCGEventFlagsChanged = 12,
kCGEventScrollWheel = 22,
kCGEventTabletPointer = 23,
kCGEventTabletProximity = 24,
kCGEventOtherMouseDown = 25,
kCGEventOtherMouseUp = 26,
kCGEventOtherMouseDragged = 27,
kCGEventTapDisabledByTimeout = 0xFFFFFFFE,
kCGEventTapDisabledByUserInput = 0xFFFFFFFF
};
typedef uint64_t CGEventTimestamp;
typedef uint32_t CGEventField;
enum {
kCGMouseEventNumber = 0,
kCGMouseEventClickState = 1,
kCGMouseEventPressure = 2,
kCGMouseEventButtonNumber = 3,
kCGMouseEventDeltaX = 4,
kCGMouseEventDeltaY = 5,
kCGMouseEventInstantMouser = 6,
kCGMouseEventSubtype = 7,
kCGKeyboardEventAutorepeat = 8,
kCGKeyboardEventKeycode = 9,
kCGKeyboardEventKeyboardType = 10,
kCGScrollWheelEventDeltaAxis1 = 11,
kCGScrollWheelEventDeltaAxis2 = 12,
kCGScrollWheelEventDeltaAxis3 = 13,
kCGScrollWheelEventFixedPtDeltaAxis1 = 93,
kCGScrollWheelEventFixedPtDeltaAxis2 = 94,
kCGScrollWheelEventFixedPtDeltaAxis3 = 95,
kCGScrollWheelEventPointDeltaAxis1 = 96,
kCGScrollWheelEventPointDeltaAxis2 = 97,
kCGScrollWheelEventPointDeltaAxis3 = 98,
kCGScrollWheelEventScrollPhase = 99,
kCGScrollWheelEventScrollCount = 100,
kCGScrollWheelEventMomentumPhase = 123,
kCGScrollWheelEventInstantMouser = 14,
kCGTabletEventPointX = 15,
kCGTabletEventPointY = 16,
kCGTabletEventPointZ = 17,
kCGTabletEventPointButtons = 18,
kCGTabletEventPointPressure = 19,
kCGTabletEventTiltX = 20,
kCGTabletEventTiltY = 21,
kCGTabletEventRotation = 22,
kCGTabletEventTangentialPressure = 23,
kCGTabletEventDeviceID = 24,
kCGTabletEventVendor1 = 25,
kCGTabletEventVendor2 = 26,
kCGTabletEventVendor3 = 27,
kCGTabletProximityEventVendorID = 28,
kCGTabletProximityEventTabletID = 29,
kCGTabletProximityEventPointerID = 30,
kCGTabletProximityEventDeviceID = 31,
kCGTabletProximityEventSystemTabletID = 32,
kCGTabletProximityEventVendorPointerType = 33,
kCGTabletProximityEventVendorPointerSerialNumber = 34,
kCGTabletProximityEventVendorUniqueID = 35,
kCGTabletProximityEventCapabilityMask = 36,
kCGTabletProximityEventPointerType = 37,
kCGTabletProximityEventEnterProximity = 38,
kCGEventTargetProcessSerialNumber = 39,
kCGEventTargetUnixProcessID = 40,
kCGEventSourceUnixProcessID = 41,
kCGEventSourceUserData = 42,
kCGEventSourceUserID = 43,
kCGEventSourceGroupID = 44,
kCGEventSourceStateID = 45,
kCGScrollWheelEventIsContinuous = 88,
kCGMouseEventWindowUnderMousePointer = 91,
kCGMouseEventWindowUnderMousePointerThatCanHandleThisEvent = 92,
kCGEventUnacceleratedPointerMovementX = 170,
kCGEventUnacceleratedPointerMovementY = 171
};
typedef uint32_t CGEventMouseSubtype;
enum {
kCGEventMouseSubtypeDefault = 0,
kCGEventMouseSubtypeTabletPoint = 1,
kCGEventMouseSubtypeTabletProximity = 2
};
typedef uint32_t CGEventTapLocation;
enum {
kCGHIDEventTap = 0,
kCGSessionEventTap,
kCGAnnotatedSessionEventTap
};
typedef uint32_t CGEventTapPlacement;
enum {
kCGHeadInsertEventTap = 0,
kCGTailAppendEventTap
};
typedef uint32_t CGEventTapOptions;
enum {
kCGEventTapOptionDefault = 0x00000000,
kCGEventTapOptionListenOnly = 0x00000001
};
typedef uint64_t CGEventMask;
typedef struct __CGEventTapProxy *CGEventTapProxy;
typedef CGEventRef _Nullable (*CGEventTapCallBack)(CGEventTapProxy proxy,
CGEventType type, CGEventRef event, void * _Nullable userInfo);
struct __CGEventTapInformation {
uint32_t eventTapID;
CGEventTapLocation tapPoint;
CGEventTapOptions options;
CGEventMask eventsOfInterest;
pid_t tappingProcess;
pid_t processBeingTapped;
bool enabled;
float minUsecLatency;
float avgUsecLatency;
float maxUsecLatency;
};
typedef struct __CGEventTapInformation CGEventTapInformation;
typedef struct __CGEventSource *CGEventSourceRef;
typedef int32_t CGEventSourceStateID;
enum {
kCGEventSourceStatePrivate = -1,
kCGEventSourceStateCombinedSessionState = 0,
kCGEventSourceStateHIDSystemState = 1
};
typedef uint32_t CGEventSourceKeyboardType;
#define CGEventMaskBit(eventType) ((CGEventMask) 1 << (eventType))
#endif

View File

@ -21,7 +21,6 @@
#import <Foundation/NSObject.h>
#import <Foundation/NSDictionary.h>
#include <CoreGraphics/CoreGraphicsPrivate.h>
#include <CoreServices/UnicodeUtilities.h>
#include <stdatomic.h>
@class CGSWindow;

View File

@ -20,10 +20,6 @@
#include <CoreGraphics/CGEvent.h>
#include <stdio.h>
void CGEventPost(CGEventTapLocation tapLocation, CGEventRef event) {
printf("STUB CGEventPost called\n");
}
CGError CGPostMouseEvent(CGPoint mouseCursorPosition, boolean_t updateMouseCursorPosition, CGButtonCount buttonCount, boolean_t mouseButtonDown, ...) {
printf("STUB CGPostMouseEvent called\n");
}

View File

@ -431,7 +431,7 @@ static stbi_uc *bmp_load(int *x, int *y, int *comp, int req_comp) {
}
if (flip_vertically) {
stbi_uc t;
for (j = 0; j<(int) img_y> > 1; ++j) {
for (j = 0; j<img_y; ++j) {
stbi_uc *p1 = out + j * img_x * target;
stbi_uc *p2 = out + (img_y - 1 - j) * img_x * target;
for (i = 0; i < (int) img_x * target; ++i) {