hi,

On 17.08.2010 12:01, James Morris wrote:
> Hi,
>
> I see that some GDK drawing functions and graphics contexts have been
> deprecated in favour of using Cairo.
>
> Yesterday I spent a few hours *removing* Cairo code from my fledgling
> GTK application and replacing it with gdk_draw_rectangle,
> gdk_gc_set_rgb_fg_color, and gdk_gc_set_function. I did this for
> performance reasons[1]
>
> I am wondering if my approach to drawing is wrong however and if a
> better approach might yield less CPU usage?
>
> It begins with a 33ms timeout. The timeout callback calls
> gtk_widget_queue_draw on the window and the drawing area.
>   

Would it be possible to isolate this into a standalone demo. Or could
you point us to the actual code?

Stefan

> (Imagine rectangles appearing each time a note is played in a piece of
> music and disappearing when that note ends.)
>
> In the expose event callback a linked-list of rectangles is
> maintained. Rectangles are added to the list and removed from the list
> as notes start and end (The application is an experimental MIDI
> sequencer/arpeggiator operating in real time).
>
> Each and every time the expose event callback is called (every 33ms)
> the background and the entire list of rectangles is drawn as well as
> various maintenance functions performed on the list.
>
> The documentation of gdk_cairo_create seems to suggest this is the
> only way of doing it when it says:
>
> "Note that due to double-buffering, Cairo contexts created in a GTK+
> expose event handler cannot be cached and reused between different
> expose events."
>
> Is it possible to do this any other way?
> Cheers,
> James.
>
> [1]My machine is a 64bit 3.0ghz dual core desktop. Using GDK for
> drawing, the CPU usage is at worst 5% on both cores. Using Cairo on
> the other hand, the CPU usage can reach as much as 20% on both cores.
>
> The project is here:    http://github.com/jwm-art-net/BoxySeq
> Cairo routines is here:
> http://github.com/jwm-art-net/BoxySeq/tree/97f6d674a2a182a143ef82b03bde11689fedcf18
> GDK routines is here:
> http://github.com/jwm-art-net/BoxySeq/tree/29f412b41b2371ec136aa86da50d858f5892bfa0
> _______________________________________________
> gtk-app-devel-list mailing list
> gtk-app-devel-list@gnome.org
> http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list
>   

_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list

Reply via email to