[webkit-gtk] Is JS callback run from GUI thread?

Michael Catanzaro mcatanzaro at igalia.com
Thu Oct 19 08:54:22 PDT 2017



On Thu, Oct 19, 2017 at 2:29 AM, Gaute Hope <eg at gaute.vetsj.com> wrote:
> Hi,
> 
> I am trying to use javascript in synchronized fashion, by waiting in 
> the calling thread using condition_variables and mutex (C++):
> 
> ```
>  void run_js () {
>    /* this runs in GTK gui thread */
> 
>    webkit_web_view_run_javascript (...., callback, ...)
> 
>    /* wait for notification from callback */
>  }
> 
>  void callback (GObject *, GAsyncResult *r) {
>       /* non-GUI processing of result */
> 
>    /* notify run_js thread */
>  }
> ```
> 
> However, if I wait for notifications in run_js the callback is never 
> called. Is the JS callback somehow called from the main GTK thread?

Yes, probably.

Like GTK+ itself, WebKitGTK+ is not threadsafe and it must only be used 
from the main GTK+ thread. If you need to schedule some work from a 
secondary thread, then you need to post it to the main thread by using 
e.g. g_idle_add().

Michael



More information about the webkit-gtk mailing list