Re: Application redrawing



On Sun, 06 Apr 2003 16:53:41 -0400
"A B" <alvinbeach hotmail com> wrote:

Hello,

I am experimenting with GTK+. I am creating an app that does a lot of 
processing. What I am having problems with is having the application redraw 
itself. I thought that if I put all the processing in a pthread that would 
help. But, this isn't the case.

What do GTK+ programmers do to work around this?

There are a couple of alternatives. Using threads is one of them (but not the
best IMHO). GTK+ depends on a regular flow of events. That means you should:

1 - split you calculation in little pieces that can be invoked via timeouts or
    idle functions.
2 - allow GTK+ to process events from within your calculation
3 - use a separate calculation program, that communicates with the GUI via pipes
4 - use threads. But do not issue gTK+ calls from the thread that does the
    processing.

For 1 see gtk_timeout_add() and gtk_idle_add().

for 2 use something like:

        /* computation going on */
        while (gtk_events_pending ())
          gtk_main_iteration ();
        /* computation continued */

For 3 see g_spawn_async_with_pipes()

Roland
-- 
R.F. Smith                           /"\    ASCII Ribbon Campaign
r s m i t h @ x s 4 a l l . n l      \ /    No HTML/RTF in email
http://www.xs4all.nl/~rsmith/         X     No Word docs in email
                                     / \    Respect for open standards

Attachment: pgpc910I9OGVA.pgp
Description: PGP signature



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]