summaryrefslogtreecommitdiff
path: root/cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp')
-rw-r--r--cpp/include/Ice/Application.h1
-rw-r--r--cpp/include/IceUtil/CtrlCHandler.h4
-rw-r--r--cpp/src/Ice/Application.cpp3
-rw-r--r--cpp/src/IceUtil/CtrlCHandler.cpp6
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);
}