From the code, I would kind of assume that it is meant to show how the code
should be written in order to run two pipelines simultaneously on Wayland.
Simple, just creating pipeline and assigning waylandsink to multiple
pipelines is not enough to run them properly on top of Wayland actually it's
I have an application with 4 rendering wayland surfaces and all pipelines
run fine (without usage of code of the above mentioned example), but I am
experiencing problems with disposing rendering areas and also reloading
pipelines whenever I stop them and want to run them once more.
Whenever I want to restart all my 4 pipelines, I experience segmentation
fault in method:
wl_list_insert() resizing in wayland-client.c.
It randomly crashes on several spots in my code for example this method
which assigns context to waylandsink:
(none of these variables are NULL).
On start of the application, this method runs fine for all 4 video
renderings, but when I stop all renderings and start them once more, it
crashes even though GST_ELEMENT(GST_MESSAGE_SRC(message)) is really
reference to one of 4 waylandsinks I am creating for each of pipeline and
context is a variable created by method:
GstContext *context =
I have asked several times about my problem if not being able to clear
rendering surface with set_render_rectangle method, therefore I made a
workaround with stopping all pipelines and unreferencing all of them. It
clears the rendering surfaces properly, but the downside is that I cannot
reuse the already created pipeline and unref forces me to create 4 pipelines
But it seems problems are not yet finished and this workaround has some
Could this example be utilized in order to fix my problem?
If anyone has some more examples how to write gstreamer code on Wayland,
please share it with me.
Ok, I have 1.14.4 installed from repository.
I left it intact without uninstalling. Downloaded source code version 1.16
of gstreamer-1.0, base,good,bad, compiled and installed.
Now it seems like when video is being rendered in eventBox where waylandsink
renders the event signal from mouse click is not propagated and the method
does not trigger at all so I am unable to event test whether I experience
When no video is being rendered to eventBox (it is grey colored when empty)
GTK catches the event and maximizes it properly, I guess something wrong is
with waylandsink in 1.16.
Just to note, I also recompiled GTK this way:
nice -20 ./autogen.sh --enable-wayland-backend --enable-gtk-doc=no
--enable-gtk-doc-html=no --enable-gtk-doc-pdf=no --enable-broadway-backend
I am using --libdir=/usr/lib/x86_64-linux-gnu/ when configuring Gstreamer
compilation just to overwrite libraries of version 1.14. I know this is
rather messy mixing 1.14 deb packages with raw 1.16 libraries, but I hope
old libraries will be overridden and won't add any more problems saving some
time and making it easier when not building .deb packages.
when running running official gst-plugin-bad wayland example with mouse
button click signal hander attached to videoarea the following code written
way, the video runs but upon button click on video the signal is not
triggered, whey I don't set the pipeline to PLAYING state that means no
video is rendered, the signal triggers properly: