if (mdcl->fini) {
mdcl->fini();
}
+
+ g_free(mdcl);
}
static void maru_display_notify_exit(Notifier *notifier, void *data) {
}
}
-//TODO: interface
void maru_display_init(DisplayState *ds, DisplayType display_type, int full_screen)
{
INFO("init qemu display\n");
break;
}
- //register_displaychangelistener(mdcl->dcl);
screenshot = g_malloc0(sizeof(MaruScreenShot));
screenshot->pixels = NULL;
screenshot->request = false;
MULTI_DEBUG_CHANNEL(tizen, maru_sdl);
+static DisplayChangeListener *dcl;
+
static QEMUBH *sdl_init_bh;
static QEMUBH *sdl_resize_bh;
static QEMUBH *sdl_update_bh;
SDL_GetWMInfo(&info);
#endif
+ sdl_resize_bh = qemu_bh_new(maru_sdl_resize_bh, NULL);
+ sdl_update_bh = qemu_bh_new(maru_sdl_update_bh, NULL);
qemu_bh_schedule(sdl_resize_bh);
#ifdef SDL_THREAD
qemu_cond_destroy(&sdl_cond);
qemu_mutex_destroy(&sdl_mutex);
#endif
+
+ unregister_displaychangelistener(dcl);
+ g_free(dcl);
}
static void maru_sdl_resize(void)
{
INFO("maru sdl resize\n");
- qemu_bh_schedule(sdl_resize_bh);
+ if (sdl_resize_bh != NULL) {
+ qemu_bh_schedule(sdl_resize_bh);
+ }
}
static void maru_sdl_update(void)
qemu_bh_schedule(sdl_init_bh);
}
-void maru_sdl_pre_init(MaruDisplayChangeListener *mdcl) {
- DisplayChangeListener *dcl = g_malloc0(sizeof(DisplayChangeListener));
+void maru_sdl_pre_init(MaruDisplayChangeListener *mdcl)
+{
+ dcl = g_malloc0(sizeof(DisplayChangeListener));
dcl->ops = &dcl_ops;
mdcl->surface_init = maru_sdl_init;
mdcl->set_interpolation = maru_sdl_set_interpolation;
sdl_init_bh = qemu_bh_new(maru_sdl_init_bh, NULL);
- sdl_resize_bh = qemu_bh_new(maru_sdl_resize_bh, NULL);
- sdl_update_bh = qemu_bh_new(maru_sdl_update_bh, NULL);
#ifdef SDL_THREAD
qemu_mutex_init(&sdl_mutex);
qemu_cond_init(&sdl_cond);
#endif
+
register_displaychangelistener(dcl);
}
MULTI_DEBUG_CHANNEL(tizen, maru_shm);
+static DisplayChangeListener *dcl;
+
static DisplaySurface *dpy_surface;
static void *shared_memory = (void *) 0;
static int skin_shmid;
INFO("number of current attaches = %d\n",
(int)shm_info.shm_nattch);
}
+
+ unregister_displaychangelistener(dcl);
+ g_free(dcl);
}
static void maru_shm_resize(void)
INFO("Memory attached at 0x%X\n", (int)shared_memory);
}
-
-void maru_shm_pre_init(MaruDisplayChangeListener *mdcl) {
- DisplayChangeListener *dcl = g_malloc0(sizeof(DisplayChangeListener));
+void maru_shm_pre_init(MaruDisplayChangeListener *mdcl)
+{
+ dcl = g_malloc0(sizeof(DisplayChangeListener));
dcl->ops = &dcl_ops;
- register_displaychangelistener(dcl);
mdcl->surface_init = maru_shm_init;
mdcl->fini = maru_shm_quit;
mdcl->resize = maru_shm_resize;
+
+ register_displaychangelistener(dcl);
}
exit(1);
#endif
#ifdef CONFIG_MARU
+# ifdef CONFIG_SDL
} else if (strstart(p, "maru_sdl", &opts)) {
-#ifdef CONFIG_SDL
display = DT_MARU_SDL;
-#endif
+# endif
+# ifdef CONFIG_USE_SHM
} else if (strstart(p, "maru_shm", &opts)) {
-#ifdef CONFIG_USE_SHM
display = DT_MARU_SHM;
-#endif
+# endif
+# ifdef CONFIG_QT
} else if (strstart(p, "maru_qt", &opts)) {
-#ifdef CONFIG_QT
display = DT_MARU_QT;
-#endif
-#endif
+# endif
+#endif /* CONFIG_MARU */
} else if (strstart(p, "none", &opts)) {
display = DT_NONE;
} else {