summaryrefslogtreecommitdiff
path: root/ext/gtk
Commit message (Collapse)AuthorAgeFilesLines
* gtk(gl)sink: remove the signal handlers on finalizeMatthew Waters2016-02-162-3/+12
| | | | | | | | | | | It's possible that the sink element will be freed before the widget is destroyed. When the widget was eventually destroyed, it was attempting to access member variables of the freed sink struct which resulted in undefined behaviour. Fix by disconnecting our signal on finalize. https://bugzilla.gnome.org/show_bug.cgi?id=762098
* glsyncmeta: separate out gpu/cpu waits.Matthew Waters2016-02-091-0/+1
| | | | | | CPU waits are more expensive and are only required if the CPU is ever going to access the data. GPU waits perform inter-context synchronisation and are cheaper as they don't require CPU intervention.
* gtk: add the overlaycomposition feature to the template capsMatthew Waters2015-11-101-2/+5
| | | | | | | | There is a possibility that the _get_caps impl will be called with the feature in the filter caps which when interecting with the template, will return EMPTY and therefore fail negotiation. https://bugzilla.gnome.org/show_bug.cgi?id=757854
* gl: be consistent in gobject boilerpateMatthew Waters2015-10-191-1/+1
| | | | | | GST_GL_IS_* vs GST_IS_GL_* git grep -l 'GST_GL_IS_' | xargs sed -i 's/GST_GL_IS_/GST_IS_GL_/g'
* gtk: separate out the widget/window destroy callbacksMatthew Waters2015-10-171-7/+10
| | | | | | | Fixes assertion due to the sink_finalize() being run before the widget destroy callback. https://bugzilla.gnome.org/show_bug.cgi?id=755969
* glshader: port to using GstGLSLStage objects for string managementMatthew Waters2015-10-151-3/+9
| | | | | | A GstGLShader is now simply a collection of stages that are compiled and linked together into a program. The uniform/attribute interface has remained the same.
* gtk: add some GL debug statements to show up in GL tracesMatthew Waters2015-09-301-4/+10
|
* gtk: fix assertion when the element has no peerMatthew Waters2015-09-291-3/+5
| | | | | | | When proxying keyboard/navigation/mouse events, only unref a successfully retreived peer pad. https://bugzilla.gnome.org/show_bug.cgi?id=755738
* gtk: Only run from the main thread in stop() if we created the windowSebastian Dröge2015-09-241-2/+7
| | | | We're not doing anything at all from the main thread in other cases.
* gtk: When setting format check if pending format changedThibault Saunier2015-09-241-1/+1
| | | | | | | | | In case the format changed fast and the pending format is different than the currently set but the currently set is equal to the pending one we could end up having mismatch between the finally set format and the data stream format. https://bugzilla.gnome.org/show_bug.cgi?id=755542
* gtk: Do not forget to release OBJECT_LOCK on error pathThibault Saunier2015-09-241-4/+6
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=755542
* gtk: Factor out a function to run a function on main threadThibault Saunier2015-09-245-103/+114
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=755251
* gtk: Marshall state changes in the main threadThibault Saunier2015-09-241-7/+90
| | | | | | | Gtk is not MT safe thus we need to make sure that everything is done in the main thread when working with it. https://bugzilla.gnome.org/show_bug.cgi?id=755251
* gtksink: Do not show window until we reach the PAUSED stateThibault Saunier2015-09-231-1/+14
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=755459
* gtksink: Do not re destroy the GtkWindow if destroyed by the userThibault Saunier2015-09-211-1/+8
| | | | | | Otherwise we will get an ASSERT. Fixes https://bugzilla.gnome.org/show_bug.cgi?id=755249
* gtkglsink: Hide and clean the GtkWindow we might createThibault Saunier2015-09-193-8/+24
| | | | | | When stopping the sink we should always hide the window. https://bugzilla.gnome.org/show_bug.cgi?id=755249
* gl: Fix GError leaks during failuresVineeth T M2015-09-171-0/+2
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=755140
* gtk, qt: more specifically define the compile time requirementsMatthew Waters2015-09-101-6/+6
| | | | | | | Otherwise we could include headers/configurations that will never been installed. https://bugzilla.gnome.org/show_bug.cgi?id=754732
* gtk: Do not consider GtkEvents as handledThibault Saunier2015-09-041-3/+3
| | | | | | Applications might still want to use them after the sink transformed them into GstNavigation events
* gtk, qt, gl: fix typo in debug and error messagesTim-Philipp Müller2015-08-311-1/+1
|
* gtk/gl: Use our GL function table instead of directly calling GL functionsSebastian Dröge2015-08-191-5/+7
| | | | Otherwise we would have to link the plugin to the GL libraries directly.
* glsink: Enable sync meta on pools we offerNicolas Dufresne2015-08-151-0/+3
| | | | | | As the upload is asynchronous, we need to enable the sync meta to gain correct rendering. The buffer pool receiver don't know about that.
* gtkglsink: Add overlay composition supportNicolas Dufresne2015-08-153-0/+93
| | | | | Rendering composition overlay in GL with additional high resolution overlay being added.
* gtkglsink: Fix unsafe handling of buffer life timeNicolas Dufresne2015-08-154-32/+58
| | | | | | We need to keep the active buffer (the one we have retreive a texture id from) otherwise it's racy and upstream may upload new content before we have rendered or during later redisplay.
* gtkglsink: Remove reset pathNicolas Dufresne2015-08-153-48/+0
| | | | | The reset path is bogus and there is no reason to get rid of these things during resize.
* gtk: fix motion event nameMatthew Waters2015-08-121-1/+1
| | | | | | s/motion/mouse/ Fixes hover interaction with DVD menus
* gtk: correct navigation events for window scalingMatthew Waters2015-08-121-2/+75
| | | | | | | i.e. take into account the possiblity of scaling in the sink or through GDK_SCALE. Fixes DVD Menus with a scaled gtkwidget
* gtk: implement GstNavigation interfaceMatthew Waters2015-08-113-1/+142
| | | | Now we can push key/mouse input into the pipeline for DVD use cases.
* gstglwidget: use gst_gl_display_create_contextJulien Isorce2015-07-211-5/+4
| | | | | | Also handle the failure case. https://bugzilla.gnome.org/show_bug.cgi?id=750310
* gtk: Log GDK GL error when failling creating GdkGLContextThibault Saunier2015-07-201-1/+6
|
* glcontext: fix get_current_gl_api on x11/nvidia driversMatthew Waters2015-07-181-2/+2
| | | | | | They require to get_proc_address some functions through the platform specific {glX,egl}GetProcAddress rather than the default GL library symbol lookup.
* gtkgstglwidget: Cleanup unused private memberNicolas Dufresne2015-07-171-3/+0
| | | | | | new_buffer has been moved to base class. Also cleanup the properties comment, which are also all moved into the base class.
* gtksink: "widget" must be access from main threadNicolas Dufresne2015-07-171-1/+2
| | | | | | | Document that "widget" property must be accessed from the main thread (where GTK is running). This is the same for state transition on these elements. It is very natural to do so un GTK applications.
* gtkglsink: Don't leak vertex array and buffersNicolas Dufresne2015-07-171-1/+21
| | | | | | | This is now possible since reset is always called from the main thread. https://bugzilla.gnome.org/show_bug.cgi?id=752441
* gtkgstbasewidget: Fix black frame on resizeNicolas Dufresne2015-07-172-46/+55
| | | | | | | This is solved by only applying the new format when the next buffer is to be rendered and on the GTK thread. https://bugzilla.gnome.org/show_bug.cgi?id=752441
* gtkgstbasewidget: Pass already parsed VideoInfoNicolas Dufresne2015-07-173-14/+10
| | | | | | | As the base sink already parse the caps into VideoInfo it makes sense to pass in VideoInfo to the widget instead. https://bugzilla.gnome.org/show_bug.cgi?id=752441
* gtkglsink: Port to GstGtkBaseSink base classNicolas Dufresne2015-07-172-387/+57
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=752441
* gtksink: Port to GstGtkBaseSinkNicolas Dufresne2015-07-172-371/+16
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=752441
* gtkbasesink: Create a base classNicolas Dufresne2015-07-173-0/+456
| | | | | | | This contains all the common code between the gtkglsink and gtksink. https://bugzilla.gnome.org/show_bug.cgi?id=752441
* gtkglsink: Port to GtkGstBaseWidgetNicolas Dufresne2015-07-174-446/+183
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=752441
* gtksink: Port to GtkGstBaseWidgetNicolas Dufresne2015-07-164-343/+42
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=752441
* gtk: Add GtkGstBaseWidgetNicolas Dufresne2015-07-163-0/+414
| | | | | | | | | | | This is a "pseudo" base class. Basically it's a shared instance and class structure and a shared set of function between the two widget. It cannot have it's own type like normal base class since the one instance will implement GtkGLArea while the other implements GtkDrawingAreay. To workaround this, the parent instance and class is a union of both. https://bugzilla.gnome.org/show_bug.cgi?id=752441
* gtkgstglwidget: Remove unused gl_capsNicolas Dufresne2015-07-161-6/+0
|
* gtksink: Create a window if the widget is unparentedNicolas Dufresne2015-07-161-1/+28
| | | | | | | The same way as it's now done with the gtkglsink, create a top level window if the widget is not parented. https://bugzilla.gnome.org/show_bug.cgi?id=751104
* gtksink: Ensure the copy pasted code remains the sameNicolas Dufresne2015-07-161-5/+5
| | | | | | | | Move back the default property at the same place they are in the other sink. This helps when using a diff viewer to synchronized this unfortunate copy paste. https://bugzilla.gnome.org/show_bug.cgi?id=751104
* gtk: Fix race between queue_draw and destroyNicolas Dufresne2015-07-165-30/+89
| | | | | | | | | | | | | In GTK dispose can be called before the last ref is reached. This happens when you close the container window. The dispose will be explicitly called, and destroyed notify will be fired. This patch fixes this race by properly tracking the widget state. In the sink, we now set the widget pointer to NULL, so the widget will properly get created again if you set your pipeline to NULL state after the widget was destroy, and set it back to PLAYING. https://bugzilla.gnome.org/show_bug.cgi?id=751104
* gtkgstwidget: Add missing break in get_propertyNicolas Dufresne2015-07-151-0/+1
|
* gtksinks: Remove undefined private structureNicolas Dufresne2015-07-152-6/+0
| | | | | The classes contains a private structure which are not defined, hence unused.
* gtk: add to the generic/states testMatthew Waters2015-07-092-2/+2
|
* GstGtkGLSink: Ensure widget has a toplevel parentXavier Claessens2015-07-091-4/+12
| | | | | | | | Checking for a parent is not enough, it must have a toplevel one. If widget has no toplevel parent then add it in a GtkWindow, that make it usable from gst-launch-1.0. https://bugzilla.gnome.org/show_bug.cgi?id=751104