#include "e.h"
#include "tizen-hwc-server-protocol.h"
+#define E_COMP_WL_TIZEN_HWC_TIMEOUT 10.0
+
static Eina_List *_e_comp_wl_tizen_hwc_list = NULL;
typedef struct _E_Comp_Wl_Tizen_Hwc E_Comp_Wl_Tizen_Hwc;
E_Client *ec;
E_Comp_Wl_Tizen_Hwc *tizen_hwc;
uint32_t serial;
+ Ecore_Timer *timer;
};
static void
ELOGF("TIZEN-HWC", "Destory Tizen HWC Commit Feedback.", hwc_commit_feedback->ec);
+ if (hwc_commit_feedback->timer)
+ ecore_timer_del(hwc_commit_feedback->timer);
+
tizen_hwc->hwc_commit_feeback_list = eina_list_remove(tizen_hwc->hwc_commit_feeback_list, hwc_commit_feedback);
E_FREE(hwc_commit_feedback);
}
ELOGF("TIZEN-HWC", "Destroy Tizen HWC.", NULL);
}
+static Eina_Bool
+_e_comp_wl_tizen_hwc_commit_feedback_cb_timeout(void *data)
+{
+ E_Comp_Wl_Tizen_Hwc_Commit_Feedback* hwc_commit_feedback = (E_Comp_Wl_Tizen_Hwc_Commit_Feedback *)data;
+
+ if (!hwc_commit_feedback) return ECORE_CALLBACK_CANCEL;
+
+ ELOGF("TIZEN-HWC", "Timeout Tizen HWcCommit Feedback.(%p, %p)",
+ hwc_commit_feedback->ec, hwc_commit_feedback, hwc_commit_feedback->resource);
+
+ hwc_commit_feedback->timer = NULL;
+
+ tizen_hwc_commit_feedback_send_discarded(hwc_commit_feedback->resource,
+ hwc_commit_feedback->serial);
+ wl_resource_destroy(hwc_commit_feedback->resource);
+
+ return ECORE_CALLBACK_CANCEL;
+}
+
static void
_e_comp_wl_tizen_hwc_cb_commit_feedback(struct wl_client *client,
struct wl_resource *tizen_hwc_resource,
hwc_commit_feedback->ec = ec;
hwc_commit_feedback->tizen_hwc = tizen_hwc;
hwc_commit_feedback->serial = serial;
+ hwc_commit_feedback->timer = ecore_timer_add(E_COMP_WL_TIZEN_HWC_TIMEOUT,
+ _e_comp_wl_tizen_hwc_commit_feedback_cb_timeout,
+ hwc_commit_feedback);
wl_resource_set_implementation(hwc_commit_feedback->resource, NULL, hwc_commit_feedback,
_tizen_hwc_commit_feedback_cb_resource_destroy);