Re: [Vala] How to write a responsive GTK+ app that reads a file in the background?
- From: Abderrahim Kitouni <a kitouni gmail com>
- To: Leonardo Ferreira Fontenelle <leonardof gnome org>
- Cc: vala-list gnome org
- Subject: Re: [Vala] How to write a responsive GTK+ app that reads a file in the background?
- Date: Thu, 29 Sep 2011 06:20:31 +0100
Hello Leonardo,
2011/9/29 Leonardo Ferreira Fontenelle <leonardof gnome org>:
I'm trying to port a small Python GTK+ application to Vala. Overall, I
have succeeded, with some very interesting performance gains. But in
some cases the search may take a few seconds to finish, while the
application reads data from the disk. I tried using an async method to
keep the user interface responsive, but it didn't work: until the search
is completed, the user can't even move the cursor in the text entry
widget. What am I missing?
Simply declaring your method async doesn't make it automatically use
async i/o. If I understand correctly, the function that takes time is
get_matches, you need to either execute it in another thread, using
something like:
Gee.TreeSet<int32> matches = null;
Thread.create<void>(() => {
matches = get_matches (words);
Idle.add (search.callback);
});
yield;
or make get_matches (and possibly other methods it calls) async, and
use the async versions of the i/o functions you call (assuming you use
GIO), and call it like:
Gee.TreeSet<int32> matches = yield get_matches();
HTH,
Abderrahim
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]