} win_context;
static GList *__win_contexts;
+static guint __flush_timer;
static gint __comp(gconstpointer a, gconstpointer b)
{
return node->data;
}
+static bool __is_resumed(void)
+{
+ win_context *ctx;
+ GList *iter;
+
+ iter = __win_contexts;
+ while (iter) {
+ ctx = (win_context *)iter->data;
+ if (appcore_multiwindow_base_instance_is_resumed(ctx->inst))
+ return true;
+ iter = g_list_next(iter);
+ }
+
+ return false;
+}
+
+static gboolean __flush_memory(gpointer data)
+{
+ _DBG("Flush memory");
+ appcore_base_flush_memory();
+ __flush_timer = 0;
+ return G_SOURCE_REMOVE;
+}
+
+static void __add_flush_timer(void)
+{
+ if (__flush_timer)
+ return;
+
+ __flush_timer = g_timeout_add(5000, __flush_memory, NULL);
+}
+
+static void __remove_flush_timer(void)
+{
+ if (!__flush_timer)
+ return;
+
+ g_source_remove(__flush_timer);
+ __flush_timer = 0;
+}
+
EXPORT_API void appcore_multiwindow_base_window_on_show(int type, void *event)
{
}
if (!cxt)
return;
- if (ev->fully_obscured)
+ if (ev->fully_obscured) {
appcore_multiwindow_base_instance_pause(cxt->inst);
- else
+ if (!__is_resumed())
+ __add_flush_timer();
+ } else {
appcore_multiwindow_base_instance_resume(cxt->inst);
+ __remove_flush_timer();
+ }
}
EXPORT_API void appcore_multiwindow_base_window_on_pre_visibility(int type, void *event)
if (!cxt)
return;
- if (ev->type == ECORE_WL_WINDOW_VISIBILITY_TYPE_PRE_UNOBSCURED)
+ if (ev->type == ECORE_WL_WINDOW_VISIBILITY_TYPE_PRE_UNOBSCURED) {
appcore_multiwindow_base_instance_resume(cxt->inst);
+ __remove_flush_timer();
+ }
}
EXPORT_API void appcore_multiwindow_base_window_bind(appcore_multiwindow_base_instance_h h, Ecore_Wl_Window *wl_win)