mirror of
https://git.pwmt.org/pwmt/zathura.git
synced 2025-02-27 16:54:39 +01:00
Also delay the execution of synctex_view (fixes #288)
Send the dbus response first, and then start parsing and rendering of the synctex forward search.
This commit is contained in:
parent
7b78b66c33
commit
2ef85e7329
1 changed files with 36 additions and 7 deletions
|
@ -398,19 +398,48 @@ handle_highlight_rects(zathura_t* zathura, GVariant* parameters,
|
||||||
g_dbus_method_invocation_return_value(invocation, result);
|
g_dbus_method_invocation_return_value(invocation, result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
zathura_t* zathura;
|
||||||
|
gchar* input_file;
|
||||||
|
unsigned int line;
|
||||||
|
unsigned int column;
|
||||||
|
} view_data_t;
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
synctex_view_impl(gpointer ptr)
|
||||||
|
{
|
||||||
|
view_data_t* data = ptr;
|
||||||
|
|
||||||
|
synctex_view(data->zathura, data->input_file, data->line, data->column);
|
||||||
|
|
||||||
|
g_free(data->input_file);
|
||||||
|
g_free(data);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
handle_synctex_view(zathura_t* zathura, GVariant* parameters,
|
synctex_view_idle(zathura_t* zathura, gchar* input_file, unsigned int line, unsigned int column)
|
||||||
GDBusMethodInvocation* invocation)
|
{
|
||||||
|
view_data_t* data = g_try_malloc0(sizeof(view_data_t));
|
||||||
|
data->zathura = zathura;
|
||||||
|
data->input_file = input_file;
|
||||||
|
data->line = line;
|
||||||
|
data->column = column;
|
||||||
|
|
||||||
|
gdk_threads_add_idle(synctex_view_impl, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
handle_synctex_view(zathura_t* zathura, GVariant* parameters, GDBusMethodInvocation* invocation)
|
||||||
{
|
{
|
||||||
gchar* input_file = NULL;
|
gchar* input_file = NULL;
|
||||||
guint line = 0;
|
guint line = 0;
|
||||||
guint column = 0;
|
guint column = 0;
|
||||||
g_variant_get(parameters, "(suu)", &input_file, &line, &column);
|
g_variant_get(parameters, "(suu)", &input_file, &line, &column);
|
||||||
|
|
||||||
const bool ret = synctex_view(zathura, input_file, line, column);
|
synctex_view_idle(zathura, input_file, line, column);
|
||||||
g_free(input_file);
|
|
||||||
|
|
||||||
GVariant* result = g_variant_new("(b)", ret);
|
GVariant* result = g_variant_new("(b)", true);
|
||||||
g_dbus_method_invocation_return_value(invocation, result);
|
g_dbus_method_invocation_return_value(invocation, result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue