aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKaroly Lorentey2006-01-02 07:54:50 +0000
committerKaroly Lorentey2006-01-02 07:54:50 +0000
commit24f9525b78906b2eff3635f34627216d8a8aa104 (patch)
treeec6f524794d8bbf60edfb44e9163824fd9866092 /src
parent160f08170a853b41e974b9645f8dc670c58284ee (diff)
downloademacs-24f9525b78906b2eff3635f34627216d8a8aa104.tar.gz
emacs-24f9525b78906b2eff3635f34627216d8a8aa104.zip
Experimental change: don't restore kboard after temporary changes if Emacs wasn't in single kboard state.
* src/keyboard.c (pop_kboard): Help debugging by not changing current_kboard unnecessarily. (temporarily_switch_to_single_kboard, record_single_kboard_state): Don't push_kboard if we weren't in single kboard state. Don't pop_kboard if we popped into any kboard state. git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-485
Diffstat (limited to 'src')
-rw-r--r--src/keyboard.c27
1 files changed, 18 insertions, 9 deletions
diff --git a/src/keyboard.c b/src/keyboard.c
index 8cfa4b34371..6646ea62e66 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -1139,16 +1139,17 @@ pop_kboard ()
1139#ifdef MULTI_KBOARD 1139#ifdef MULTI_KBOARD
1140 struct terminal *t; 1140 struct terminal *t;
1141 struct kboard_stack *p = kboard_stack; 1141 struct kboard_stack *p = kboard_stack;
1142 current_kboard = NULL; 1142 int found = 0;
1143 for (t = terminal_list; t; t = t->next_terminal) 1143 for (t = terminal_list; t; t = t->next_terminal)
1144 { 1144 {
1145 if (t->kboard == p->kboard) 1145 if (t->kboard == p->kboard)
1146 { 1146 {
1147 current_kboard = p->kboard; 1147 current_kboard = p->kboard;
1148 found = 1;
1148 break; 1149 break;
1149 } 1150 }
1150 } 1151 }
1151 if (current_kboard == NULL) 1152 if (!found)
1152 { 1153 {
1153 /* The terminal we remembered has been deleted. */ 1154 /* The terminal we remembered has been deleted. */
1154 current_kboard = FRAME_KBOARD (SELECTED_FRAME ()); 1155 current_kboard = FRAME_KBOARD (SELECTED_FRAME ());
@@ -1168,10 +1169,15 @@ temporarily_switch_to_single_kboard (k)
1168{ 1169{
1169#ifdef MULTI_KBOARD 1170#ifdef MULTI_KBOARD
1170 int was_locked = single_kboard; 1171 int was_locked = single_kboard;
1171 if (k != NULL) 1172 if (was_locked)
1172 push_kboard (k); 1173 {
1173 else 1174 if (k != NULL)
1174 push_kboard (current_kboard); 1175 push_kboard (k);
1176 else
1177 push_kboard (current_kboard);
1178 }
1179 else if (k != NULL)
1180 current_kboard = k;
1175 single_kboard_state (); 1181 single_kboard_state ();
1176 record_unwind_protect (restore_kboard_configuration, 1182 record_unwind_protect (restore_kboard_configuration,
1177 (was_locked ? Qt : Qnil)); 1183 (was_locked ? Qt : Qnil));
@@ -1181,7 +1187,8 @@ temporarily_switch_to_single_kboard (k)
1181void 1187void
1182record_single_kboard_state () 1188record_single_kboard_state ()
1183{ 1189{
1184 push_kboard (current_kboard); 1190 if (single_kboard)
1191 push_kboard (current_kboard);
1185 record_unwind_protect (restore_kboard_configuration, 1192 record_unwind_protect (restore_kboard_configuration,
1186 (single_kboard ? Qt : Qnil)); 1193 (single_kboard ? Qt : Qnil));
1187} 1194}
@@ -1193,8 +1200,10 @@ restore_kboard_configuration (was_locked)
1193 if (NILP (was_locked)) 1200 if (NILP (was_locked))
1194 any_kboard_state (); 1201 any_kboard_state ();
1195 else 1202 else
1196 single_kboard_state (); 1203 {
1197 pop_kboard (); 1204 single_kboard_state ();
1205 pop_kboard ();
1206 }
1198 return Qnil; 1207 return Qnil;
1199} 1208}
1200 1209