diff options
Diffstat (limited to 'cpp')
-rw-r--r-- | cpp/include/Ice/Application.h | 1 | ||||
-rw-r--r-- | cpp/include/IceUtil/CtrlCHandler.h | 4 | ||||
-rw-r--r-- | cpp/src/Ice/Application.cpp | 3 | ||||
-rw-r--r-- | cpp/src/IceUtil/CtrlCHandler.cpp | 6 |
4 files changed, 8 insertions, 6 deletions
diff --git a/cpp/include/Ice/Application.h b/cpp/include/Ice/Application.h index 034b3cdbde4..6843c6a65f4 100644 --- a/cpp/include/Ice/Application.h +++ b/cpp/include/Ice/Application.h @@ -19,6 +19,7 @@ namespace Ice { using IceUtil::CtrlCHandler; +using IceUtil::CtrlCHandlerCallback; #ifdef ICE_CPP11_MAPPING enum class SignalPolicy : unsigned char diff --git a/cpp/include/IceUtil/CtrlCHandler.h b/cpp/include/IceUtil/CtrlCHandler.h index a27554a8852..1b616894bed 100644 --- a/cpp/include/IceUtil/CtrlCHandler.h +++ b/cpp/include/IceUtil/CtrlCHandler.h @@ -52,10 +52,10 @@ class ICE_API CtrlCHandler { public: - CtrlCHandler(CtrlCHandlerCallback = ICE_NULLPTR); + explicit CtrlCHandler(CtrlCHandlerCallback = ICE_NULLPTR); ~CtrlCHandler(); - void setCallback(CtrlCHandlerCallback); + CtrlCHandlerCallback setCallback(CtrlCHandlerCallback); CtrlCHandlerCallback getCallback() const; }; diff --git a/cpp/src/Ice/Application.cpp b/cpp/src/Ice/Application.cpp index 1fafb4370bb..c826f07524e 100644 --- a/cpp/src/Ice/Application.cpp +++ b/cpp/src/Ice/Application.cpp @@ -341,9 +341,8 @@ Ice::Application::holdInterrupt() Mutex::Lock lock(_mutex); // we serialize all the interrupt-setting if(_released) { - _previousCallback = _ctrlCHandler->getCallback(); _released = false; - _ctrlCHandler->setCallback(holdInterruptCallback); + _previousCallback = _ctrlCHandler->setCallback(holdInterruptCallback); } // else, we were already holding signals } diff --git a/cpp/src/IceUtil/CtrlCHandler.cpp b/cpp/src/IceUtil/CtrlCHandler.cpp index 656555aa74f..a7900cfa0b9 100644 --- a/cpp/src/IceUtil/CtrlCHandler.cpp +++ b/cpp/src/IceUtil/CtrlCHandler.cpp @@ -70,11 +70,13 @@ CtrlCHandlerException::ice_clone() const } #endif -void +CtrlCHandlerCallback CtrlCHandler::setCallback(CtrlCHandlerCallback callback) { IceUtilInternal::MutexPtrLock<IceUtil::Mutex> lock(globalMutex); + CtrlCHandlerCallback oldCallback = _callback; _callback = callback; + return oldCallback; } CtrlCHandlerCallback @@ -97,7 +99,7 @@ static BOOL WINAPI handlerRoutine(DWORD dwCtrlType) } callback = _callback; } - if(callback != 0) + if(callback) { callback(dwCtrlType); } |