aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/keyboard.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/src/keyboard.c b/src/keyboard.c
index baf313c7a62..522cfc3ccf2 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -1138,8 +1138,23 @@ void
1138pop_kboard () 1138pop_kboard ()
1139{ 1139{
1140#ifdef MULTI_KBOARD 1140#ifdef MULTI_KBOARD
1141 struct device *d;
1141 struct kboard_stack *p = kboard_stack; 1142 struct kboard_stack *p = kboard_stack;
1142 current_kboard = p->kboard; 1143 int ok = 0;
1144 current_kboard = NULL;
1145 for (d = device_list; d; d = d->next_device)
1146 {
1147 if (d->kboard == p->kboard)
1148 {
1149 current_kboard = p->kboard;
1150 break;
1151 }
1152 }
1153 if (current_kboard == NULL)
1154 {
1155 /* The display we remembered has been deleted. */
1156 current_kboard = FRAME_KBOARD (SELECTED_FRAME ());
1157 }
1143 kboard_stack = p->next; 1158 kboard_stack = p->next;
1144 xfree (p); 1159 xfree (p);
1145#endif 1160#endif
@@ -1177,11 +1192,11 @@ static Lisp_Object
1177restore_kboard_configuration (was_locked) 1192restore_kboard_configuration (was_locked)
1178 Lisp_Object was_locked; 1193 Lisp_Object was_locked;
1179{ 1194{
1180 pop_kboard ();
1181 if (NILP (was_locked)) 1195 if (NILP (was_locked))
1182 any_kboard_state (); 1196 any_kboard_state ();
1183 else 1197 else
1184 single_kboard_state (); 1198 single_kboard_state ();
1199 pop_kboard ();
1185 return Qnil; 1200 return Qnil;
1186} 1201}
1187 1202