| /* Copyright (C) 2010 The Android Open Source Project |
| ** |
| ** This software is licensed under the terms of the GNU General Public |
| ** License version 2, as published by the Free Software Foundation, and |
| ** may be copied, distributed, and modified under those terms. |
| ** |
| ** This program is distributed in the hope that it will be useful, |
| ** but WITHOUT ANY WARRANTY; without even the implied warranty of |
| ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| ** GNU General Public License for more details. |
| */ |
| |
| /* |
| * Contains extension to android display (see android/display.h|c) that is used |
| * by the core to communicate display changes to the attached UI |
| */ |
| |
| #include "android/display-core.h" |
| #include "qemu-common.h" |
| |
| /* This callback is call periodically by the GUI timer. |
| * Its purpose is to ensure that hw framebuffer updates are properly |
| * detected. Call the normal QEMU function for this here. |
| */ |
| static void |
| coredisplay_refresh(DisplayState* ds) |
| { |
| (void)ds; |
| vga_hw_update(); |
| } |
| |
| /* Don't do anything here because this callback can't differentiate |
| * between several listeners. This will be handled by a DisplayUpdateListener |
| * instead. See Android-specific changes in console.h |
| * |
| * In the core, the DisplayUpdateListener is registered by the ProxyFramebuffer |
| * object. See android/protocol/fb-updates-proxy.c. |
| */ |
| static void |
| coredisplay_update(DisplayState* ds, int x, int y, int w, int h) |
| { |
| (void)ds; |
| (void)x; |
| (void)y; |
| (void)w; |
| (void)h; |
| } |
| |
| /* This callback is normally used to indicate that the display resolution |
| * was changed by the guest (e.g. when a Windows PC changes the display from |
| * 1024x768 to 800x600. Since this doesn't happen in Android, ignore it. |
| */ |
| static void |
| coredisplay_resize(DisplayState* ds) |
| { |
| (void)ds; |
| } |
| |
| void |
| coredisplay_init(DisplayState* ds) |
| { |
| static DisplayChangeListener dcl[1]; |
| |
| dcl->dpy_update = coredisplay_update; |
| dcl->dpy_refresh = coredisplay_refresh; |
| dcl->dpy_resize = coredisplay_resize; |
| register_displaychangelistener(ds, dcl); |
| } |