pSglInfo->pBitmap = bitmap.release();
_EvasObjectImageChange(pSglInfo);
+ BufferInfo bufferInfo;
+ pSglInfo->pBitmap->Lock(bufferInfo);
+ pSglInfo->pBitmap->Unlock();
+
if (needSglMakeCurrent)
{
_SglMakeCurrent(eglDisplay, drawSurface, readSurface, eglContext);
void
_EvasObjectImageChange(_SglInfo* pSglInfo)
{
- if (isEvasNativeSetEnabled)
+ Evas* pEvas = evas_object_evas_get(pSglInfo->pObject);
+ if (pEvas == null)
{
- Evas* pEvas = evas_object_evas_get(pSglInfo->pObject);
- if (pEvas == null)
- {
- return;
- }
-
- Evas_Engine_Info_GL_X11* pEvasInfo = (Evas_Engine_Info_GL_X11 *)evas_engine_info_get(pEvas);
- if (pEvasInfo == null)
- {
- return;
- }
- Evas_Native_Surface nativeSurface = {0, };
- nativeSurface.type = EVAS_NATIVE_SURFACE_X11;
- nativeSurface.version = EVAS_NATIVE_SURFACE_VERSION;
- nativeSurface.data.x11.pixmap = (unsigned long)pSglInfo->nativePixmap;
- nativeSurface.data.x11.visual = pEvasInfo->info.visual;
- evas_object_image_native_surface_set(pSglInfo->pObject, &nativeSurface);
+ return;
}
- else
+
+ Evas_Engine_Info_GL_X11* pEvasInfo = (Evas_Engine_Info_GL_X11 *)evas_engine_info_get(pEvas);
+ if (pEvasInfo == null)
{
- BufferInfo bufferInfo;
- pSglInfo->pBitmap->Lock(bufferInfo);
- evas_object_image_data_set(pSglInfo->pObject, bufferInfo.pPixels);
- pSglInfo->pBitmap->Unlock();
+ return;
}
+ Evas_Native_Surface nativeSurface = {0, };
+ nativeSurface.type = EVAS_NATIVE_SURFACE_X11;
+ nativeSurface.version = EVAS_NATIVE_SURFACE_VERSION;
+ nativeSurface.data.x11.pixmap = (unsigned long)pSglInfo->nativePixmap;
+ nativeSurface.data.x11.visual = pEvasInfo->info.visual;
+ evas_object_image_native_surface_set(pSglInfo->pObject, &nativeSurface);
}
#if defined(FGRAPHICS_INTERNAL_USE_RESTORE_CONTEXT)
}
#endif
- if (isEvasNativeSetEnabled)
+ if (isDoublePixmapEnabled && pSglInfo->pSecondSglInfo != null)
{
- if (isDoublePixmapEnabled && pSglInfo->pSecondSglInfo != null)
+ if (pSglInfo->swapDone || pSglInfo->pSecondSglInfo->swapDone)
{
- if (pSglInfo->swapDone || pSglInfo->pSecondSglInfo->swapDone)
+ _SglInfo* pBackSglInfo = null;
+ _SglInfo* pFrontSglInfo = null;
+
+ if (pSglInfo->isBackbuffer)
{
- _SglInfo* pBackSglInfo = null;
- _SglInfo* pFrontSglInfo = null;
-
- if (pSglInfo->isBackbuffer)
- {
- pBackSglInfo = pSglInfo;
- pFrontSglInfo = pSglInfo->pSecondSglInfo;
- }
- else
- {
- pBackSglInfo = pSglInfo->pSecondSglInfo;
- pFrontSglInfo = pSglInfo;
- }
- pBackSglInfo->isBackbuffer = false;
- pFrontSglInfo->isBackbuffer = true;
-
- pFrontSglInfo->wasShown = false;
- pFrontSglInfo->swapDone = false;
- if (pSglInfo->pVisualElement != null)
- {
- pSglInfo->pVisualElement->SetSurface(pFrontSglInfo->pVisualElementSurface);
- }
- evas_object_image_pixels_dirty_set(pFrontSglInfo->pObject, EINA_TRUE);
- evas_object_hide(pBackSglInfo->pObject);
-
- if (pSglInfo->isFirstSwap)
- {
- pBackSglInfo->isFirstSwap = false;
- pFrontSglInfo->isFirstSwap = false;
-
- eglWaitGL();
- BufferInfo bufferInfo;
- pFrontSglInfo->pBitmap->Lock(bufferInfo);
- pFrontSglInfo->pBitmap->Merge(Point(0, 0), *pBackSglInfo->pBitmap, Rectangle(0, 0, bufferInfo.width, bufferInfo.height));
- pFrontSglInfo->pBitmap->Unlock();
- }
+ pBackSglInfo = pSglInfo;
+ pFrontSglInfo = pSglInfo->pSecondSglInfo;
}
- }
- else
- {
- if (pSglInfo->pObject != null)
+ else
+ {
+ pBackSglInfo = pSglInfo->pSecondSglInfo;
+ pFrontSglInfo = pSglInfo;
+ }
+ pBackSglInfo->isBackbuffer = false;
+ pFrontSglInfo->isBackbuffer = true;
+
+ pFrontSglInfo->wasShown = false;
+ pFrontSglInfo->swapDone = false;
+ if (pSglInfo->pVisualElement != null)
+ {
+ pSglInfo->pVisualElement->SetSurface(pFrontSglInfo->pVisualElementSurface);
+ }
+ evas_object_image_pixels_dirty_set(pFrontSglInfo->pObject, EINA_TRUE);
+ evas_object_hide(pBackSglInfo->pObject);
+
+ if (pSglInfo->isFirstSwap)
{
- evas_object_image_pixels_dirty_set(pSglInfo->pObject, EINA_TRUE);
+ pBackSglInfo->isFirstSwap = false;
+ pFrontSglInfo->isFirstSwap = false;
+
+ eglWaitGL();
+ BufferInfo bufferInfo;
+ pFrontSglInfo->pBitmap->Lock(bufferInfo);
+ pFrontSglInfo->pBitmap->Merge(Point(0, 0), *pBackSglInfo->pBitmap, Rectangle(0, 0, bufferInfo.width, bufferInfo.height));
+ pFrontSglInfo->pBitmap->Unlock();
}
}
}
else
{
- if (pSglInfo->pVisualElement != null)
+ if (pSglInfo->pObject != null)
{
- pSglInfo->pVisualElement->SetFlushNeeded();
+ evas_object_image_pixels_dirty_set(pSglInfo->pObject, EINA_TRUE);
}
}