Changeset 26255f0a891e35ce73aef0db49ff403c3d69efeb
- Timestamp:
- 10/19/09 22:21:10 (5 weeks ago)
- Author:
- Alejandro R. Sedeño <asedeno@mit.edu>
- git-author:
- Alejandro R. Sedeño <asedeno@mit.edu> / 2009-10-13T03:19:34Z-0400
- Parents:
- 0697f097cd4d945d2e96f60d1690da9c5f4d9dc4
- Children:
- ba88ae7cb3b174b108b29aeb3ff5602b8bfd2871
- git-committer:
- Alejandro R. Sedeño <asedeno@mit.edu> / 2009-10-19T22:21:10Z-0400
- Message:
-
Add a message processing pre-select action.
- Files:
-
Legend:
- Unmodified
- Added
- Removed
-
|
r0697f09
|
r26255f0
|
|
| 297 | 297 | } |
| 298 | 298 | |
| | 299 | /* |
| | 300 | * Process any new messages we have waiting in the message queue. |
| | 301 | * Returns 1 if any messages were added to the message list, and 0 otherwise. |
| | 302 | */ |
| | 303 | int owl_process_messages(owl_ps_action *d, void *p) |
| | 304 | { |
| | 305 | int newmsgs=0; |
| | 306 | owl_message *m; |
| | 307 | |
| | 308 | /* Grab incoming messages. */ |
| | 309 | while (owl_global_messagequeue_pending(&g)) { |
| | 310 | m = owl_global_messagequeue_popmsg(&g); |
| | 311 | if (owl_process_message(m)) |
| | 312 | newmsgs = 1; |
| | 313 | } |
| | 314 | |
| | 315 | if (newmsgs) { |
| | 316 | /* follow the last message if we're supposed to */ |
| | 317 | if (owl_global_should_followlast(&g)) |
| | 318 | owl_function_lastmsg_noredisplay(); |
| | 319 | |
| | 320 | /* do the newmsgproc thing */ |
| | 321 | owl_function_do_newmsgproc(); |
| | 322 | |
| | 323 | /* redisplay if necessary */ |
| | 324 | /* this should be optimized to not run if the new messages won't be displayed */ |
| | 325 | owl_mainwin_redisplay(owl_global_get_mainwin(&g)); |
| | 326 | sepbar(NULL); |
| | 327 | if (owl_popwin_is_active(owl_global_get_popwin(&g))) { |
| | 328 | owl_popwin_refresh(owl_global_get_popwin(&g)); |
| | 329 | /* TODO: this is a broken kludge */ |
| | 330 | if (owl_global_get_viewwin(&g)) { |
| | 331 | owl_viewwin_redisplay(owl_global_get_viewwin(&g), 0); |
| | 332 | } |
| | 333 | } |
| | 334 | owl_global_set_needrefresh(&g); |
| | 335 | } |
| | 336 | return newmsgs; |
| | 337 | } |
| | 338 | |
| 299 | 339 | void owl_process_input(owl_dispatch *d) |
| 300 | 340 | { |
| … |
… |
|
| 469 | 509 | owl_editwin *tw; |
| 470 | 510 | owl_popwin *pw; |
| 471 | | int argcsave, followlast; |
| 472 | | int newmsgs; |
| | 511 | int argcsave; |
| 473 | 512 | const char *const *argvsave; |
| 474 | 513 | char *perlout, *perlerr; |
| 475 | 514 | const owl_style *s; |
| 476 | 515 | const char *dir; |
| 477 | | owl_message *m; |
| 478 | 516 | owl_options opts; |
| 479 | 517 | |
| … |
… |
|
| 624 | 662 | owl_select_add_timer(0, 1, owl_perlconfig_mainloop, NULL, NULL); |
| 625 | 663 | |
| | 664 | owl_select_add_pre_select_action(owl_process_messages, NULL, NULL); |
| | 665 | |
| 626 | 666 | owl_function_debugmsg("startup: entering main loop"); |
| 627 | 667 | /* main loop */ |
| … |
… |
|
| 636 | 676 | sepwin=owl_global_get_curs_sepwin(&g); |
| 637 | 677 | typwin=owl_global_get_curs_typwin(&g); |
| 638 | | |
| 639 | | followlast=owl_global_should_followlast(&g); |
| 640 | | |
| 641 | | /* Grab incoming messages. */ |
| 642 | | newmsgs=0; |
| 643 | | while(owl_global_messagequeue_pending(&g)) { |
| 644 | | |
| 645 | | m = owl_global_messagequeue_popmsg(&g); |
| 646 | | |
| 647 | | if(owl_process_message(m)) |
| 648 | | newmsgs = 1; |
| 649 | | } |
| 650 | | |
| 651 | | /* follow the last message if we're supposed to */ |
| 652 | | if (newmsgs && followlast) { |
| 653 | | owl_function_lastmsg_noredisplay(); |
| 654 | | } |
| 655 | | |
| 656 | | /* do the newmsgproc thing */ |
| 657 | | if (newmsgs) { |
| 658 | | owl_function_do_newmsgproc(); |
| 659 | | } |
| 660 | | |
| 661 | | /* redisplay if necessary */ |
| 662 | | /* this should be optimized to not run if the new messages won't be displayed */ |
| 663 | | if (newmsgs) { |
| 664 | | owl_mainwin_redisplay(owl_global_get_mainwin(&g)); |
| 665 | | sepbar(NULL); |
| 666 | | if (owl_popwin_is_active(owl_global_get_popwin(&g))) { |
| 667 | | owl_popwin_refresh(owl_global_get_popwin(&g)); |
| 668 | | /* TODO: this is a broken kludge */ |
| 669 | | if (owl_global_get_viewwin(&g)) { |
| 670 | | owl_viewwin_redisplay(owl_global_get_viewwin(&g), 0); |
| 671 | | } |
| 672 | | } |
| 673 | | owl_global_set_needrefresh(&g); |
| 674 | | } |
| 675 | 678 | |
| 676 | 679 | /* if a popwin just came up, refresh it */ |