mirror of https://github.com/xemu-project/xemu.git
cocoa: Fix VBE function Set Display Start
Register a dpy_gfx_setdata callback so that the Cocoa code
is notified whenever the screen start address changes.
Commit 1d3323d
has a similar fix for the VNC UI.
Signed-off-by: Henry Harrington <henry.harrington@gmail.com>
Cc: qemu-stable@nongnu.org (1.3.x)
Signed-off-by: Andreas Färber <andreas.faerber@web.de>
This commit is contained in:
parent
321f211707
commit
477a3877fd
21
ui/cocoa.m
21
ui/cocoa.m
|
@ -265,6 +265,7 @@ static int cocoa_keycode_to_qemu(int keycode)
|
||||||
BOOL isTabletEnabled;
|
BOOL isTabletEnabled;
|
||||||
}
|
}
|
||||||
- (void) resizeContentToWidth:(int)w height:(int)h displayState:(DisplayState *)ds;
|
- (void) resizeContentToWidth:(int)w height:(int)h displayState:(DisplayState *)ds;
|
||||||
|
- (void) updateDataOffset:(DisplayState *)ds;
|
||||||
- (void) grabMouse;
|
- (void) grabMouse;
|
||||||
- (void) ungrabMouse;
|
- (void) ungrabMouse;
|
||||||
- (void) toggleFullScreen:(id)sender;
|
- (void) toggleFullScreen:(id)sender;
|
||||||
|
@ -429,6 +430,20 @@ QemuCocoaView *cocoaView;
|
||||||
[self setFrame:NSMakeRect(cx, cy, cw, ch)];
|
[self setFrame:NSMakeRect(cx, cy, cw, ch)];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void) updateDataOffset:(DisplayState *)ds
|
||||||
|
{
|
||||||
|
COCOA_DEBUG("QemuCocoaView: UpdateDataOffset\n");
|
||||||
|
|
||||||
|
// update screenBuffer
|
||||||
|
if (dataProviderRef) {
|
||||||
|
CGDataProviderRelease(dataProviderRef);
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t size = ds_get_width(ds) * 4 * ds_get_height(ds);
|
||||||
|
dataProviderRef = CGDataProviderCreateWithData(NULL, ds_get_data(ds),
|
||||||
|
size, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
- (void) toggleFullScreen:(id)sender
|
- (void) toggleFullScreen:(id)sender
|
||||||
{
|
{
|
||||||
COCOA_DEBUG("QemuCocoaView: toggleFullScreen\n");
|
COCOA_DEBUG("QemuCocoaView: toggleFullScreen\n");
|
||||||
|
@ -1004,6 +1019,11 @@ static void cocoa_refresh(DisplayState *ds)
|
||||||
vga_hw_update();
|
vga_hw_update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void cocoa_setdata(DisplayState *ds)
|
||||||
|
{
|
||||||
|
[cocoaView updateDataOffset:ds];
|
||||||
|
}
|
||||||
|
|
||||||
static void cocoa_cleanup(void)
|
static void cocoa_cleanup(void)
|
||||||
{
|
{
|
||||||
COCOA_DEBUG("qemu_cocoa: cocoa_cleanup\n");
|
COCOA_DEBUG("qemu_cocoa: cocoa_cleanup\n");
|
||||||
|
@ -1020,6 +1040,7 @@ void cocoa_display_init(DisplayState *ds, int full_screen)
|
||||||
dcl->dpy_gfx_update = cocoa_update;
|
dcl->dpy_gfx_update = cocoa_update;
|
||||||
dcl->dpy_gfx_resize = cocoa_resize;
|
dcl->dpy_gfx_resize = cocoa_resize;
|
||||||
dcl->dpy_refresh = cocoa_refresh;
|
dcl->dpy_refresh = cocoa_refresh;
|
||||||
|
dcl->dpy_gfx_setdata = cocoa_setdata;
|
||||||
|
|
||||||
register_displaychangelistener(ds, dcl);
|
register_displaychangelistener(ds, dcl);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue