* commit '8324d38c281d97dce68204d1c8ff2a5a3849a09b': opengles emulator: Fixed Windows renderer termination
This commit is contained in:
@@ -91,6 +91,10 @@ void FrameBuffer::finalize(){
|
||||
s_egl.eglMakeCurrent(s_theFrameBuffer->m_eglDisplay, NULL, NULL, NULL);
|
||||
s_egl.eglDestroySurface(s_theFrameBuffer->m_eglDisplay,s_theFrameBuffer->m_eglSurface);
|
||||
s_egl.eglDestroyContext(s_theFrameBuffer->m_eglDisplay,s_theFrameBuffer->m_eglContext);
|
||||
if (s_theFrameBuffer->m_subWin) {
|
||||
destroySubWindow(s_theFrameBuffer->m_subWinDisplay,
|
||||
s_theFrameBuffer->m_subWin);
|
||||
}
|
||||
delete s_theFrameBuffer;
|
||||
s_theFrameBuffer = NULL;
|
||||
}
|
||||
|
||||
@@ -38,9 +38,11 @@ EGLNativeWindowType createSubWindow(FBNativeWindowType p_window,
|
||||
|
||||
RegisterClass(&wc);
|
||||
printf("creating window %d %d %d %d\n",x,y,width,height);
|
||||
EGLNativeWindowType ret = CreateWindow("subWin",
|
||||
EGLNativeWindowType ret = CreateWindowEx(
|
||||
WS_EX_NOPARENTNOTIFY, // do not bother our parent window
|
||||
"subWin",
|
||||
"sub",
|
||||
WS_CHILD,
|
||||
WS_CHILD|WS_DISABLED,
|
||||
x,y,width,height,
|
||||
p_window,
|
||||
NULL,
|
||||
@@ -51,5 +53,5 @@ EGLNativeWindowType createSubWindow(FBNativeWindowType p_window,
|
||||
}
|
||||
|
||||
void destroySubWindow(EGLNativeDisplayType dis,EGLNativeWindowType win){
|
||||
DestroyWindow(win);
|
||||
PostMessage(win, WM_CLOSE, 0, 0);
|
||||
}
|
||||
|
||||
@@ -140,7 +140,7 @@ int main(int argc, char *argv[])
|
||||
//
|
||||
// run the server listener loop
|
||||
//
|
||||
server->Main(); // never returns
|
||||
server->Main();
|
||||
#else
|
||||
//
|
||||
// on windows we need to handle messages for the
|
||||
@@ -152,24 +152,15 @@ int main(int argc, char *argv[])
|
||||
|
||||
//
|
||||
// Dispatch events for the subwindow
|
||||
// During termination of the render server, the FrameBuffer
|
||||
// will be finalized, the Framebuffer subwindow will
|
||||
// get destroyed and the following loop will exit.
|
||||
//
|
||||
MSG msg;
|
||||
HWND hWnd = FrameBuffer::getFB()->getSubWindow();
|
||||
bool done = 0;
|
||||
while(!done) {
|
||||
GetMessage(&msg, hWnd, 0, 0);
|
||||
while( GetMessage(&msg, hWnd, 0, 0) > 0 ) {
|
||||
TranslateMessage(&msg);
|
||||
DispatchMessage(&msg);
|
||||
|
||||
//
|
||||
// if server thread has exiting
|
||||
// wait for it to exit and done.
|
||||
//
|
||||
if (server->isExiting()) {
|
||||
int exitStatus;
|
||||
server->wait(&exitStatus);
|
||||
done = true;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
@@ -44,7 +44,11 @@ TcpStream::TcpStream(int sock, size_t bufSize) :
|
||||
TcpStream::~TcpStream()
|
||||
{
|
||||
if (m_sock >= 0) {
|
||||
#ifdef _WIN32
|
||||
closesocket(m_sock);
|
||||
#else
|
||||
::close(m_sock);
|
||||
#endif
|
||||
}
|
||||
if (m_buf != NULL) {
|
||||
free(m_buf);
|
||||
|
||||
Reference in New Issue
Block a user