Re: [spice-gtk v2] Introduce gtask-helper.[ch]

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

 



Hey,

On Fri, May 13, 2016 at 02:30:25PM +0200, Victor Toso wrote:
> With that said, I'd like to suggest a change in the gtask-helper.
> Quoting the fine manual from GTask:
>  "The "return" methods (eg, g_task_return_pointer()) automatically cause
>  the task to be "completed" as well, and there is no need to worry about
>  the "complete" vs "complete in idle" distinction. (GTask automatically
>  figures out whether the task's callback can be invoked directly, or if
>  it needs to be sent to another GMainContext, or delayed until the next
>  iteration of the current GMainContext.)"
> 
> I would like that gtaskhelper do what the GTask can't at this moment
> with the coroutine context which is "not make us worry about complete vs
> complete in idle"
> 
> I would like to know what you think about changing
> g_task_helper_return_int_in_idle to g_task_helper_return_int. The
> non-idle version should then check if we are in the main-context using
> coroutine_self_is_main(). If we are in the main-context, I would say we
> can let g_task_return_int decide when to call the callback. If we are in
> coroutine context, we can return in idle.
> 
> This approach would let us be closer to the gtask behavior/intention; we
> would only be handling the coroutine context that gtask can't at the
> moment.

I don't think I agree with this approach. Hiding it in gtask-helper
would mean that we think that all our GTask callbacks happening in a coroutine
context need to happen in a main context.

What you could do is record in which coroutine context you are at GTask
creation, and compare to the context we are in when returning from the
coroutine, but that adds even more complication...

You would also need more magic to guarantee a coroutine switch before
the callback is called in an idle (or are all idles called in the main
context? I forgot this). In this case, my understanding is that the code
was working before because something between the
g_simple_async_result_return_in_idle and the invocation of the idle
callback was triggering a coroutine switch.

Christophe

Attachment: signature.asc
Description: PGP signature

_______________________________________________
Spice-devel mailing list
Spice-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/spice-devel

[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]     [Monitors]