Re: g_idle_add() clarification

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

 



On Tue, 20 Jan 2015 16:47:27 -0500
Ian Chapman <ichapman@xxxxxxxxxxxx> wrote:
> Thanks for your reply Richard.
> Yes, I know that.  I thought Scanning() was a lower level than the
> gtk window and thus the StartScan_active() would exit before the
> mainloop would add Scanning() and then only execute Scanning() when
> nothing else (signals) was active.
> 
> I was also asking about the GLib-CRITICAL stuff on exiting
> Scanning().  Ian.
> 
> On 01/20/2015 03:34 PM, richard boaz wrote:
> > hi,
> >
> > you are calling the function Scanning() in the g_idle_add() call.
> >
> > richard
> >
> > On Tue, Jan 20, 2015 at 3:23 PM, Ian Chapman <ichapman@xxxxxxxxxxxx 
> > <mailto:ichapman@xxxxxxxxxxxx>> wrote:
> >
> >     Hi all,
> >
> >     Sorry to bother but I'm lost with the workings of
> >
> >     guint g_idle_add ()
> >
> >     My code is as
> >     follows
> >
> >     extern "C"
> >
> >     void on_StartScan_activate() //from gtk menu item
> >
> >     { printf("Start Scan Activated. \n");
> >
> >     scan_on_fg =1;
> >
> >     Scanning_lvl = g_idle_add((GSourceFunc) Scanning(), (gpointer)
> > 0);
> >
> >     printf("Exiting StartScan.\n");  //main.cpp, Line 129
> >
> >     return; }
> >
> >     I get to Scanning() okay but I don't exit
> > on_StartScan_activeat() until I exit Scanning() (not what I
> > expected).
> >
> >     Worse still when I step through Scanning as I exit I get
> >
> >     (gdb) next
> >
> >     (main:24011): GLib-CRITICAL **: g_idle_add_full: assertion
> >     `function != NULL' failed
> >
> >     on_StartScan_activate () at main.cpp:129
> >
> >     (gdb) next
> >
> >     Exiting StartScan.
> >
> >
> >     guint Scanning(void)
> >
> >     {
> >
> >     while(1 == scan_on_fg)
> >
> >     { //Bean counting with rest of GUI in control, I hoped. }
> >
> >     return(FALSE); //Remove this thread.
> >
> >     }
> >
> >
> >     Regards Ian.

What Richard is telling you is that your code is broken.  Fix that
before dealing with warnings.  The point is that your broken code is
doing what the warning is telling you about - passing a FALSE value
(which equates here to NULL here), as returned by Scanning(), to the
function pointer argument of g_idle_add().

You have other problems.  You are passing a callback to g_idle_add()
which does not have the correct signature and surpressing this failure
by a cast.  (Why?.)  Fix that as well and see what warnings are left
over.

Chris
_______________________________________________
gtk-list mailing list
gtk-list@xxxxxxxxx
https://mail.gnome.org/mailman/listinfo/gtk-list



[Index of Archives]     [Touch Screen Library]     [GIMP Users]     [Gnome]     [KDE]     [Yosemite News]     [Steve's Art]

  Powered by Linux