[Geany] Mac OSx Snow Leopard experience, 100% CPU load whenever build has been started !

Lex Trotman elextr at xxxxx
Sun May 23 08:28:54 UTC 2010


2010/5/23 Enrico Tröger <enrico.troeger at uvena.de>:
> On Fri, 21 May 2010 16:59:10 +0200, Andrei wrote:
>
>>
>> On 21 mei 2010, at 11:37, Lex Trotman wrote:
>>
>> >
>> >
>> > On 21 May 2010 19:30, Andrei Vishneuski <vish at gravitysoft.org>
>> > wrote:
>> >
>> > On 21 mei 2010, at 11:07, Lex Trotman wrote:
>> >
>> >>
>> >>
>> >> On 21 May 2010 16:55, Andrei Vishneuski <vish at gravitysoft.org>
>> >> wrote: On 05/21/2010 02:06 AM, Lex Trotman wrote:
>> >>>
>> >>>
>> >>> On 21 May 2010 02:49, Andrei Vishneuski <vish at gravitysoft.org>
>> >>> wrote: Ok, thats where I thought it would be, I'm not sure why,
>> >>> maybe its GTK2.18 or OSX pipes but whatever, can you try the
>> >>> attached patch that tries to pick up more conditions to stop.
>> >>
>> >> Debugging indicated that the section below starts getting
>> >> condition = G_IO_IN forever, but  "g_io_channel_read_line" can
>> >> read nothing. I have tried to use additional reading method like
>> >> read_char, read_to_the_end. I have tried to flush pipe. None of it
>> >> helped. The result workaround I have used shown below:
>> >>
>> >> if (cond & (G_IO_IN | G_IO_PRI))
>> >>    {
>> >>            gchar *msg;
>> >> +               int count = 0;
>> >>
>> >>            while (g_io_channel_read_line(ioc, &msg, NULL,
>> >> NULL, NULL) && msg) {
>> >>                    gint color = (GPOINTER_TO_INT(data)) ?
>> >> COLOR_DARK_RED : COLOR_BLACK;
>> >>                    process_build_output_line(msg, color);
>> >>                    g_free(msg);
>> >> +                       count++
>> >>            }
>> >>
>> >> +               if (count == 0) return FALSE;
>> >>    }
>> >>
>> >> It works, but doesn't give an answer why pipe says "there is still
>> >> something to read in the pipe".
>> >>
>> >>
>> >>
>> >> Hmmmmm....
>> >>
>> >> Did you have a chance to test the patch that checks the return
>> >> from g_io_channel_read_line?
>> >>
>> >> Cheers
>> >> Lex
>> >>
>> >
>> > No I have not tried it yet (read it this morning). I will try it
>> > today to see may be G_IO_STATUS_ xXX can be used as an indicator to
>> > compete pipe input  handling.
>> >
>> >
>> >
>> > Ok, good luck!!
>> >
>>
>> I have tried your solution. It works. "g_io_channel_read_line" method
>> returns G_IO_STATUS_EOF as status what can be successfully used as
>> condition to leave watcher function.
>
> Great.
> Thanks Andrei and Lex for tracking this down.
> Lex, feel free to commit your patch otherwise tell me.
>

Done.

Cheers
Lex

> Regards,
> Enrico
>
> --
> Get my GPG key from http://www.uvena.de/pub.asc
>
> _______________________________________________
> Geany mailing list
> Geany at uvena.de
> http://lists.uvena.de/cgi-bin/mailman/listinfo/geany
>
>



More information about the Users mailing list