Timeline
May 30, 2011:
- 10:27 PM Changeset [cc305b5]release-1.10release-1.8release-1.9 by
- Move log-writing onto a background thread. Currently, Barnowl writes message logs on the same thread as the UI and other I/O. This means that if writing log files is very slow (e.g. if logpath or classlogpath point to somewhere in AFS and the fileserver that volume relies on is very slow to respond), barnowl freezes up until the write completes. This patch creates a background logging thread as part of initialization and runs a main loop on that thread. Logging is then accomplished by posting tasks that write to log files to that thread, a la how other threads can post tasks to the UI thread's main loop. Post a quit task to the logging thread's mainloop instead of quitting directly Calling g_main_quit() on the main thread to quit the logging thread could resultin log tasks still in its queue getting lost. Instead, after we've shut down everything that could log messages, post a quit task to the log thread so that it'll only get run after everything outstanding has been processed.
- 10:27 PM Changeset [44976fe]release-1.10release-1.8release-1.9 by
- Make owl_select_post_task take a context argument Make owl_select_post_task take a context argument to indicate /which/ running mainloop it should run the task on, since now there's more than one.
- 7:51 PM Changeset [9835b7a] by
- Merge 1081d0fb7e406801281c29e6ec2e0f9362f9b70c into 259e60a8abc2d2d41bc7a484b02a334fdd13857f
- 7:49 PM Ticket #175 ("startup" command produces error when run for the first time) closed by
- fixed: Pushed as commit 6eb3ed9ee6c4b94d35628e5b6b2bbaeccca565a9.
- 7:46 PM Changeset [259e60a8]release-1.10release-1.8release-1.9 by
- Remove the length limit on field values in :info
- 7:45 PM Changeset [8ffa264]release-1.10release-1.8release-1.9 by
- startup: check for file before calling owl_util_file_deleteline This fixes trac #175: '"startup" command produces error when run for the first time'. The startup command deletes duplicate lines, and thus errored when no file existed. A check has been added to prevent this.
- 7:43 PM Changeset [6eb3ed9]release-1.10release-1.8release-1.9 by
- Show how far you are in a long message Addresses most of ticket #119 - it shows how far you are in a long message, but not in a message that you're typing. The display style I've somewhat arbitrarily chosen is to replace <truncated> with <truncated: $num_lines_through/$total_lines>. Additionally, the <truncated> part of sepbar has been moved to be next to 'SCROLL', which it is most similar to.
May 28, 2011:
- 2:24 AM Ticket #180 (Paste detection in wordwrap) created by
- When pasting zephyr excerpts, code, and other preformatted text, it's …
- 2:07 AM Ticket #179 (Intelligently (refuse to) wordwrap lists) created by
- When I hit M-q in the middle of something like […] Or […] I want …
May 27, 2011:
- 12:08 PM Ticket #178 (failure message from addbuddy is clobbered by inaccurate success message) created by
- owl_zephyr_addbuddy owl_function_errors if it can't open the …
- 12:00 PM Ticket #65 (ability to set exposure arbitrarily) closed by
- fixed: Fixed by commit f203cad04d71e968a11be5e72e6c9d805e02010d
May 25, 2011:
- 11:10 PM Changeset [414a272] by
- Merge 6476c0e00a11e070e7480afa291a8a0976aa7828 into 697221fc51f0060043c93821f0358317f6bc6ab0
- 11:05 PM Changeset [6476c0e]release-1.10release-1.8release-1.9 by
- stderr_redirect_handler: Handle partial or failed reads Signed-off-by: Anders Kaseorg <andersk@mit.edu>
- 3:45 PM Ticket #177 (Explicitly set jabber status should not be overridden) created by
- If I explicitly set a jabber status, it should not be overridden. …
May 24, 2011:
- 9:36 PM Changeset [f1c845b] by
- Merge 697221fc51f0060043c93821f0358317f6bc6ab0 into b848e308e9f8f212ddbf787f08111af994000512
- 9:36 PM Changeset [697221f]release-1.10release-1.8release-1.9 by
- Inform the user when an unpunt command does nothing Also, make the corresponding message for referencing a punt filter by number not an error. It's not an internal error, so it needn't be logged.
- 9:36 PM Changeset [78f6c35]release-1.10release-1.8release-1.9 by
- Don't use skiptokens in punt/unpunt There was no need for it. This cuts down on one of the more nasty usages of skiptokens in command parsing.
- 9:22 PM Changeset [2d415cc]release-1.10release-1.8release-1.9 by
- Fix the documentation for punt/unpunt The full extent of the horrors of these commands' syntax had not quite been correctly documented.
- 5:39 PM Ticket #176 (viewuser should support non-zephyr protocols) created by
- I frequently talk with one person on jabber, and whenever I want to …
- 12:10 AM Changeset [b848e30]release-1.10release-1.8release-1.9 by
- Fix the build on libzephyr-less machines Just don't compile the event source functions at all. There's no good reason to use them without libzephyr support. We should really move towards not building zephyr.c in that case anyway.
May 23, 2011:
- 10:24 PM Changeset [33b6431b]release-1.10release-1.8release-1.9 by
- Clarify owl_io_dispatch ownership A created owl_io_dispatch is owned by whoever created. For instances where owl_select needs to remove one of them, we instead invalidate them. In the case of perl IO dispatches, they are owned by the nebulous blob that implicitly maps fd to IO dispatch. This is completely insane, but should avoid leaving people with invalid owl_io_dispatch pointers. Use this same mechanism to restore owl_select_prune_bad_fds logic. We really need to kill this and owl_timer in favor of glib's things.
- 9:09 PM Changeset [f97c1a6]release-1.10release-1.8release-1.9 by
- Merge branch 'g_main_loop' The logic in owl_select_prune_bad_fds still needs to be reimplemented. Conflicts: configure.ac owl.c select.c
- 8:57 PM Changeset [1d21d9f]release-1.10release-1.8release-1.9 by
- Use sigwaitinfo instead of sigwait Eh, may as well give the signal handlers a little bit more rope.
- 8:57 PM Changeset [ba12b44]release-1.10release-1.8release-1.9 by
- Add owl_select_post_task helper function Honestly, the only thing you'd ever want to do to a message loop from another thread is post a one-off task to it. Why Glib makes this so difficult is beyond me.
- 8:57 PM Changeset [117b2ba]release-1.10release-1.8release-1.9 by
- Move owl_process_input_char to owl.c It would be nice to move some functions out of there too, but it really makes no sense in select.c.
- 8:57 PM Changeset [dc1edbd]release-1.10release-1.8release-1.9 by
- Add a GSource for AIM events The AIM file descriptor hack is somewhat less of a hack now. Remove code related to the old AIM implementation now that it's been superceded.
- 8:57 PM Changeset [08e9842]release-1.10release-1.8release-1.9 by
- Cleanly destroy the signal thread on shutdown This isn't strictly necessary here, but we should probably be in the habit of safely cleaning up our helper threads. Switch the implementation from GThread to pthreads directly. The cleanest way to kill a signaling thread is to send it SIGTERM with pthread_kill, but GThread doesn't expose that and gives no way to get at the pthread_t.
- 8:57 PM Changeset [6bd485e]release-1.10release-1.8release-1.9 by
- Reset signal dispositions and mask, in case our parent was lame Also check return values more carefully.
- 8:57 PM Changeset [47128d9]release-1.10release-1.8release-1.9 by
- Allow interrupts to be taken at any point This way we can catch SIGINT in the middle of a search if we care. (Though ideally we wouldn't block the event loop when searching like this.)
- 8:57 PM Changeset [1491439]release-1.10release-1.8release-1.9 by
- Don't deliver SIGALRM through the signal thread We don't do anything with it, and code that uses alarm(), of which we have none, wouldn't expect it to be set to something useful anyway.
- 8:57 PM Changeset [e2cc848]release-1.10release-1.8release-1.9 by
- Just ignore SIGPIPE altogether There's not much point in switching back and forth from ignoring it and mostly ignoring it. Also, we don't handle SIGCHLD so remove the code for it. (We actually also disable it in the Jabber module because XML::Stream sets $SIG{PIPE}. Meh.)
- 8:57 PM Changeset [81db142]release-1.10release-1.8release-1.9 by
- Make owl_signal_init take a signal-thread callback Instead of pushing the work directly the main thread. This will allow us to react to SIGINT earlier.
- 8:57 PM Changeset [257b9c4]release-1.10release-1.8release-1.9 by
- Punt pre-select actions The four users are now directly handled with GSources.
- 8:57 PM Changeset [3535a6e]release-1.10release-1.8release-1.9 by
- First go at sigwait-based signal handling Instead of relying on pselect and signal masking to listen for signals, which glib doesn't support, we spawn a dedicated signal thread that loops in sigwait. These signals are posted back to the main message loop which may handle them at will. This avoids the need for complex reentrant code and sig_atomic_t. This removes the final pre-select action. SIGINT doesn't quite work right yet because we can no longer take it in the middle of an event loop iteration.
- 8:57 PM Changeset [959cb85]release-1.10release-1.8release-1.9 by
- Add a zephyr GSource This may actually have some use as a GSource instead of g_idle_add since we queue messages up and only process so many at a time. The use of ZQLength isn't strictly necessary, but we may as well be fancy and wait for the poll() to tell us if there's any point in reading before doing so. This is the third pre-select action.
- 8:57 PM Changeset [6b4033f]release-1.10release-1.8release-1.9 by
- Also make owl_process_messages a GSource This is the second pre-select action.
- 8:57 PM Changeset [4cc49bc]release-1.10release-1.8release-1.9 by
- Make the owl_window redraw hook a GSource (Should this be a g_idle_add instead?) This is the first pre-select action to die.
- 8:57 PM Changeset [2c79eae]release-1.10release-1.8release-1.9 by
- Start of GMainContext code Add GSources to feed owl_timer and owl_io_dispatch events into the main loop. Also add a hack so pre-select actions run at all. Glib's main loop has a hard priority system, so it prefers that prepare/check hooks return if the event would actually do anything. We probably want to replace every pre-select action with a dedicated GSource (or maybe a bunch of g_idle_add calls). Signals are also racy right now; glib uses select/poll instead of pselect/ppoll, so you can't actually listen for signals on the same thread. (In fact, the single-threaded version of g_child_watch_add doesn't actually work.) That's okay as what we were doing doesn't work when you add a second thread and thread safety is sort of the point of this work. The AIM hack need also be restored. Keep owl_select around for now as reference.
- 8:57 PM Changeset [1255365]release-1.10release-1.8release-1.9 by
- Link to gthread-2.0 so we can use glib's threading code
- 8:57 PM Changeset [ebb8498]release-1.10release-1.8release-1.9 by
- Mark some functions static They were never called outside select.c
- 8:20 PM Changeset [57bc141]release-1.10release-1.8release-1.9 by
- Punt _owl_select_timer_eq It hasn't been used for a long time.
- 8:20 PM Changeset [feeb835]release-1.10release-1.8release-1.9 by
- Remove OwlGlobalNotifier typedef Ugh. This is what I get for being sloppy with my experiments.
May 20, 2011:
- 4:50 PM Changeset [1081d0f] by
- Remove the length limit on field values in :info
- 3:59 PM Changeset [4c7c21f]release-1.10release-1.8release-1.9 by
- owl_dict_create also never fails And like everywhere else, we weren't checking the return values most of the time anyway.
- 3:59 PM Changeset [351c535]release-1.10release-1.8release-1.9 by
- owl_dict_get_keys never fails No sense in returning an error code.
- 3:59 PM Changeset [fda61d3]release-1.10release-1.8release-1.9 by
- g_strdup and g_new0 never fail Remove pointless failure checks cluttering the code.
- 3:59 PM Changeset [3b8a563]release-1.10release-1.8release-1.9 by
- Remove NULL checks before calling g_free g_free handles the NULL check for us.
May 18, 2011:
- 4:28 PM Changeset [1881f36] by
- owl_function_addstartup checks for file before calling owl_util_file_deleteline This fixes trac #175: '"startup" command produces error when run for the first time'. The startup command deletes duplicate lines, and thus errored when no file existed. A check has been added to prevent this.
- 4:10 PM Changeset [c6c51d2] by
- Merge 92fc39701adde0a4eb22ba7dad30e5d136fcc77c into 7865479440dd042766ecbbc1119b45e5eb7cd6a6
- 3:48 PM Changeset [a844239] by
- Merge 7865479440dd042766ecbbc1119b45e5eb7cd6a6 into 64c829aed5e966415464e38f393083d736e281e8
- 3:47 PM Changeset [7865479]release-1.10release-1.8release-1.9 by
- Replace owl_text_tr with g_strdelimit Signed-off-by: Anders Kaseorg <andersk@mit.edu>
May 17, 2011:
- 12:59 PM Changeset [64c829a]release-1.10release-1.8release-1.9 by
- Encode glib version requirements in pkg-config check Reported-by: Evan Broder <broder@mit.edu> Signed-off-by: Alejandro R. Sedeño <asedeno@mit.edu>
May 13, 2011:
- 1:04 PM Changeset [ede073c]release-1.10release-1.8release-1.9 by
- Allow overriding OWL_VERSION_STRING on the command-line. The Debian packaging does this, and we should be polite and not generate a warning on every file when they do.
May 12, 2011:
- 11:40 PM Ticket #175 ("startup" command produces error when run for the first time) created by
- When ~/.owl/startup doesn't exist, barnowl produces an undesired error …
- 4:39 PM Changeset [92fc397] by
- owl_dict_create also never fails And like everywhere else, we weren't checking the return values most of the time anyway.
- 4:39 PM Changeset [c72f884] by
- owl_dict_get_keys never fails No sense in returning an error code.
- 4:39 PM Changeset [7fd0bf7] by
- g_strdup and g_new0 never fail Remove pointless failure checks cluttering the code.
- 4:39 PM Changeset [55b2de8] by
- Remove NULL checks before calling g_free g_free handles the NULL check for us.
May 11, 2011:
- 9:12 PM Changeset [13ee8f2]release-1.10release-1.8release-1.9 by
- Replace Net::IRC mentions with AnyEvent::IRC
- 6:03 PM Changeset [1753ea0]release-1.10release-1.8release-1.9 by
- Merge remote-tracking branch 'nelhage/anyevent-irc'
- 5:39 PM Ticket #174 (Narrowing to instance names with quotes doesn't quite work) closed by
- fixed: I already fixed that in commit 9518a859987b60867c3566157ad0a24358cd28fb.
- 5:24 PM Ticket #174 (Narrowing to instance names with quotes doesn't quite work) created by
- If you write to instance "test" and 'test', and then attempt to narrow …
May 3, 2011:
- 9:01 PM Ticket #173 (Barnowl does not visually distinguish between messages to -c foo and ...) created by
- If I'm subscribed to -c foo on my local realm and to -c foo …
- 5:23 PM Changeset [7655e08] by
- Merge f578d1880dfdaae710755e0db5c3101e89cb0440 into 4fd211f3a533efcedaf4d0dc7c01e02087ad2e39
May 1, 2011:
- 5:30 PM Changeset [3fa0181] by
- Merge 7b4f3bea704ed82f2c36ba19fcf354d7442a5bb7 into 4fd211f3a533efcedaf4d0dc7c01e02087ad2e39
- 5:29 PM Changeset [7b4f3be]release-1.10release-1.8release-1.9 by
- Punt owl_global_hascolors There's not much point as we're hardly abstracting ncurses away. Either call has_colors directly or just don't bother and let another layer take care of it.
- 5:29 PM Changeset [9efa5bd]release-1.10release-1.8release-1.9 by
- Clamp the number of color pairs to 256 without ext-color Debian doesn't build their ncurses with ext-color support, so it only supports 256 colorpairs. However, ncurses still reports the full 32768 value, and color pairs end up trampling over each other. When 256 is exceeded, the existing colorpair reset logic will now kick in and fix things. Reword a comment accordingly. While I'm here, get rid of the colorpairs member in owl_global. ncurses' works just fine. Reported-by: Mats Ahlgren <mats_a@mit.edu>
Note: See TracTimeline
for information about the timeline view.