summaryrefslogtreecommitdiff
path: root/comphelper/source/misc/uieventslogger.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'comphelper/source/misc/uieventslogger.cxx')
-rw-r--r--comphelper/source/misc/uieventslogger.cxx62
1 files changed, 41 insertions, 21 deletions
diff --git a/comphelper/source/misc/uieventslogger.cxx b/comphelper/source/misc/uieventslogger.cxx
index a60ecc9058de..3ff875a4e67d 100644
--- a/comphelper/source/misc/uieventslogger.cxx
+++ b/comphelper/source/misc/uieventslogger.cxx
@@ -97,6 +97,7 @@ namespace
abbrs[OUString::createFromAscii("ToolbarsMenuController")] = OUString::createFromAscii("15");
abbrs[OUString::createFromAscii("SfxToolBoxControl")] = OUString::createFromAscii("16");
abbrs[OUString::createFromAscii("SfxAsyncExec")] = OUString::createFromAscii("17");
+ abbrs[OUString::createFromAscii("AcceleratorExecute")] = OUString::createFromAscii("18");
};
}
@@ -132,7 +133,6 @@ namespace comphelper
bool m_Active;
TimeValue m_LastLogEventTime;
- Mutex m_LogMutex;
const OUString m_LogPath;
const TimeValue m_IdleTimeout;
sal_Int32 m_SessionLogEventCount;
@@ -145,6 +145,7 @@ namespace comphelper
// static methods and data
static ptr getInstance();
+ static void prepareMutex();
static bool shouldActivate();
static bool getEnabledFromCoreController();
static bool getEnabledFromCfg();
@@ -218,17 +219,19 @@ namespace comphelper
sal_Bool UiEventsLogger::isEnabled()
{
try {
- UiEventsLogger_Impl::ptr inst = UiEventsLogger_Impl::getInstance();
- if(inst==UiEventsLogger_Impl::ptr()) return false;
- return inst->m_Active;
+ UiEventsLogger_Impl::prepareMutex();
+ Guard<Mutex> singleton_guard(UiEventsLogger_Impl::singleton_mutex);
+ return UiEventsLogger_Impl::getInstance()->m_Active;
} catch(...) { return false; } // never throws
}
sal_Int32 UiEventsLogger::getSessionLogEventCount()
{
- UiEventsLogger_Impl::ptr inst = UiEventsLogger_Impl::getInstance();
- if(inst==UiEventsLogger_Impl::ptr()) return 0;
- return inst->m_SessionLogEventCount;
+ try {
+ UiEventsLogger_Impl::prepareMutex();
+ Guard<Mutex> singleton_guard(UiEventsLogger_Impl::singleton_mutex);
+ return UiEventsLogger_Impl::getInstance()->m_SessionLogEventCount;
+ } catch(...) { return 0; } // never throws
}
void UiEventsLogger::appendDispatchOrigin(
@@ -262,8 +265,9 @@ namespace comphelper
const Sequence<PropertyValue>& args)
{
try {
- UiEventsLogger_Impl::ptr inst = UiEventsLogger_Impl::getInstance();
- if(inst!=UiEventsLogger_Impl::ptr()) inst->logDispatch(url, args);
+ UiEventsLogger_Impl::prepareMutex();
+ Guard<Mutex> singleton_guard(UiEventsLogger_Impl::singleton_mutex);
+ UiEventsLogger_Impl::getInstance()->logDispatch(url, args);
} catch(...) { } // never throws
}
@@ -275,8 +279,9 @@ namespace comphelper
const OUString& param)
{
try {
- UiEventsLogger_Impl::ptr inst = UiEventsLogger_Impl::getInstance();
- if(inst!=UiEventsLogger_Impl::ptr()) inst->logVcl(parent_id, window_type, id, method, param);
+ UiEventsLogger_Impl::prepareMutex();
+ Guard<Mutex> singleton_guard(UiEventsLogger_Impl::singleton_mutex);
+ UiEventsLogger_Impl::getInstance()->logVcl(parent_id, window_type, id, method, param);
} catch(...) { } // never throws
}
@@ -303,8 +308,23 @@ namespace comphelper
void UiEventsLogger::disposing()
{
+ // we dont want to create an instance just to dispose it
+ UiEventsLogger_Impl::prepareMutex();
+ Guard<Mutex> singleton_guard(UiEventsLogger_Impl::singleton_mutex);
if(UiEventsLogger_Impl::instance!=UiEventsLogger_Impl::ptr())
+ UiEventsLogger_Impl::getInstance()->disposing();
+ }
+
+ void UiEventsLogger::reinit()
+ {
+ UiEventsLogger_Impl::prepareMutex();
+ Guard<Mutex> singleton_guard(UiEventsLogger_Impl::singleton_mutex);
+ if(UiEventsLogger_Impl::instance)
+ {
UiEventsLogger_Impl::instance->disposing();
+ delete UiEventsLogger_Impl::instance;
+ UiEventsLogger_Impl::instance = NULL;
+ }
}
// private UiEventsLogger_Impl methods
@@ -325,7 +345,6 @@ namespace comphelper
const URL& url,
const Sequence<PropertyValue>& args)
{
- Guard<Mutex> log_guard(m_LogMutex);
if(!m_Active) return;
if(!url.Complete.match(URL_UNO) && !url.Complete.match(URL_FILE)) return;
checkIdleTimeout();
@@ -377,7 +396,6 @@ namespace comphelper
const OUString& method,
const OUString& param)
{
- Guard<Mutex> log_guard(m_LogMutex);
if(!m_Active) return;
checkIdleTimeout();
@@ -600,19 +618,22 @@ namespace comphelper
}
UiEventsLogger_Impl::ptr UiEventsLogger_Impl::instance = UiEventsLogger_Impl::ptr();
- Mutex * UiEventsLogger_Impl::singleton_mutex = NULL;
UiEventsLogger_Impl::ptr UiEventsLogger_Impl::getInstance()
{
- if(singleton_mutex==NULL)
+ if(instance == NULL)
+ instance = UiEventsLogger_Impl::ptr(new UiEventsLogger_Impl());
+ return instance;
+ }
+
+ Mutex * UiEventsLogger_Impl::singleton_mutex = NULL;
+ void UiEventsLogger_Impl::prepareMutex()
+ {
+ if(singleton_mutex == NULL)
{
Guard<Mutex> global_guard(Mutex::getGlobalMutex());
- if(singleton_mutex==NULL)
+ if(singleton_mutex == NULL)
singleton_mutex = new Mutex();
}
- Guard<Mutex> singleton_guard(singleton_mutex);
- if(instance == 0)
- instance = UiEventsLogger_Impl::ptr(new UiEventsLogger_Impl());
- return instance;
}
sal_Int32 UiEventsLogger_Impl::findIdx(const Sequence<PropertyValue>& args, const OUString& key)
@@ -625,7 +646,6 @@ namespace comphelper
void UiEventsLogger_Impl::disposing()
{
- Guard<Mutex> log_guard(m_LogMutex);
m_Active = false;
m_Logger.clear() ;
m_LogHandler.clear();