The vmapple mmio implementation of the PG device uses an IOService mapper for sharing video memory between host and guest. This is only exposed via a private property on the PGDeviceDescriptor class. The code has so far declared this in a dummy derived class; the idiomatic Objective-C way of exposing private APIs on a class is via a category extension. This change does exactly that; this also avoids the extra cast to access the property.
Signed-off-by: Phil Dennis-Jordan <p...@philjordan.eu> --- hw/display/apple-gfx.m | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/hw/display/apple-gfx.m b/hw/display/apple-gfx.m index 073741ede5..6537e32806 100644 --- a/hw/display/apple-gfx.m +++ b/hw/display/apple-gfx.m @@ -51,7 +51,7 @@ typedef bool(^IOSFCUnmapMemory)(void *a, void *b, void *c, void *d, void *e, void *f); typedef bool(^IOSFCMapMemory)(uint64_t phys, uint64_t len, bool ro, void **va, void *e, void *f); -@interface PGDeviceDescriptorExt : PGDeviceDescriptor +@interface PGDeviceDescriptor (IOSurfaceMapper) @property (readwrite, nonatomic) bool usingIOSurfaceMapper; @end @@ -396,7 +396,6 @@ static void apple_gfx_realize(DeviceState *dev, Error **errp) PGDeviceDescriptor *desc = [PGDeviceDescriptor new]; PGDisplayDescriptor *disp_desc = [PGDisplayDescriptor new]; PGIOSurfaceHostDeviceDescriptor *iosfc_desc = [PGIOSurfaceHostDeviceDescriptor new]; - PGDeviceDescriptorExt *desc_ext = (PGDeviceDescriptorExt *)desc; PGDisplayMode *modes[ARRAY_SIZE(apple_gfx_modes)]; int i; @@ -408,7 +407,7 @@ static void apple_gfx_realize(DeviceState *dev, Error **errp) s->mtl = MTLCreateSystemDefaultDevice(); desc.device = s->mtl; - desc_ext.usingIOSurfaceMapper = true; + desc.usingIOSurfaceMapper = true; desc.createTask = ^(uint64_t vmSize, void * _Nullable * _Nonnull baseAddress) { AppleGFXTask *task = apple_gfx_new_task(s, vmSize); -- 2.39.3 (Apple Git-146)