Blocking the UI from CPU-intensive gdbmi parsing
- From: Jonathon Jongsma <jonathon quotidian org>
- To: nemiver list <nemiver-list gnome org>
- Subject: Blocking the UI from CPU-intensive gdbmi parsing
- Date: Sat, 07 Mar 2009 14:53:26 -0600
In general, nemiver is pretty good about not blocking UI while it is doing processing of
various things (I/O, parsing, etc). But sometimes where there is a lot of data to parse,
the UI blocks quite badly. For example, if you debug nemiver with itself, and then open
the 'open file' dialog (Ctrl+O), the list of source files is very long, and parsing this
file list takes quite a few seconds. During this time, the dialog is completely frozen
(and sometimes the dialog hasn't even gotten a chance to draw itself fully before it
becomes frozen, so it is a frozen ghost dialog). In experimenting with bug
http://bugzilla.gnome.org/show_bug.cgi?id=564294, I was toying around with the idea of
providing a pulsing progress bar while the file list is being populated, but since the UI
is blocked, there's no way to pulse a progress bar. Is there anything we can do to
improve this situation? Can we farm out some of these long intensive parsing operations
(e.g. GDBMIParser::parse_file_list()) out to worker threads? Can we break up the long
parsing functions into smaller chunks and do them in idle callbacks? I realize these
options all have significant drawbacks in terms of increasing the complexity of the code,
but I'm just trying to think out loud. Dodji, have you thought about this at all?
--
jonner
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]