@@ -17,7 +17,9 @@ static EGLResult<EGLContext> CreateContext(EGLDisplay display, EGLConfig config,
1717 EGLint attributes[] = {EGL_CONTEXT_CLIENT_VERSION, 2 , EGL_NONE};
1818
1919 EGLContext context = eglCreateContext (display, config, share, attributes);
20-
20+ if (context == EGL_NO_CONTEXT) {
21+ LogLastEGLError ();
22+ }
2123 return {context != EGL_NO_CONTEXT, context};
2224}
2325
@@ -41,6 +43,7 @@ static EGLResult<EGLConfig> ChooseEGLConfiguration(EGLDisplay display) {
4143
4244 if (eglChooseConfig (display, attributes, &egl_config, 1 , &config_count) !=
4345 EGL_TRUE) {
46+ LogLastEGLError ();
4447 return {false , nullptr };
4548 }
4649
@@ -50,8 +53,10 @@ static EGLResult<EGLConfig> ChooseEGLConfiguration(EGLDisplay display) {
5053}
5154
5255TizenEGLSurface::~TizenEGLSurface () {
53- eglDestroySurface (tizen_native_egl_window_->GetEGLDisplayHandle (),
54- egl_surface_);
56+ if (eglDestroySurface (tizen_native_egl_window_->GetEGLDisplayHandle (),
57+ egl_surface_) != EGL_TRUE) {
58+ LogLastEGLError ();
59+ }
5560 tizen_native_egl_window_ = nullptr ;
5661}
5762
@@ -81,45 +86,51 @@ TizenEGLContext::TizenEGLContext(
8186 egl_resource_context_ = resource_ctx.second ;
8287}
8388
84- std::unique_ptr<TizenEGLSurface>
85- TizenEGLContext::CreateTizenEGLWindowSurface () {
86- const EGLint attribs[] = {EGL_NONE};
87- EGLSurface surface = eglCreateWindowSurface (
88- tizen_native_egl_window_->GetEGLDisplayHandle (), egl_config_,
89- ecore_wl2_egl_window_native_get (
90- tizen_native_egl_window_->GetEglWindowHandle ()),
91- attribs);
92-
93- return std::make_unique<TizenEGLSurface>(tizen_native_egl_window_, surface);
94- }
95-
9689TizenEGLContext::~TizenEGLContext () {
9790 if (eglDestroyContext (tizen_native_egl_window_->GetEGLDisplayHandle (),
9891 egl_context_) != EGL_TRUE) {
9992 FT_LOGE (" Failed to destroy egl context" );
93+ LogLastEGLError ();
10094 }
10195 if (eglDestroyContext (tizen_native_egl_window_->GetEGLDisplayHandle (),
10296 egl_resource_context_) != EGL_TRUE) {
10397 FT_LOGE (" Failed to destroy egl resource context" );
98+ LogLastEGLError ();
10499 }
105100 tizen_native_egl_window_ = nullptr ;
106101}
107102
103+ bool TizenEGLContext::IsValid () {
104+ return tizen_native_egl_window_ && tizen_native_egl_window_->IsValid () &&
105+ egl_config_ != nullptr && egl_context_ != EGL_NO_CONTEXT &&
106+ egl_resource_context_ != EGL_NO_CONTEXT;
107+ }
108+
109+ std::unique_ptr<TizenEGLSurface>
110+ TizenEGLContext::CreateTizenEGLWindowSurface () {
111+ const EGLint attribs[] = {EGL_NONE};
112+ EGLSurface surface = eglCreateWindowSurface (
113+ tizen_native_egl_window_->GetEGLDisplayHandle (), egl_config_,
114+ ecore_wl2_egl_window_native_get (
115+ tizen_native_egl_window_->GetEglWindowHandle ()),
116+ attribs);
117+ if (surface == EGL_NO_SURFACE) {
118+ LogLastEGLError ();
119+ }
120+ return std::make_unique<TizenEGLSurface>(tizen_native_egl_window_, surface);
121+ }
122+
108123std::unique_ptr<TizenEGLSurface>
109124TizenEGLContext::CreateTizenEGLPbufferSurface () {
110125 const EGLint attribs[] = {EGL_WIDTH, 1 , EGL_HEIGHT, 1 , EGL_NONE};
111126 EGLSurface surface = eglCreatePbufferSurface (
112127 tizen_native_egl_window_->GetEGLDisplayHandle (), egl_config_, attribs);
113-
128+ if (surface == EGL_NO_SURFACE) {
129+ LogLastEGLError ();
130+ }
114131 return std::make_unique<TizenEGLSurface>(tizen_native_egl_window_, surface);
115132}
116133
117- bool TizenEGLContext::IsValid () {
118- return tizen_native_egl_window_ && tizen_native_egl_window_->IsValid () &&
119- egl_config_ != nullptr && egl_context_ != EGL_NO_CONTEXT &&
120- egl_resource_context_ != EGL_NO_CONTEXT;
121- }
122-
123134TizenSurfaceGL::TizenSurfaceGL (
124135 std::shared_ptr<TizenNativeWindow> tizen_native_window)
125136 : tizen_native_window_(tizen_native_window) {
@@ -162,6 +173,7 @@ bool TizenSurfaceGL::OnMakeCurrent() {
162173 tizen_egl_window_surface_->GetEGLSurfaceHandle (),
163174 tizen_context_gl_->GetEGLContextHandle ()) != EGL_TRUE) {
164175 FT_LOGE (" Could not make the onscreen context current" );
176+ LogLastEGLError ();
165177 return false ;
166178 }
167179 return true ;
@@ -179,6 +191,7 @@ bool TizenSurfaceGL::OnMakeResourceCurrent() {
179191 tizen_context_gl_->GetEGLResourceContextHandle ()) !=
180192 EGL_TRUE) {
181193 FT_LOGE (" Could not make the offscreen context current" );
194+ LogLastEGLError ();
182195 return false ;
183196 }
184197 return true ;
@@ -195,6 +208,7 @@ bool TizenSurfaceGL::OnClearCurrent() {
195208 EGL_NO_SURFACE, EGL_NO_SURFACE,
196209 EGL_NO_CONTEXT) != EGL_TRUE) {
197210 FT_LOGE (" Could not clear context" );
211+ LogLastEGLError ();
198212 return false ;
199213 }
200214 return true ;
@@ -211,6 +225,7 @@ bool TizenSurfaceGL::OnPresent() {
211225 tizen_egl_window_surface_->GetEGLSurfaceHandle ()) !=
212226 EGL_TRUE) {
213227 FT_LOGE (" Could not swap EGl buffer" );
228+ LogLastEGLError ();
214229 return false ;
215230 }
216231 return true ;
@@ -348,16 +363,9 @@ void* TizenSurfaceGL::OnProcResolver(const char* name) {
348363#undef GL_FUNC
349364
350365TizenSurfaceGL::~TizenSurfaceGL () {
366+ OnClearCurrent ();
351367 tizen_egl_window_surface_ = nullptr ;
352368 tizen_egl_pbuffer_surface_ = nullptr ;
353369 tizen_context_gl_ = nullptr ;
354370 tizen_native_window_ = nullptr ;
355371}
356-
357- void TizenSurfaceGL::SetSize (int32_t width, int32_t height) {
358- // FIXME : I think we have to find another way.
359- FT_LOGD (" Resize egl window %d %d" , width, height);
360- ecore_wl2_egl_window_resize_with_rotation (
361- tizen_native_window_->GetTizenNativeEGLWindow ()->GetEglWindowHandle (), 0 ,
362- 0 , width, height, 0 );
363- }
0 commit comments