summaryrefslogtreecommitdiff
path: root/libxklavier/xklavier.c
diff options
context:
space:
mode:
authorSergey Udaltsov <svu@gnome.org>2005-01-08 00:00:40 +0000
committerSergey Udaltsov <svu@gnome.org>2005-01-08 00:00:40 +0000
commit46b857188be32ad483211b36635779a0241c45ef (patch)
tree255b509274bbabf941d83148ce86992cb1496235 /libxklavier/xklavier.c
parent8b45c4aa4725b28ee4be1c2310874d1620690e71 (diff)
downloadlibxklavier-46b857188be32ad483211b36635779a0241c45ef.tar.gz
optimizations/fixes
Diffstat (limited to 'libxklavier/xklavier.c')
-rw-r--r--libxklavier/xklavier.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/libxklavier/xklavier.c b/libxklavier/xklavier.c
index 14183c9..6422846 100644
--- a/libxklavier/xklavier.c
+++ b/libxklavier/xklavier.c
@@ -790,9 +790,14 @@ int XklGetBackendFeatures( void )
void _XklResetAllInfo( const char reason[] )
{
- XklDebug( 150, "Resetting all the info, reason: [%s]\n", reason );
- _XklFreeAllInfo();
- _XklLoadAllInfo();
+ XklDebug( 150, "Resetting all the cached info, reason: [%s]\n", reason );
+ _XklEnsureVTableInited();
+ if( !(*xklVTable->xklIfCachedInfoEqualsActualHandler)() )
+ {
+ (*xklVTable->xklFreeAllInfoHandler)();
+ (*xklVTable->xklLoadAllInfoHandler)();
+ } else
+ XklDebug( 100, "NOT Resetting the cache: same configuration\n" );
}
/**