Re: g_idle_add() clarification



On Tue, 20 Jan 2015 16:47:27 -0500
Ian Chapman <ichapman videotron ca> 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 videotron ca 
<mailto:ichapman videotron ca>> 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


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