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

Re: g_timeout_add events stop when calling draw_brush()



Douglas Phillipson wrote:
> John K Luebs wrote:
> 
>> On Sun, Feb 29, 2004 at 03:06:00PM -0800, Douglas Phillipson wrote:
>>
>>> Douglas Phillipson wrote:
>>>
>>>> I'm using  g_timeout_add (500, grab_data, NULL) to aquire data from 
>>>> a file and shift it through an array with some procesing on it.  
>>>> This all works fine.  At the end of the routine I call draw_brush to 
>>>> paint the data to the screen but the "timeout" event stops after the 
>>>> first call to draw_brush.  I can comment out the draw_brush() call 
>>>> and events happen as they should.  What might be causing this?
>>>
>>>
>>> A more general question related to the above problem.
>>>
>>> I'm not drawing. I'm displaying chart like graphic data points.  
>>> Without touching any buttons or the screen, how can I force an update 
>>> to my draw_area once a second?  I'm using g_timeout_add to force a 
>>> read of a file, all working well.  But I'm trying to throw a expose 
>>> event on the draw area from the function called by the "timeout" 
>>> callback.  It doesn't seem to force a screen update via draw_brush.  
>>> Any suggestions?
>>>
>>
>>
>> I'm not quite sure I understand what you're trying to do, but you
>> shouldn't draw from anywhere outside of handling an expose event. If
>> you want to "force" an expose event then use gtk_widget_queue_draw.
>>
>> --jkl
>>
>>
> 
> I'm taking in information from a file and displaying it on a draw_area. 
>  I use g_timeout_add to force the call of my data collection routine. 
> This occurs on a regular interval.  I take the data and shift it through 
> an array to normalize it to x,y coords that will be within screen 
> boundaries.  After each second, I need the screen to update.  In the 
> draw_brush code I do the drawing of points from the array.  Again no 
> events are occuring other than the input of data from a file.  I presume 
> I need to clear the pixmap prior to each draw.  I do this in the 
> g_timeout_add callback routine with:
> 
> gdk_draw_rectangle (pixmap, widget->style->black_gc, TRUE,
>            0, 0, widget->allocation.width, widget->allocation.height);
> 
> then proceed to draw the points on the pixmap.  The trouble is I am not 
> getting any refresh events to the draw_area in order to copy the pixmap 
> to the screen, because I'm not doing anything that triggers a refresh 
> event, like drawing with the stylist.  I also have to figure out how to 
> get the widget handle for the draw_area to call the gdk_draw_rectangle() 
> routine.  I'm in a callback that doesn't have a reference to the handle 
> for the draw_area.  If the draw_area handle is global, cat I just use it 
> for the "widget->style->black_gc"?
> 
> Also, what advantages would a "image" have over a draw_area, if any?
> 
> Thanks
> 
> DOug P
> 
> 
> 
Well gtk_widget_queue_draw_area or gtk_widget_queue_draw doesn't force 
or appear to queue any drawing.  I call it from the callback created 
with g_timeout_add but nothing happens.  If I click in the draw_area and 
drag, I see my drawing is going to the pixmap.  The drag events in the 
draw area show me my plotting of dots but when I stop dragging, the 
events stop. Start dragging, the plotting continues.

Confused

Doug P



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