mirror of
https://github.com/Rafostar/clapper.git
synced 2025-08-30 16:02:00 +02:00
Revert "sink: Use g_main_context_invoke_full for drawing"
Not much benefit from using this function and unlike g_idle_add_full it
does not allow to skip a frame when previous one was not finished (slow HW).
This reverts commit f8a7abe195
.
This commit is contained in:
@@ -284,6 +284,7 @@ static gboolean
|
|||||||
_queue_draw (GtkClapperGLWidget * clapper_widget)
|
_queue_draw (GtkClapperGLWidget * clapper_widget)
|
||||||
{
|
{
|
||||||
GTK_CLAPPER_GL_WIDGET_LOCK (clapper_widget);
|
GTK_CLAPPER_GL_WIDGET_LOCK (clapper_widget);
|
||||||
|
clapper_widget->draw_id = 0;
|
||||||
|
|
||||||
if (clapper_widget->pending_resize) {
|
if (clapper_widget->pending_resize) {
|
||||||
clapper_widget->pending_resize = FALSE;
|
clapper_widget->pending_resize = FALSE;
|
||||||
@@ -750,8 +751,8 @@ gtk_clapper_gl_widget_finalize (GObject * object)
|
|||||||
if (priv->display)
|
if (priv->display)
|
||||||
gst_object_unref (priv->display);
|
gst_object_unref (priv->display);
|
||||||
|
|
||||||
if (clapper_widget->app_context)
|
if (clapper_widget->draw_id)
|
||||||
g_main_context_unref (clapper_widget->app_context);
|
g_source_remove (clapper_widget->draw_id);
|
||||||
|
|
||||||
gst_buffer_replace (&clapper_widget->pending_buffer, NULL);
|
gst_buffer_replace (&clapper_widget->pending_buffer, NULL);
|
||||||
gst_buffer_replace (&clapper_widget->buffer, NULL);
|
gst_buffer_replace (&clapper_widget->buffer, NULL);
|
||||||
@@ -802,9 +803,10 @@ gtk_clapper_gl_widget_set_buffer (GtkClapperGLWidget * clapper_widget,
|
|||||||
|
|
||||||
gst_buffer_replace (&clapper_widget->pending_buffer, buffer);
|
gst_buffer_replace (&clapper_widget->pending_buffer, buffer);
|
||||||
|
|
||||||
g_main_context_invoke_full (clapper_widget->app_context,
|
if (!clapper_widget->draw_id) {
|
||||||
G_PRIORITY_DEFAULT - 10, (GSourceFunc) _queue_draw,
|
clapper_widget->draw_id = g_idle_add_full (G_PRIORITY_DEFAULT,
|
||||||
g_object_ref (clapper_widget), g_object_unref);
|
(GSourceFunc) _queue_draw, clapper_widget, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
GTK_CLAPPER_GL_WIDGET_UNLOCK (clapper_widget);
|
GTK_CLAPPER_GL_WIDGET_UNLOCK (clapper_widget);
|
||||||
}
|
}
|
||||||
@@ -957,7 +959,6 @@ gtk_clapper_gl_widget_init (GtkClapperGLWidget * clapper_widget)
|
|||||||
clapper_widget->par_n = DEFAULT_PAR_N;
|
clapper_widget->par_n = DEFAULT_PAR_N;
|
||||||
clapper_widget->par_d = DEFAULT_PAR_D;
|
clapper_widget->par_d = DEFAULT_PAR_D;
|
||||||
clapper_widget->ignore_textures = DEFAULT_IGNORE_TEXTURES;
|
clapper_widget->ignore_textures = DEFAULT_IGNORE_TEXTURES;
|
||||||
clapper_widget->app_context = g_main_context_ref_thread_default ();
|
|
||||||
clapper_widget->last_pos_x = 0;
|
clapper_widget->last_pos_x = 0;
|
||||||
clapper_widget->last_pos_y = 0;
|
clapper_widget->last_pos_y = 0;
|
||||||
|
|
||||||
|
@@ -69,7 +69,6 @@ struct _GtkClapperGLWidget
|
|||||||
GstBuffer *pending_buffer;
|
GstBuffer *pending_buffer;
|
||||||
GstBuffer *buffer;
|
GstBuffer *buffer;
|
||||||
GstVideoInfo v_info;
|
GstVideoInfo v_info;
|
||||||
GMainContext *app_context;
|
|
||||||
|
|
||||||
/* resize */
|
/* resize */
|
||||||
gboolean pending_resize;
|
gboolean pending_resize;
|
||||||
@@ -85,6 +84,9 @@ struct _GtkClapperGLWidget
|
|||||||
GtkEventController *key_controller;
|
GtkEventController *key_controller;
|
||||||
GtkEventController *motion_controller;
|
GtkEventController *motion_controller;
|
||||||
GtkGesture *click_gesture;
|
GtkGesture *click_gesture;
|
||||||
|
|
||||||
|
/* Pending draw idles callback */
|
||||||
|
guint draw_id;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _GtkClapperGLWidgetClass
|
struct _GtkClapperGLWidgetClass
|
||||||
|
Reference in New Issue
Block a user