diff options
-rw-r--r-- | libxklavier/xklavier.c | 7 | ||||
-rw-r--r-- | libxklavier/xklavier_evt.c | 6 | ||||
-rw-r--r-- | libxklavier/xklavier_evt_xkb.c | 7 | ||||
-rw-r--r-- | libxklavier/xklavier_evt_xmm.c | 3 | ||||
-rw-r--r-- | libxklavier/xklavier_private.h | 1 |
5 files changed, 16 insertions, 8 deletions
diff --git a/libxklavier/xklavier.c b/libxklavier/xklavier.c index fd03a41..14183c9 100644 --- a/libxklavier/xklavier.c +++ b/libxklavier/xklavier.c @@ -788,6 +788,13 @@ int XklGetBackendFeatures( void ) return xklVTable->features; } +void _XklResetAllInfo( const char reason[] ) +{ + XklDebug( 150, "Resetting all the info, reason: [%s]\n", reason ); + _XklFreeAllInfo(); + _XklLoadAllInfo(); +} + /** * Calling through vtable */ diff --git a/libxklavier/xklavier_evt.c b/libxklavier/xklavier_evt.c index e0188e6..438020c 100644 --- a/libxklavier/xklavier_evt.c +++ b/libxklavier/xklavier_evt.c @@ -40,8 +40,7 @@ int XklFilterEvents( XEvent * xev ) break; case MappingNotify: XklDebug( 200, "%s\n", _XklGetEventName( xev->type ) ); - _XklFreeAllInfo( ); - _XklLoadAllInfo( ); + _XklResetAllInfo( "X event: MappingNotify" ); break; case GravityNotify: XklDebug( 200, "%s\n", _XklGetEventName( xev->type ) ); @@ -300,8 +299,7 @@ void _XklPropertyEvHandler( XPropertyEvent * pev ) XklDebug( 160, "New value of *_NAMES_PROP_ATOM on root window\n" ); /* If root window got new *_NAMES_PROP_ATOM - it most probably means new keyboard config is loaded by somebody */ - _XklFreeAllInfo( ); - _XklLoadAllInfo( ); + _XklResetAllInfo( "New value of *_NAMES_PROP_ATOM on root window" ); } } } /* XKLL_MANAGE_WINDOW_STATES */ diff --git a/libxklavier/xklavier_evt_xkb.c b/libxklavier/xklavier_evt_xkb.c index 87142b8..1cc0292 100644 --- a/libxklavier/xklavier_evt_xkb.c +++ b/libxklavier/xklavier_evt_xkb.c @@ -89,11 +89,14 @@ int _XklXkbEventHandler( XEvent *xev ) case XkbIndicatorMapNotify: case XkbControlsNotify: case XkbNamesNotify: + /* not really fair - but still better than flooding... */ + XklDebug( 200, "warning: configuration event %s is not actually processed\n", + _XklXkbGetXkbEventName( kev->any.xkb_type ) ); + break; case XkbNewKeyboardNotify: XklDebug( 150, "%s\n", _XklXkbGetXkbEventName( kev->any.xkb_type ) ); - _XklFreeAllInfo(); - _XklLoadAllInfo(); + _XklResetAllInfo( "XKB event: XkbNewKeyboardNotify" ); break; /** diff --git a/libxklavier/xklavier_evt_xmm.c b/libxklavier/xklavier_evt_xmm.c index f2e3a4a..7574f3e 100644 --- a/libxklavier/xklavier_evt_xmm.c +++ b/libxklavier/xklavier_evt_xmm.c @@ -75,8 +75,7 @@ static int _XklXmmPropertyEventHandler( XPropertyEvent* kpe ) */ if( kpe->atom == xklVTable->baseConfigAtom ) { - _XklFreeAllInfo(); - _XklLoadAllInfo(); + _XklResetAllInfo( "base config atom changed" ); } return 0; diff --git a/libxklavier/xklavier_private.h b/libxklavier/xklavier_private.h index 8841e6e..2b92d3f 100644 --- a/libxklavier/xklavier_private.h +++ b/libxklavier/xklavier_private.h @@ -199,6 +199,7 @@ extern void _XklErrHandler( Display * dpy, XErrorEvent * evt ); extern Window _XklGetRegisteredParent( Window win ); extern Bool _XklLoadAllInfo( void ); extern void _XklFreeAllInfo( void ); +extern void _XklResetAllInfo( const char reason[] ); extern Bool _XklLoadWindowTree( void ); extern Bool _XklLoadSubtree( Window window, int level, XklState * initState ); |