#include <dlog.h>
#include <Ecore_Wl2.h>
+#include <glib.h>
#include <memory>
win_ctx_(new WindowContext()) {
}
-RemoteSurfaceEvas::~RemoteSurfaceEvas() = default;
+RemoteSurfaceEvas::~RemoteSurfaceEvas() {
+ ClearNoRenderTimer();
+}
RemoteSurfaceEvas::RemoteSurfaceEvas(RemoteSurfaceEvas&&) noexcept = default;
RemoteSurfaceEvas& RemoteSurfaceEvas::operator=(
RemoteSurfaceEvas&&) noexcept = default;
}
impl_->img_tbm_->Update(tbm);
+ ClearNoRenderTimer();
if (isAdded)
OnEvasAdded(GetAppId(), GetInstId(), GetPid(), *(impl_->img_tbm_));
else
const EvasObject& image) {
}
+void RemoteSurfaceEvas::ClearNoRenderTimer() {
+ if (impl_->no_render_timer_ > 0) {
+ elm_win_norender_pop(impl_->viewer_win_->GetRaw());
+ g_source_remove(impl_->no_render_timer_);
+ impl_->no_render_timer_ = 0;
+ LOGI("Clear no render push");
+ }
+}
+
+void RemoteSurfaceEvas::NoRenderPush(int timeout) {
+ LOGI("No render push start");
+ elm_win_norender_push(impl_->viewer_win_->GetRaw());
+ impl_->no_render_timer_ = g_timeout_add(timeout,
+ [](gpointer user_data)->gboolean {
+ RemoteSurfaceEvas* rs = static_cast<RemoteSurfaceEvas*>(user_data);
+ elm_win_norender_pop(rs->impl_->viewer_win_->GetRaw());
+ rs->impl_->no_render_timer_ = 0;
+ LOGW("No render push timeout!");
+ return G_SOURCE_REMOVE;
+ }, this);
+}
+
void RemoteSurfaceEvas::Bind(const EvasObject& win) {
struct wl_surface* surface;
Ecore_Wl2_Window* wl_win;
int pid, const EvasObject& image) override;
void OnEvasChanged(const std::string& appId, const std::string& instId,
int pid, const EvasObject& image) override;
+ void ClearNoRenderTimer();
+ void NoRenderPush(int timeout);
private:
Visibility GetVisibility(unsigned int win);