vnc: Add shutdown signal handler
diff --git a/src/VNCFlinger.cpp b/src/VNCFlinger.cpp
index 37a8614..d1670ce 100644
--- a/src/VNCFlinger.cpp
+++ b/src/VNCFlinger.cpp
@@ -47,10 +47,26 @@
rfbRunEventLoop(mVNCScreen, -1, true);
- ALOGD("VNCFlinger is running!");
+ ALOGD("VNCFlinger ready to fling");
eventLoop();
+ ALOGI("VNCFlinger has left the building");
+
+ return NO_ERROR;
+}
+
+status_t VNCFlinger::stop() {
+ Mutex::Autolock _L(mEventMutex);
+
+ ALOGV("Shutting down");
+
+ destroyVirtualDisplayLocked();
+ mClientCount = 0;
+ mRunning = false;
+
+ mEventCond.signal();
+
return NO_ERROR;
}
@@ -115,6 +131,10 @@
}
status_t VNCFlinger::destroyVirtualDisplayLocked() {
+ if (!mVDSActive) {
+ return NO_INIT;
+ }
+
mCpuConsumer.clear();
mProducer.clear();
SurfaceComposerClient::destroyDisplay(mDpy);
@@ -163,17 +183,6 @@
return err;
}
-status_t VNCFlinger::stop() {
- Mutex::Autolock _L(mEventMutex);
-
- mClientCount = 0;
- mRunning = false;
-
- mEventCond.signal();
-
- return NO_ERROR;
-}
-
size_t VNCFlinger::addClient() {
Mutex::Autolock _l(mEventMutex);
if (mClientCount == 0) {