Blocking the UI from CPU-intensive gdbmi parsing



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]