* @author Yunchan Cho (yunchan.cho@samsung.com)
*/
#include <string>
+#include <Ecore.h>
#include <Plugin/IBoxPluginFactory.h>
#include "Buffer/IRenderBuffer.h"
+#include "Buffer/RenderBuffer.h"
#include "Buffer/RenderBufferFactory.h"
#include "Util/Log.h"
#include "BoxData.h"
try {
m_updateTimer->start();
- m_boxBuffer->startCanvasUpdate();
RenderInfoPtr renderInfo = makeRenderInfo(renderTypeCreate);
+ m_boxBuffer->stopCanvasUpdate();
m_view->showBox(renderInfo);
+ ecore_idler_add(startUpdateRenderBufferIdlerCallback, m_boxBuffer.get());
} catch (...) {
return false;
}
m_boxInfo->pdHeight);
m_pdBuffer->allocate();
RenderInfoPtr renderInfo = makeRenderInfo(renderTypeOpenPd);
+ m_pdBuffer->stopCanvasUpdate();
m_view->showPd(m_pdBuffer->getWindow(), renderInfo);
+ ecore_idler_add(startUpdateRenderBufferIdlerCallback, m_pdBuffer.get());
} catch (...) {
return false;
}
return ECORE_CALLBACK_RENEW;
}
+Eina_Bool Box::startUpdateRenderBufferIdlerCallback(void* data)
+{
+ LogD("enter");
+ RenderBuffer* buffer = static_cast<RenderBuffer*>(data);
+ if (!buffer) {
+ LogD("no buffer");
+ } else {
+ buffer->startCanvasUpdate();
+ }
+
+ return ECORE_CALLBACK_CANCEL;
+}
// static callbacks
static Eina_Bool updateCallback(void* data);
+ static Eina_Bool startUpdateRenderBufferIdlerCallback(void* data);
// constructor
explicit Box(
LogD("Using %s engine!", ecore_evas_engine_name_get(ee));
Evas* e = ecore_evas_get(ee);
+ evas_image_cache_flush(e);
Evas_Object *eo = evas_object_rectangle_add(e);
evas_object_size_hint_weight_set(eo, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_color_set(eo, 0, 0, 0, 0);
provider_buffer_sync(m_bufferInfo);
updateBuffer();
} else {
- provider_buffer_pre_render(m_bufferInfo);
+ preRenderCallback(this, m_canvas, NULL);
memset(m_bufferAddr, color, getWidth() * getHeight() * 4);
- provider_buffer_post_render(m_bufferInfo);
- updateBuffer();
+ postRenderCallback(this, m_canvas, NULL);
}
}
bool reallocate(int width, int height);
bool free();
Evas_Object* getWindow();
+ void startCanvasUpdate();
+ void stopCanvasUpdate();
static void preRenderCallback(void* data, Evas* canvas, void* eventInfo);
static void postRenderCallback(void* data, Evas* canvas, void* eventInfo);
virtual ~RenderBuffer();
protected:
- void startCanvasUpdate();
- void stopCanvasUpdate();
void paintColor(unsigned int color);
Evas* getCanvas();
Evas_Object* getSnapshot();