thumb.surface = 0;
thumb.fbcount = 0;
thumb.pixel_data = NULL;
+ thumb.thumb_timer = NULL;
+ thumb.orgsurface = 0;
this->page = page;
this->subpage = subpage;
this->position = position;
/*--------------------------------------------------------------------------*/
CicoHSMenuTile::~CicoHSMenuTile(void)
{
+ if (thumb.thumb_timer) {
+ ecore_timer_del(thumb.thumb_timer);
+ thumb.thumb_timer = NULL;
+ }
}
/*--------------------------------------------------------------------------*/
small_icon = NULL;
thumb_reduce_x = ICO_HS_MENUTILE_THUMBNAIL_REDUCE_PIX;
thumb_reduce_y = ICO_HS_MENUTILE_THUMBNAIL_REDUCE_PIX;
+ if (thumb.thumb_timer) {
+ ecore_timer_del(thumb.thumb_timer);
+ thumb.thumb_timer = NULL;
+ }
/*tile*/
tile = evas_object_image_filled_add(evas);
ico_syc_unmap_thumb(thumb.surface);
thumb.surface = 0;
}
+ if (thumb.thumb_timer) {
+ ecore_timer_del(thumb.thumb_timer);
+ thumb.thumb_timer = NULL;
+ }
if (tile != NULL){
evas_object_del(tile);
tile = NULL;
evas_object_show(tile);
}
}
+ if (thumb.thumb_timer) {
+ ecore_timer_del(thumb.thumb_timer);
+ thumb.thumb_timer = NULL;
+ }
if (small_icon) {
evas_object_hide(small_icon);
}
ICO_DBG("CicoHSMenuTile::ValidThumbnail(appid=%p<%s>) run=%d surf=%08x",
this->appid, appid, app_running, surface);
+ thumb.orgsurface = surface;
+
if ((! app_running) || (surface == 0)) {
if (thumb.surface != 0) {
sprintf(sWork, ICO_HS_THUMB_ICODIR ICO_HS_THUMB_FILEDIR "/%08x."
if (small_icon) {
evas_object_hide(small_icon);
}
+ if (thumb.thumb_timer) {
+ ecore_timer_del(thumb.thumb_timer);
+ thumb.thumb_timer = NULL;
+ }
ICO_DBG("CicoHSMenuTile::ValidThumbnail: %s(%08x) hide small icon",
appid, surface);
}
/*--------------------------------------------------------------------------*/
/**
+ * @brief CicoHSMenuTile::RetryThumbnail
+ * check and retry thumbnail
+ *
+ * @param none
+ * @return none
+ */
+/*--------------------------------------------------------------------------*/
+void
+CicoHSMenuTile::RetryThumbnail(void)
+{
+ thumb.thumb_timer = NULL;
+
+ ICO_DBG("CicoHSMenuTile::RetryThumbnaili: surf=%08x app=%s", thumb.orgsurface, appid);
+
+ if ((icon == tile) && (thumb.orgsurface != 0)) {
+ app_running = false;
+ ValidThumbnail(thumb.orgsurface);
+ }
+}
+
+/*--------------------------------------------------------------------------*/
+/**
* @brief CicoHSMenuTile::SetThumbnail
* tile is thumbnail
*
free(thumb.pixel_data);
thumb.pixel_data = NULL;
icon = tile;
+ if (thumb.thumb_timer) {
+ ecore_timer_del(thumb.thumb_timer);
+ }
+ thumb.thumb_timer = ecore_timer_add(ICO_HS_MENUTILE_THUMBNAIL_RETRYTIME,
+ CicoHSMenuTile::TimerThumbnail, (void *)this);
}
if (icon != old_icon) {
/*--------------------------------------------------------------------------*/
/**
+ * @brief CicoHSMenuTile::TimerThumbnail
+ * recheck thumbnail
+ *
+ * @param[in] data CicoHSMenuTile object
+ * @return fixed ECORE_CALLBACK_CANCEL
+ */
+/*--------------------------------------------------------------------------*/
+Eina_Bool
+CicoHSMenuTile::TimerThumbnail(void *data)
+{
+ CicoHSMenuTile *tile = (CicoHSMenuTile *)data;
+
+ tile->RetryThumbnail();
+
+ return ECORE_CALLBACK_CANCEL;
+}
+
+/*--------------------------------------------------------------------------*/
+/**
* @brief CicoHSMenuTile::ShowMenu
* change menu show/hide for live thumbnail update cycle
*
#define ICO_HS_MENUTILE_THUMBNAIL_REDUCE_RATE 10
#define ICO_HS_MENUTILE_THUMBNAIL_REDUCTION 4
+#define ICO_HS_MENUTILE_THUMBNAIL_RETRYTIME (0.3f) /* thumbnail retry time(sec) */
+
/*shared memory buffer*/
#define ICO_HS_THUMB_ICODIR "/tmp/ico"
#define ICO_HS_THUMB_FILEDIR "/thumbnail"
int fbcount; // frame buffer change counter
char *pixel_data; // glReadPixels data buffer
int pixel_bufsize; // data buffer size
+ Ecore_Timer *thumb_timer; // retry timer
+ int orgsurface; // original surface id
};
class CicoHSMenuTile
void SetThumbnail(ico_syc_thumb_info_t *info);
void ShowMenu(bool show);
void SetOrgThumbnail(CicoHSMenuTile *orgTile);
+ void RetryThumbnail(void);
+ static Eina_Bool TimerThumbnail(void *data);
private:
char appid[ICO_HS_MAX_PROCESS_NAME];