am 8324d38c: am a0bd0cbe: Merge "opengles emulator: Fixed Windows renderer termination"

* commit '8324d38c281d97dce68204d1c8ff2a5a3849a09b':
  opengles emulator: Fixed Windows renderer termination
This commit is contained in:
David Turner
2011-08-10 01:21:42 -07:00
committed by Android Git Automerger
4 changed files with 18 additions and 17 deletions

View File

@@ -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;
}

View File

@@ -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);
}

View File

@@ -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

View File

@@ -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);