Eina_Bool visible;
int vis_ref;
uint32_t input_event_filter;
+ int buffer_mode;
};
/* normal UI client */
tizen_remote_surface_provider_send_visibility
(provider->resource,
TIZEN_REMOTE_SURFACE_PROVIDER_VISIBILITY_TYPE_INVISIBLE);
+
+ if (provider->buffer_mode)
+ e_pixmap_buffer_clear(provider->common.ec->pixmap, EINA_TRUE);
}
}
EINA_SAFETY_ON_NULL_RETURN(remote_buffer);
if (remote_surface->version >= 2)
- e_comp_wl_buffer_reference(&remote_buffer->ref, NULL);
+ {
+ E_Comp_Wl_Buffer *buf = NULL;
+
+ if (remote_buffer->ref.buffer &&
+ remote_buffer->ref.buffer->resource)
+ buf = remote_buffer->ref.buffer;
+
+ e_comp_wl_buffer_reference(&remote_buffer->ref, NULL);
+
+ /*Send release event to provider*/
+ if (remote_surface->provider->buffer_mode &&
+ buf && buf->busy == 0)
+ {
+ if (remote_surface->provider->buffer_mode == 1 ||
+ (remote_surface->provider->buffer_mode == 2 &&
+ remote_surface->provider->vis_ref == 0))
+ {
+ E_Client *ec = remote_surface->provider->common.ec;
+ e_pixmap_buffer_clear(ec->pixmap, EINA_TRUE);
+ }
+ }
+ }
}
static void
/* send resource id */
res_id = e_pixmap_res_id_get(ec->pixmap);
tizen_remote_surface_provider_send_resource_id(resource, res_id);
+
+ /* set buffer mode */
+ provider->buffer_mode = e_config->rsm_buffer_release_mode;
}
static void
E_CONFIG_VAL(D, T, indicator_plug_name, STR);
E_CONFIG_VAL(D, T, launchscreen_without_timer, UCHAR);
E_CONFIG_VAL(D, T, log_type, INT);
+ E_CONFIG_VAL(D, T, rsm_buffer_release_mode, INT);
}
/* externally accessible functions */
E_CONFIG_LIMIT(e_config->save_win_buffer, 0, 1);
E_CONFIG_LIMIT(e_config->launchscreen_without_timer, 0, 1);
E_CONFIG_LIMIT(e_config->log_type, 0, 255);
+ E_CONFIG_LIMIT(e_config->rsm_buffer_release_mode, 0, 2);
}
E_API int
const char *indicator_plug_name;
Eina_Bool launchscreen_without_timer;
int log_type;
+ int rsm_buffer_release_mode; /* 0:none, 1:release on free, 2:release on hide */
};
struct _E_Config_Desklock_Background