Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 292480
Collapse All | Expand All

(-)libxklavier-4.0/libxklavier/xklavier_evt.c (+16 lines)
Lines 492-497 Link Here
492
			break;
492
			break;
493
		}
493
		}
494
	default:
494
	default:
495
		if (engine != NULL
496
		    && xkl_engine_priv(engine, process_x_error)) {
497
			if (xkl_engine_priv(engine, process_x_error)
498
			    (engine, evt)) {
499
				xkl_debug(200,
500
					  "X ERROR processed by the engine: %p, "
501
					  WINID_FORMAT ", %d [%s], "
502
					  "X11 request: %d, minor code: %d\n",
503
					  dpy,
504
					  (unsigned long) evt->resourceid,
505
					  (int) evt->error_code, buf,
506
					  (int) evt->request_code,
507
					  (int) evt->minor_code);
508
				break;
509
			}
510
		}
495
		xkl_debug(200,
511
		xkl_debug(200,
496
			  "Unexpected by libxklavier X ERROR: %p, "
512
			  "Unexpected by libxklavier X ERROR: %p, "
497
			  WINID_FORMAT ", %d [%s], "
513
			  WINID_FORMAT ", %d [%s], "
(-)libxklavier-4.0/libxklavier/xklavier_evt_xkb.c (+16 lines)
Lines 162-167 Link Here
162
#endif
162
#endif
163
}
163
}
164
164
165
/*
166
 * XKB error handler
167
 */
168
gint
169
xkl_xkb_process_x_error(XklEngine * engine, XErrorEvent * xerev)
170
{
171
#ifdef HAVE_XINPUT
172
	/* Ignore XInput errors */
173
	if (xerev->error_code >= xkl_engine_backend(engine, XklXkb, xi_error_code)
174
	    && xerev->error_code <= (xkl_engine_backend(engine, XklXkb, xi_error_code) + XI_BadClass))
175
		return 1;
176
#endif
177
178
	return 0;
179
}
180
165
void
181
void
166
xkl_xkb_set_indicators(XklEngine * engine, const XklState * window_state)
182
xkl_xkb_set_indicators(XklEngine * engine, const XklState * window_state)
167
{
183
{
(-)libxklavier-4.0/libxklavier/xklavier_private.h (+7 lines)
Lines 157-162 Link Here
157
	 gint(*process_x_event) (XklEngine * engine, XEvent * xev);
157
	 gint(*process_x_event) (XklEngine * engine, XEvent * xev);
158
158
159
	/*
159
	/*
160
	 * Handles X errors.
161
	 * return 0 if further processing is needed
162
	 *        1 if error was handled
163
	 */
164
	 gint(*process_x_error) (XklEngine * engine, XErrorEvent * xerev);
165
166
	/*
160
	 * Flushes the cached server config info.
167
	 * Flushes the cached server config info.
161
	 * xkb: frees XkbDesc
168
	 * xkb: frees XkbDesc
162
	 * xmodmap: frees internal XklConfigRec
169
	 * xmodmap: frees internal XklConfigRec
(-)libxklavier-4.0/libxklavier/xklavier_private_xkb.h (-1 / +5 lines)
Lines 48-53 Link Here
48
48
49
#ifdef HAVE_XINPUT
49
#ifdef HAVE_XINPUT
50
	gint xi_event_type;
50
	gint xi_event_type;
51
52
	gint xi_error_code;
51
#endif
53
#endif
52
} XklXkb;
54
} XklXkb;
53
55
Lines 86-92 Link Here
86
						 const XklConfigRec * data,
88
						 const XklConfigRec * data,
87
						 const gboolean binary);
89
						 const gboolean binary);
88
90
89
extern gint xkl_xkb_process_x_event(XklEngine * engine, XEvent * kev);
91
extern gint xkl_xkb_process_x_event(XklEngine * engine, XEvent * xev);
92
93
extern gint xkl_xkb_process_x_error(XklEngine * engine, XErrorEvent * xerev);
90
94
91
extern void xkl_xkb_free_all_info(XklEngine * engine);
95
extern void xkl_xkb_free_all_info(XklEngine * engine);
92
96
(-)libxklavier-4.0/libxklavier/xklavier_xkb.c (-8 / +19 lines)
Lines 353-360 Link Here
353
				 &current_state_out->indicators))
353
				 &current_state_out->indicators))
354
		current_state_out->indicators &=
354
		current_state_out->indicators &=
355
		    xkl_engine_backend(engine, XklXkb,
355
		    xkl_engine_backend(engine, XklXkb,
356
				       cached_desc)->
356
				       cached_desc)->indicators->
357
		    indicators->phys_indicators;
357
		    phys_indicators;
358
	else
358
	else
359
		current_state_out->indicators = 0;
359
		current_state_out->indicators = 0;
360
}
360
}
Lines 402-409 Link Here
402
						     xkl_engine_backend
402
						     xkl_engine_backend
403
						     (engine, XklXkb,
403
						     (engine, XklXkb,
404
						      device_id),
404
						      device_id),
405
						     cached->
405
						     cached->names->
406
						     names->indicators
406
						     indicators
407
						     [indicator_num], set,
407
						     [indicator_num], set,
408
						     False, NULL);
408
						     False, NULL);
409
			else {
409
			else {
Lines 541-547 Link Here
541
#ifdef LIBXKBFILE_PRESENT
541
#ifdef LIBXKBFILE_PRESENT
542
	gint opcode;
542
	gint opcode;
543
	gboolean xkl_xkb_ext_present;
543
	gboolean xkl_xkb_ext_present;
544
	int xi_opc, xi_event_type, xi_error_code;
544
	int xi_opc;
545
545
546
	xkl_engine_priv(engine, backend_id) = "XKB";
546
	xkl_engine_priv(engine, backend_id) = "XKB";
547
	xkl_engine_priv(engine, features) = XKLF_CAN_TOGGLE_INDICATORS |
547
	xkl_engine_priv(engine, features) = XKLF_CAN_TOGGLE_INDICATORS |
Lines 564-569 Link Here
564
	xkl_engine_priv(engine, get_num_groups) = xkl_xkb_get_num_groups;
564
	xkl_engine_priv(engine, get_num_groups) = xkl_xkb_get_num_groups;
565
	xkl_engine_priv(engine, lock_group) = xkl_xkb_lock_group;
565
	xkl_engine_priv(engine, lock_group) = xkl_xkb_lock_group;
566
	xkl_engine_priv(engine, process_x_event) = xkl_xkb_process_x_event;
566
	xkl_engine_priv(engine, process_x_event) = xkl_xkb_process_x_event;
567
	xkl_engine_priv(engine, process_x_error) = xkl_xkb_process_x_error;
567
	xkl_engine_priv(engine, free_all_info) = xkl_xkb_free_all_info;
568
	xkl_engine_priv(engine, free_all_info) = xkl_xkb_free_all_info;
568
	xkl_engine_priv(engine, if_cached_info_equals_actual) =
569
	xkl_engine_priv(engine, if_cached_info_equals_actual) =
569
	    xkl_xkb_if_cached_info_equals_actual;
570
	    xkl_xkb_if_cached_info_equals_actual;
Lines 615-628 Link Here
615
		xkl_engine_priv(engine, features) |=
616
		xkl_engine_priv(engine, features) |=
616
		    XKLF_MULTIPLE_LAYOUTS_SUPPORTED;
617
		    XKLF_MULTIPLE_LAYOUTS_SUPPORTED;
617
618
619
#if HAVE_XINPUT
618
	if (XQueryExtension
620
	if (XQueryExtension
619
	    (display, "XInputExtension", &xi_opc,
621
	    (display, "XInputExtension", &xi_opc,
620
	     &xi_event_type, &xi_error_code)) {
622
	     &xkl_engine_backend(engine, XklXkb, xi_event_type),
623
	     &xkl_engine_backend(engine, XklXkb, xi_error_code))) {
621
		xkl_debug(150, "XInputExtension found (%d, %d, %d)\n",
624
		xkl_debug(150, "XInputExtension found (%d, %d, %d)\n",
622
			  xi_opc, xi_event_type, xi_error_code);
625
			  xi_opc,
626
			  xkl_engine_backend(engine, XklXkb,
627
					     xi_event_type),
628
			  xkl_engine_backend(engine, XklXkb,
629
					     xi_error_code));
623
		xkl_engine_priv(engine, features) |= XKLF_DEVICE_DISCOVERY;
630
		xkl_engine_priv(engine, features) |= XKLF_DEVICE_DISCOVERY;
624
	} else
631
	} else {
625
		xkl_debug(0, "XInputExtension not found\n");
632
		xkl_debug(0, "XInputExtension not found\n");
633
		xkl_engine_backend(engine, XklXkb, xi_event_type) = -1;
634
		xkl_engine_backend(engine, XklXkb, xi_error_code) = -1;
635
	}
636
#endif
626
	return 0;
637
	return 0;
627
#else
638
#else
628
	xkl_debug(160,
639
	xkl_debug(160,
(-)libxklavier-4.0/libxklavier/xklavier_xmm.c (+1 lines)
Lines 327-332 Link Here
327
	xkl_engine_priv(engine, lock_group) = xkl_xmm_lock_group;
327
	xkl_engine_priv(engine, lock_group) = xkl_xmm_lock_group;
328
328
329
	xkl_engine_priv(engine, process_x_event) = xkl_xmm_process_x_event;
329
	xkl_engine_priv(engine, process_x_event) = xkl_xmm_process_x_event;
330
	xkl_engine_priv(engine, process_x_error) = NULL;
330
	xkl_engine_priv(engine, free_all_info) = xkl_xmm_free_all_info;
331
	xkl_engine_priv(engine, free_all_info) = xkl_xmm_free_all_info;
331
	xkl_engine_priv(engine, if_cached_info_equals_actual) =
332
	xkl_engine_priv(engine, if_cached_info_equals_actual) =
332
	    xkl_xmm_if_cached_info_equals_actual;
333
	    xkl_xmm_if_cached_info_equals_actual;

Return to bug 292480