Changeset 4082 for libcaca/trunk/caca/driver/slang.c
- Timestamp:
- Dec 3, 2009, 2:13:15 AM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libcaca/trunk/caca/driver/slang.c
r3985 r4082 116 116 { 117 117 char *term; 118 unsigned int sigint_event; 118 119 }; 119 120 120 121 static void default_sigint (int sig) 121 122 { 122 /* Do nothing*/123 return;123 /* Warn the caller that we got SIGINT. */ 124 sigwinch_d->drv.p->sigint_event++; 124 125 } 125 126 … … 127 128 { 128 129 dp->drv.p = malloc(sizeof(struct driver_private)); 130 dp->drv.p->sigint_event = 0; 129 131 130 132 #if defined(HAVE_GETENV) && defined(HAVE_PUTENV) … … 188 190 dp->resize.allow = 0; 189 191 192 SLsig_unblock_signals(); 193 190 194 return 0; 191 195 } … … 197 201 SLtt_set_cursor_visibility(1); 198 202 SLang_reset_tty(); 203 SLsig_block_signals(); 199 204 SLsmg_reset_smg(); 200 205 SLsig_unblock_signals(); … … 232 237 int x, y, i; 233 238 239 SLsig_block_signals(); 234 240 for(i = 0; i < caca_get_dirty_rect_count(dp->cv); i++) 235 241 { … … 298 304 SLsmg_gotorc(caca_wherey(dp->cv), caca_wherex(dp->cv)); 299 305 SLsmg_refresh(); 306 SLsig_unblock_signals(); 300 307 } 301 308 … … 306 313 dp->resize.h = SLtt_Screen_Rows; 307 314 315 SLsig_block_signals(); 308 316 if(dp->resize.w != caca_get_canvas_width(dp->cv) 309 317 || dp->resize.h != caca_get_canvas_height(dp->cv)) 310 318 SLsmg_reinit_smg(); 319 SLsig_unblock_signals(); 311 320 } 312 321 … … 314 323 { 315 324 int intkey; 325 326 /* If SIGINT was caught, we pass it to the application as Ctrl-C. */ 327 if(dp->drv.p->sigint_event > 0) 328 { 329 ev->type = CACA_EVENT_KEY_PRESS; 330 ev->data.key.ch = CACA_KEY_CTRL_C; 331 ev->data.key.utf32 = 0x03; 332 ev->data.key.utf8[0] = 0x03; 333 ev->data.key.utf8[1] = 0; 334 dp->drv.p->sigint_event--; 335 return 1; 336 } 316 337 317 338 if(!SLang_input_pending(0))
Note: See TracChangeset
for help on using the changeset viewer.