Fix macOS builds
This commit is contained in:
@@ -17,7 +17,7 @@ add_library(ui STATIC
|
|||||||
qt_mainwindow.ui
|
qt_mainwindow.ui
|
||||||
qt_machinestatus.cpp
|
qt_machinestatus.cpp
|
||||||
qt_machinestatus.hpp
|
qt_machinestatus.hpp
|
||||||
qt_machinestatus.ui
|
#qt_machinestatus.ui
|
||||||
qt_gleswidget.cpp
|
qt_gleswidget.cpp
|
||||||
qt_gleswidget.hpp
|
qt_gleswidget.hpp
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#include <SDL.h>
|
#include <SDL.h>
|
||||||
#include "86box/plat.h"
|
//#include "86box/plat.h"
|
||||||
#include "cocoa_mouse.hpp"
|
#include "cocoa_mouse.hpp"
|
||||||
#import <AppKit/AppKit.h>
|
#import <AppKit/AppKit.h>
|
||||||
extern "C"
|
extern "C"
|
||||||
@@ -15,6 +15,7 @@ extern "C"
|
|||||||
#include <86box/ui.h>
|
#include <86box/ui.h>
|
||||||
#include <86box/video.h>
|
#include <86box/video.h>
|
||||||
extern int mouse_capture;
|
extern int mouse_capture;
|
||||||
|
extern void plat_mouse_capture(int);
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef struct mouseinputdata
|
typedef struct mouseinputdata
|
||||||
@@ -23,8 +24,7 @@ typedef struct mouseinputdata
|
|||||||
int mousebuttons;
|
int mousebuttons;
|
||||||
} mouseinputdata;
|
} mouseinputdata;
|
||||||
|
|
||||||
extern SDL_mutex* mousemutex;
|
static mouseinputdata mousedata;
|
||||||
extern mouseinputdata mousedata;
|
|
||||||
|
|
||||||
CocoaEventFilter::~CocoaEventFilter()
|
CocoaEventFilter::~CocoaEventFilter()
|
||||||
{
|
{
|
||||||
@@ -40,17 +40,13 @@ bool CocoaEventFilter::nativeEventFilter(const QByteArray &eventType, void *mess
|
|||||||
NSEvent* event = (NSEvent*)message;
|
NSEvent* event = (NSEvent*)message;
|
||||||
if ([event type] == NSEventTypeMouseMoved)
|
if ([event type] == NSEventTypeMouseMoved)
|
||||||
{
|
{
|
||||||
SDL_LockMutex(mousemutex);
|
|
||||||
mousedata.deltax += [event deltaX];
|
mousedata.deltax += [event deltaX];
|
||||||
mousedata.deltay += [event deltaY];
|
mousedata.deltay += [event deltaY];
|
||||||
SDL_UnlockMutex(mousemutex);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if ([event type] == NSEventTypeScrollWheel)
|
if ([event type] == NSEventTypeScrollWheel)
|
||||||
{
|
{
|
||||||
SDL_LockMutex(mousemutex);
|
|
||||||
mousedata.deltaz += [event deltaY];
|
mousedata.deltaz += [event deltaY];
|
||||||
SDL_UnlockMutex(mousemutex);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
switch ([event type])
|
switch ([event type])
|
||||||
@@ -58,45 +54,33 @@ bool CocoaEventFilter::nativeEventFilter(const QByteArray &eventType, void *mess
|
|||||||
default: return false;
|
default: return false;
|
||||||
case NSEventTypeLeftMouseDown:
|
case NSEventTypeLeftMouseDown:
|
||||||
{
|
{
|
||||||
SDL_LockMutex(mousemutex);
|
|
||||||
mousedata.mousebuttons |= 1;
|
mousedata.mousebuttons |= 1;
|
||||||
SDL_UnlockMutex(mousemutex);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case NSEventTypeLeftMouseUp:
|
case NSEventTypeLeftMouseUp:
|
||||||
{
|
{
|
||||||
SDL_LockMutex(mousemutex);
|
|
||||||
mousedata.mousebuttons &= ~1;
|
mousedata.mousebuttons &= ~1;
|
||||||
SDL_UnlockMutex(mousemutex);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case NSEventTypeRightMouseDown:
|
case NSEventTypeRightMouseDown:
|
||||||
{
|
{
|
||||||
SDL_LockMutex(mousemutex);
|
|
||||||
mousedata.mousebuttons |= 2;
|
mousedata.mousebuttons |= 2;
|
||||||
SDL_UnlockMutex(mousemutex);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case NSEventTypeRightMouseUp:
|
case NSEventTypeRightMouseUp:
|
||||||
{
|
{
|
||||||
SDL_LockMutex(mousemutex);
|
|
||||||
mousedata.mousebuttons &= ~2;
|
mousedata.mousebuttons &= ~2;
|
||||||
SDL_UnlockMutex(mousemutex);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case NSEventTypeOtherMouseDown:
|
case NSEventTypeOtherMouseDown:
|
||||||
{
|
{
|
||||||
SDL_LockMutex(mousemutex);
|
|
||||||
mousedata.mousebuttons |= 4;
|
mousedata.mousebuttons |= 4;
|
||||||
SDL_UnlockMutex(mousemutex);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case NSEventTypeOtherMouseUp:
|
case NSEventTypeOtherMouseUp:
|
||||||
{
|
{
|
||||||
if (mouse_get_buttons() < 3) { plat_mouse_capture(0); return true; }
|
if (mouse_get_buttons() < 3) { plat_mouse_capture(0); return true; }
|
||||||
SDL_LockMutex(mousemutex);
|
|
||||||
mousedata.mousebuttons &= ~4;
|
mousedata.mousebuttons &= ~4;
|
||||||
SDL_UnlockMutex(mousemutex);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -105,3 +89,12 @@ bool CocoaEventFilter::nativeEventFilter(const QByteArray &eventType, void *mess
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern "C" void macos_poll_mouse()
|
||||||
|
{
|
||||||
|
mouse_x = mousedata.deltax;
|
||||||
|
mouse_y = mousedata.deltay;
|
||||||
|
mouse_z = mousedata.deltaz;
|
||||||
|
mousedata.deltax = mousedata.deltay = mousedata.deltaz = 0;
|
||||||
|
mouse_buttons = mousedata.mousebuttons;
|
||||||
|
}
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ extern "C"
|
|||||||
#include <86box/video.h>
|
#include <86box/video.h>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern "C" void macos_poll_mouse();
|
||||||
void
|
void
|
||||||
qt_mouse_capture(int on)
|
qt_mouse_capture(int on)
|
||||||
{
|
{
|
||||||
@@ -34,11 +34,15 @@ qt_mouse_capture(int on)
|
|||||||
|
|
||||||
void GLESWidget::qt_mouse_poll()
|
void GLESWidget::qt_mouse_poll()
|
||||||
{
|
{
|
||||||
|
#ifdef __APPLE__
|
||||||
|
return macos_poll_mouse();
|
||||||
|
#else
|
||||||
mouse_x = mousedata.deltax;
|
mouse_x = mousedata.deltax;
|
||||||
mouse_y = mousedata.deltay;
|
mouse_y = mousedata.deltay;
|
||||||
mouse_z = mousedata.deltaz;
|
mouse_z = mousedata.deltaz;
|
||||||
mousedata.deltax = mousedata.deltay = mousedata.deltaz = 0;
|
mousedata.deltax = mousedata.deltay = mousedata.deltaz = 0;
|
||||||
mouse_buttons = mousedata.mousebuttons;
|
mouse_buttons = mousedata.mousebuttons;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void GLESWidget::resizeGL(int w, int h)
|
void GLESWidget::resizeGL(int w, int h)
|
||||||
|
|||||||
@@ -29,6 +29,8 @@ extern uint64_t tsc;
|
|||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
#include <QStatusBar>
|
#include <QStatusBar>
|
||||||
|
|
||||||
|
#include <array>
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
struct PixmapSetActive {
|
struct PixmapSetActive {
|
||||||
QPixmap normal;
|
QPixmap normal;
|
||||||
|
|||||||
@@ -283,10 +283,10 @@ plat_mmap(size_t size, uint8_t executable)
|
|||||||
void *ret = mmap(0, size, PROT_READ | PROT_WRITE | (executable ? PROT_EXEC : 0), MAP_ANON | MAP_PRIVATE | (executable ? MAP_JIT : 0), 0, 0);
|
void *ret = mmap(0, size, PROT_READ | PROT_WRITE | (executable ? PROT_EXEC : 0), MAP_ANON | MAP_PRIVATE | (executable ? MAP_JIT : 0), 0, 0);
|
||||||
#else
|
#else
|
||||||
void *ret = mmap(0, size, PROT_READ | PROT_WRITE | (executable ? PROT_EXEC : 0), MAP_ANON | MAP_PRIVATE, 0, 0);
|
void *ret = mmap(0, size, PROT_READ | PROT_WRITE | (executable ? PROT_EXEC : 0), MAP_ANON | MAP_PRIVATE, 0, 0);
|
||||||
|
#endif
|
||||||
auto retval = *reinterpret_cast<int*>(ret);
|
auto retval = *reinterpret_cast<int*>(ret);
|
||||||
return (retval < 0) ? nullptr : ret;
|
return (retval < 0) ? nullptr : ret;
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
Reference in New Issue
Block a user