/* static valiables */
static struct weston_compositor *weston_ec; /* Weston compositor */
static char *default_animation; /* default animation name */
-static int animation_fps; /* animation frame rate(frame/sec) */
static int animation_time; /* default animation time(ms) */
-static int animation_count; /* current number of animations */
static struct animation_data *free_data; /* free data list */
/* support animation names */
struct weston_output, link);
wl_list_insert(output->animation_list.prev,
&usurf->animation.animation.link);
- animation_count ++;
}
}
else if (((usurf->animation.state == ICO_WINDOW_MGR_ANIMATION_STATE_SHOW) &&
if (usurf->animation.time == 0) {
usurf->animation.time = animation_time;
}
- if (((output == NULL) && (msecs == 0)) || (nowsec >= ((uint32_t)usurf->animation.time))) {
+ if (((output == NULL) && (msecs == 0)) ||
+ (nowsec >= ((uint32_t)usurf->animation.time))) {
par = 100;
}
else {
par = (nowsec * 100 + usurf->animation.time / 2) / usurf->animation.time;
- if (par < 2) par = 2;
+ if (par < 1) par = 1;
}
- if ((par >= 100) ||
- (abs(usurf->animation.current - par) >=
- (((1000 * 100) / animation_fps) / usurf->animation.time)) ||
- ((animation_count > 1) && (par != usurf->animation.current))) {
+ if ((par >= 100) || (par != usurf->animation.current)) {
usurf->animation.current = par;
return 0;
}
}
animadata = (struct animation_data *)usurf->animation.animadata;
- if (animation_count > 0) {
- animation_count --;
- }
ev = ico_ivi_get_primary_view(usurf);
if (animadata) {
weston_ec = ec;
default_animation = (char *)ico_ivi_default_animation_name();
animation_time = ico_ivi_default_animation_time();
- animation_fps = ico_ivi_default_animation_fps();
- animation_count = 0;
ico_window_mgr_set_hook_animation(ico_window_animation);
struct weston_layout_surface *ivisurf);
/* surface destroy */
static void win_mgr_destroy_surface(struct weston_surface *surface);
+ /* weston_surface destroy listener */
+static void win_mgr_surface_destroy(struct wl_listener *listener, void *data);
/* read surface pixel */
static int win_mgr_takeSurfaceScreenshot(const char *filename,
struct uifw_win_surface *usurf,
static int _ico_ivi_debug_level = 3; /* debug Level */
static char *_ico_ivi_animation_name = NULL; /* default animation name */
static int _ico_ivi_animation_time = 500; /* default animation time */
-static int _ico_ivi_animation_fps = 30; /* animation frame rate */
/* static management table */
static struct ico_win_mgr *_ico_win_mgr = NULL;
/*--------------------------------------------------------------------------*/
/**
- * @brief ico_ivi_default_animation_fps: get default animation frame rate
- *
- * @param None
- * @return Default animation frame rate(frames/sec)
- */
-/*--------------------------------------------------------------------------*/
-WL_EXPORT int
-ico_ivi_default_animation_fps(void)
-{
- return _ico_ivi_animation_fps;
-}
-
-/*--------------------------------------------------------------------------*/
-/**
* @brief ico_ivi_get_mynode: Get my NodeId
*
* @param None
}
usurf = usurf->next_idhash;
}
- uifw_trace("ico_window_mgr_get_usurf: NULL");
+ uifw_trace("ico_window_mgr_get_usurf: NULL(%08x)", surfaceid);
return NULL;
}
/* surface changed, send event to controller */
wl_list_for_each (mgr, &_ico_win_mgr->manager_list, link) {
uifw_trace("win_mgr_send_event: Send UPDATE_SURFACE(surf=%08x) "
- "v=%d src=%d/%d dest=%d/%d(%d/%d)", id_surface,
+ "v=%d src=%d/%d dest=%d/%d(%d/%d) mgr=%08x", id_surface,
usurf->visible, usurf->client_width, usurf->client_height,
- usurf->x, usurf->y, usurf->width, usurf->height);
+ usurf->x, usurf->y, usurf->width, usurf->height, (int)mgr);
ico_window_mgr_send_update_surface(mgr->resource, id_surface,
usurf->visible, usurf->client_width,
usurf->client_height, usurf->x, usurf->y,
usurf->configure_width = usurf->client_width;
usurf->configure_height = usurf->client_height;
}
+ wl_list_init(&usurf->surface_destroy_listener.link);
+ usurf->surface_destroy_listener.notify = win_mgr_surface_destroy;
+ wl_signal_add(&surface->destroy_signal, &usurf->surface_destroy_listener);
+
wl_list_init(&usurf->client_link);
wl_list_init(&usurf->animation.animation.link);
wl_list_init(&usurf->surf_map);
(*win_mgr_hook_animation)(ICO_WINDOW_MGR_ANIMATION_DESTROY, (void *)usurf);
}
+ /* remove destroy listener */
+ wl_list_remove(&usurf->surface_destroy_listener.link);
+
/* send destroy event to controller */
win_mgr_send_event(ICO_WINDOW_MGR_DESTROY_SURFACE, usurf->surfaceid, 0);
/*--------------------------------------------------------------------------*/
/**
+ * @brief win_mgr_surface_destroy: weston_surface destroy listener
+ *
+ * @param[in] listener listener
+ * @param[in] data data (unused)
+ * @return none
+ */
+/*--------------------------------------------------------------------------*/
+static void
+win_mgr_surface_destroy(struct wl_listener *listener, void *data)
+{
+ struct uifw_win_surface *usurf = container_of(listener, struct uifw_win_surface,
+ surface_destroy_listener);
+
+ uifw_trace("win_mgr_surface_destroy: Enter(%08x)", usurf->surfaceid);
+
+ win_mgr_destroy_surface(usurf->surface);
+
+ uifw_trace("win_mgr_surface_destroy: Leave");
+}
+
+/*--------------------------------------------------------------------------*/
+/**
* @brief win_mgr_takeSurfaceScreenshot: take screen image pixel
*
* @param[in] filename output file path
if (section) {
weston_config_section_get_string(section, "default", &_ico_ivi_animation_name, NULL);
weston_config_section_get_int(section, "time", &_ico_ivi_animation_time, 500);
- weston_config_section_get_int(section, "fps", &_ico_ivi_animation_fps, 30);
}
if (_ico_ivi_animation_name == NULL)
_ico_ivi_animation_name = (char *)"fade";
if (_ico_ivi_animation_time < 100) _ico_ivi_animation_time = 500;
- if (_ico_ivi_animation_fps < 3) _ico_ivi_animation_fps = 30;
/* create ico_window_mgr management table */
_ico_win_mgr = (struct ico_win_mgr *)malloc(sizeof(struct ico_win_mgr));
wl_event_loop_add_timer(loop, win_mgr_timer_mapsurface, NULL);
wl_event_source_timer_update(_ico_win_mgr->wait_mapevent, 1000);
- uifw_info("ico_window_mgr: animation name=%s time=%d fps=%d",
- _ico_ivi_animation_name, _ico_ivi_animation_time, _ico_ivi_animation_fps);
+ uifw_info("ico_window_mgr: animation name=%s time=%d",
+ _ico_ivi_animation_name, _ico_ivi_animation_time);
uifw_info("ico_window_mgr: option flag=0x%04x log level=%d debug flag=0x%04x",
_ico_ivi_option_flag, _ico_ivi_debug_level & 0x0ffff,
(_ico_ivi_debug_level >> 16) & 0x0ffff);