diff --git a/examples/pxScene2d/src/pxWayland.cpp b/examples/pxScene2d/src/pxWayland.cpp index 18c8edb4b3..e15edd8b13 100644 --- a/examples/pxScene2d/src/pxWayland.cpp +++ b/examples/pxScene2d/src/pxWayland.cpp @@ -125,12 +125,14 @@ pxWayland::~pxWayland() if ( mWCtx ) { + WstCompositor *ctx = mWCtx; + mWCtx = NULL; rtLogInfo("removing wayland callbacks before destroying"); - WstCompositorSetInvalidateCallback(mWCtx, NULL, NULL); - WstCompositorSetHidePointerCallback(mWCtx, NULL, NULL); - WstCompositorSetClientStatusCallback(mWCtx, NULL, NULL); + WstCompositorSetInvalidateCallback(ctx, NULL, NULL); + WstCompositorSetHidePointerCallback(ctx, NULL, NULL); + WstCompositorSetClientStatusCallback(ctx, NULL, NULL); terminateClient(); - WstCompositorDestroy(mWCtx); + WstCompositorDestroy(ctx); //Adding mClientTerminated flag check because SIGKILL has to be sent to //the Process only when it got SIGTERM from terminateClient(). if (mClientTerminated && (mClientPID > 0) && (0 == kill(mClientPID, 0))) @@ -143,7 +145,6 @@ pxWayland::~pxWayland() mClientTerminated = false; } mClientPID= -1; - mWCtx = NULL; } if (gUIThreadQueue) { @@ -593,7 +594,7 @@ void pxWayland::launchAndMonitorClient() mClientMonitorStarted= true; - if ( !WstCompositorLaunchClient( mWCtx, mCmd.cString() ) ) + if ( mWCtx && !WstCompositorLaunchClient( mWCtx, mCmd.cString() ) ) { rtLogError( "pxWayland::launchAndMonitorClient: WstCompositorLaunchClient failed for (%s)", mCmd.cString() ); const char *detail= WstCompositorGetLastErrorDetail( mWCtx );