diff options
Diffstat (limited to 'ChangeLog')
-rw-r--r-- | ChangeLog | 541 |
1 files changed, 541 insertions, 0 deletions
@@ -1,3 +1,544 @@ +=== release 1.15.2 === + +2019-02-26 11:43:43 +0000 Tim-Philipp Müller <tim@centricular.com> + + * ChangeLog: + * NEWS: + * RELEASE: + * configure.ac: + * gst-plugins-base.doap: + * meson.build: + Release 1.15.2 + +2019-02-26 11:43:42 +0000 Tim-Philipp Müller <tim@centricular.com> + + * docs/plugins/gst-plugins-base-plugins.args: + * docs/plugins/inspect/plugin-adder.xml: + * docs/plugins/inspect/plugin-alsa.xml: + * docs/plugins/inspect/plugin-app.xml: + * docs/plugins/inspect/plugin-audioconvert.xml: + * docs/plugins/inspect/plugin-audiomixer.xml: + * docs/plugins/inspect/plugin-audiorate.xml: + * docs/plugins/inspect/plugin-audioresample.xml: + * docs/plugins/inspect/plugin-audiotestsrc.xml: + * docs/plugins/inspect/plugin-cdparanoia.xml: + * docs/plugins/inspect/plugin-compositor.xml: + * docs/plugins/inspect/plugin-encoding.xml: + * docs/plugins/inspect/plugin-gio.xml: + * docs/plugins/inspect/plugin-libvisual.xml: + * docs/plugins/inspect/plugin-ogg.xml: + * docs/plugins/inspect/plugin-opengl.xml: + * docs/plugins/inspect/plugin-opus.xml: + * docs/plugins/inspect/plugin-overlaycomposition.xml: + * docs/plugins/inspect/plugin-pango.xml: + * docs/plugins/inspect/plugin-pbtypes.xml: + * docs/plugins/inspect/plugin-playback.xml: + * docs/plugins/inspect/plugin-rawparse.xml: + * docs/plugins/inspect/plugin-subparse.xml: + * docs/plugins/inspect/plugin-tcp.xml: + * docs/plugins/inspect/plugin-theora.xml: + * docs/plugins/inspect/plugin-typefindfunctions.xml: + * docs/plugins/inspect/plugin-videoconvert.xml: + * docs/plugins/inspect/plugin-videorate.xml: + * docs/plugins/inspect/plugin-videoscale.xml: + * docs/plugins/inspect/plugin-videotestsrc.xml: + * docs/plugins/inspect/plugin-volume.xml: + * docs/plugins/inspect/plugin-vorbis.xml: + * docs/plugins/inspect/plugin-ximagesink.xml: + * docs/plugins/inspect/plugin-xvimagesink.xml: + Update docs + +2019-02-26 11:43:40 +0000 Tim-Philipp Müller <tim@centricular.com> + + * po/af.po: + * po/az.po: + * po/bg.po: + * po/ca.po: + * po/cs.po: + * po/da.po: + * po/de.po: + * po/el.po: + * po/en_GB.po: + * po/eo.po: + * po/es.po: + * po/eu.po: + * po/fi.po: + * po/fr.po: + * po/fur.po: + * po/gl.po: + * po/hr.po: + * po/hu.po: + * po/id.po: + * po/it.po: + * po/ja.po: + * po/lt.po: + * po/lv.po: + * po/nb.po: + * po/nl.po: + * po/or.po: + * po/pl.po: + * po/pt_BR.po: + * po/ro.po: + * po/ru.po: + * po/sk.po: + * po/sl.po: + * po/sq.po: + * po/sr.po: + * po/sv.po: + * po/tr.po: + * po/uk.po: + * po/vi.po: + * po/zh_CN.po: + Update translations + +2019-02-19 16:59:34 +0200 Vivia Nikolaidou <vivia@ahiru.eu> + + * gst/videorate/gstvideorate.c: + * gst/videorate/gstvideorate.h: + * tests/check/elements/videorate.c: + videorate: Add max-duplication-time property + This will only duplicate buffers if the gap between two consecutive + buffers is up to fill-until nsec. If it's larger, it will only output + the new buffer and mark it as discont. + +2019-02-21 19:18:18 +0530 Nirbheek Chauhan <nirbheek@centricular.com> + + * ext/meson.build: + meson: Remove outdated msvc-specific disabling code + This was done ages ago when the meson build files were newly added + but now we do the appropriate disabling in Cerbero instead since this + does not apply to gst-build. + https://gitlab.freedesktop.org/gstreamer/cerbero/issues/121 + +2019-02-20 09:46:30 +0000 Tim-Philipp Müller <tim@centricular.com> + + * tests/check/libs/video.c: + tests: video: add basic sanity check of pstrides for formats + https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/merge_requests/117 + +2019-02-09 17:21:13 +0000 James Cowgill <jcowgill@jcowgill.uk> + + * gst-libs/gst/video/video-format.c: + video-format: Fix GBRA_10/12 alpha channel pixel strides + These formats have 4 components, so they should also have 4 components + of pixel stride. + +2019-01-17 15:38:40 +0100 Victor Toso <me@victortoso.com> + + * tests/check/libs/video.c: + tests: use GPOINTER_TO_INT to avoid warnings with mingw + New casts to avoid the the warnings mentioned below. While at it, move + some existing casts (introduced at 61bc9091894062b9) to use + GPOINTER_TO_INT too. + [458/673] Compiling C object 'tests/check/7d01337@@libs_video@exe/libs_video.c.obj'. + ../tests/check/libs/video.c: In function 'fourcc_get_size': + ../tests/check/libs/video.c:160:10: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast] + return (unsigned long) p->endptr; + ^ + In file included from ../tests/check/libs/video.c:32: + ../tests/check/libs/video.c: In function 'test_video_formats': + ../tests/check/libs/video.c:563:39: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast] + fail_unless_equals_int (size, (unsigned long) paintinfo.endptr); + ^ + And more. + https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/merge_requests/94 + +2019-01-17 15:25:58 +0100 Victor Toso <me@victortoso.com> + + * tests/check/libs/profile.c: + tests: fix compiler warnings on Windows with mingw + With commit 3f184c3abc55, the gst_dir variable becomes unusable in + windows build. Moving it to linux scope to avoid warning: + [433/673] Compiling C object 'tests/check/7d01337@@libs_profile@exe/libs_profile.c.obj'. + ../tests/check/libs/profile.c: In function 'profile_suite': + ../tests/check/libs/profile.c:688:10: warning: unused variable 'gst_dir' [-Wunused-variable] + gchar *gst_dir; + ^~~~~~~ + Also fix a typo in the comment. + +2019-02-18 15:24:18 +0100 Kristofer Bjorkstrom <kristofb@axis.com> + + * gst-libs/gst/rtsp/gstrtspconnection.c: + rtspconnection: Fix GError set over the top of a previous GError + The function fill_bytes could sometimes return a value greater than zero + and in the same time set the GError. + Function read_bytes calls fill_bytes in a while loop. In the special + case above it would call fill_bytes with error already set. + Thus resulting in "GError set over the top of a previous GError". + Solved this by clearing GError when return value is greater than zero. + Actions are taken depending on error type by caller of read_bytes. Eg. + with EWOULDBLOCK gst_rtsp_source_dispatch_read will try to read the + missing bytes again (GST_RTSP_EINTR ) + https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/445 + +2019-02-18 13:28:49 +0000 Tim-Philipp Müller <tim@centricular.com> + + * gst-libs/gst/gl/egl/gsteglimage.c: + gl: eglimage: fix build on RPi by adding more fallback defines for EGL_*_EXT + +2018-11-16 23:51:44 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> + + * tests/check/libs/video.c: + tests: video: Test video format enum stability + It is really easy to break the API and insert a new video format in the + middle of the enum instead of at the end. This minimal test should catch + the most obvious errors. Ideally, this test should be updated after new + format have been added, so that it won't allow further modification to + the enumeration API. + +2019-02-16 15:29:57 +0000 Tim-Philipp Müller <tim@centricular.com> + + * gst-libs/gst/pbutils/descriptions.c: + pbutils: add description for AV1 codec + Fixes #558 + +2019-02-15 16:45:09 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> + + * ext/gl/gstglimagesink.c: + glimagesink: Don't call set_property helper in get_property + +2019-02-13 11:59:10 +0100 Edward Hervey <edward@centricular.com> + + * gst-libs/gst/gl/wayland/Makefile.am: + wayland: Also dist the private header + +2019-02-11 10:01:55 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> + + * gst-libs/gst/gl/egl/gsteglimage.c: + eglimage: Add some more defines + This allow building on advertised version of libdrm drm_fourcc.h files. + Fixes #549 + +2019-02-11 10:01:50 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> + + * gst-libs/gst/gl/egl/gsteglimage.c: + Revert "fix issue" + This reverts commit 5e0c458e0ef544f1afae13c5eb047bc0826b011a. + +2019-02-11 16:13:15 +0800 yanle.zhang <yanle.zhang@hobot.cc> + + * gst-libs/gst/gl/egl/gsteglimage.c: + fix issue 549."https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/549". + +2019-01-30 10:49:37 -0300 Thibault Saunier <tsaunier@igalia.com> + + * tools/gst-device-monitor.c: + tools: device-monitor: Add support for modified devices + +2019-02-08 21:38:04 +0900 Seungha Yang <seungha.yang@navercorp.com> + + * gst-libs/gst/gl/gstglupload.c: + glupload: Don't leak caps features + Create caps features when it is required. + +2018-12-14 16:33:50 +0100 Niels De Graef <niels.degraef@barco.com> + + * gst-libs/gst/gl/meson.build: + * gst-libs/gst/gl/wayland/Makefile.am: + * gst-libs/gst/gl/wayland/gstgldisplay_wayland.c: + * gst-libs/gst/gl/wayland/gstgldisplay_wayland.h: + * gst-libs/gst/gl/wayland/gstgldisplay_wayland_private.h: + * gst-libs/gst/gl/wayland/gstglwindow_wayland_egl.c: + * gst-libs/gst/gl/wayland/gstglwindow_wayland_egl.h: + * m4/gst-gl.m4: + gl/wayland: add support for XDG-shell + [wl_shell] is officially [deprecated], so provide support for the + XDG-shell protocol should be provided by all desktop-like compositors. + (In case they don't, we can of course fall back to wl_shell). + Note that the [XML spec] is provided by the `wayland-protocols` + git repository, which is provided by the Wayland project. + [wl_shell]: https://people.freedesktop.org/~whot/wayland-doxygen/wayland/Client/group__iface__wl__shell.html + [deprecated]: https://github.com/wayland-project/wayland/commit/698dde195837f3d0844b2725ba4ea8ce9ee7518c + [XML spec]: https://github.com/wayland-project/wayland-protocols/blob/master/stable/xdg-shell/xdg-shell.xml + +2018-12-14 14:54:24 +0100 Niels De Graef <niels.degraef@barco.com> + + * gst-libs/gst/gl/wayland/gstglwindow_wayland_egl.c: + gl/wayland: extract code to create wl_shell_surface + This is just a cosmetic change that will make it easier to differentiate + between wl_shell and xdg_wm_base later. + +2018-12-14 14:28:26 +0100 Niels De Graef <niels.degraef@barco.com> + + * gst-libs/gst/gl/wayland/gstgldisplay_wayland.c: + * gst-libs/gst/gl/wayland/gstgldisplay_wayland.h: + * gst-libs/gst/gl/wayland/gstglwindow_wayland_egl.c: + * gst-libs/gst/gl/wayland/gstglwindow_wayland_egl.h: + gl/wayland: prefix shell(_surface) with wl_ + This will help us make the distinction later with xdg-shell and other + possible protocols that need to be supported. + +2019-02-05 22:06:15 +0530 Nirbheek Chauhan <nirbheek@centricular.com> + + * tests/check/elements/videoscale.c: + * tests/check/libs/profile.c: + * tests/check/libs/rtpbasedepayload.c: + misc: Fix compiler warnings on Cerbero's MinGW + rtpbasedepayload.c:126:5: error: unknown conversion type character 'z' in format [-Werror=format] + profile.c:688:10: error: unused variable 'gst_dir' [-Werror=unused-variable] + +2019-02-04 11:48:25 +0100 Guillaume Desmottes <guillaume.desmottes@collabora.com> + + * gst-libs/gst/video/gstvideodecoder.c: + videodecoder: remove useless code in negotiate_default_caps() + gst_video_decoder_negotiate_default_caps() is meant to pick a default output + format when we need one earlier because of an incoming GAP. + It tries to use the input caps as a base if available and fallback to a default + format (I420 1280x720@30) for the missing fields. + But the framerate and pixel-aspect were not explicitly passed to + gst_video_decoder_set_output_state() which is solely relying on the input format + as reference to get the framerate anx pixel-aspect-ratio. + So there is no need to manually handling those two fields as + gst_video_decoder_set_output_state() will already use the ones from + upstream if available, and they will be ignored anyway if there are not. + This also prevent confusing debugging output where we claim to use a + specific framerate while actually none was set. + +2019-01-31 15:22:21 +0530 Nirbheek Chauhan <nirbheek@centricular.com> + + * tests/check/meson.build: + meson: orc-test is not required + This is especially never available on iOS. + +2019-01-30 14:32:50 +0200 Sebastian Dröge <sebastian@centricular.com> + + * gst-libs/gst/rtsp/gstrtspconnection.c: + rtspconnection: Fix uninitialized variable warning when compiling with pre-2.59.1 GLib + gstrtspconnection.c: In function ‘writev_bytes’: + gstrtspconnection.c:1348:10: error: ‘res’ may be used uninitialized in this function [-Werror=maybe-uninitialized] + return res; + ^ + +2019-01-30 20:41:13 +0900 Seungha Yang <seungha.yang@navercorp.com> + + * gst-libs/gst/rtsp/gstrtspconnection.c: + rtspconnection: Fix broken build on GLib 2.59.0 + GPollableReturn enum was introduced after GLib 2.59.0 release. + +2019-01-29 10:38:15 +0900 Seungha Yang <seungha.yang@navercorp.com> + + * meson.build: + * tests/check/meson.build: + meson: Add support orc fallback + Allow fallback to orc subproject if any. + Additionally 'dependencies' keyword is removed from find_library, + because it's invalid keyword for find_library. + +2019-01-17 18:04:11 -0300 Thibault Saunier <tsaunier@igalia.com> + + * gst/typefind/gsttypefindfunctions.c: + typefindfunctions: Add a function to typefind xges files + +2019-01-27 12:35:12 +0900 mrk501 <mrk501e@outlook.com> + + * gst-libs/gst/audio/gstaudioringbuffer.c: + audioringbuffer: Fix wrong memcpy address when reordering channels + When using multichannel audio data and being needed to reorder channels, + audio data is not copied correctly because destination address of + memcpy is wrong. + For example, the following command + $ gst-launch-1.0 pulsesrc ! audio/x-raw,channels=6,format=S16LE ! filesink location=test.raw + will reproduce this issue if there is 6-ch audio input device. + This commit fixes that. + The detailed process of this issue is as follows: + 1. gst-launch-1.0 calls gst_pulsesrc_prepare (gst-plugins-good/ext/pulse/pulsesrc.c) + 1466 gst_pulsesrc_prepare (GstAudioSrc * asrc, GstAudioRingBufferSpec * spec) + 1467 { + (skip...) + 1480 { + 1481 GstAudioRingBufferSpec s = *spec; + 1482 const pa_channel_map *m; + 1483 + 1484 m = pa_stream_get_channel_map (pulsesrc->stream); + 1485 gst_pulse_channel_map_to_gst (m, &s); + 1486 gst_audio_ring_buffer_set_channel_positions (GST_AUDIO_BASE_SRC + 1487 (pulsesrc)->ringbuffer, s.info.position); + 1488 } + In my environment, after line 1485 is processed, position of spec and s are + spec->info.position[0] = 0 + spec->info.position[1] = 1 + spec->info.position[2] = 2 + spec->info.position[3] = 6 + spec->info.position[4] = 7 + spec->info.position[5] = 8 + s.info.position[0] = 0 + s.info.position[1] = 6 + s.info.position[2] = 2 + s.info.position[3] = 1 + s.info.position[4] = 7 + s.info.position[5] = 8 + The values of spec->info.positions equal + GST_AUDIO_BASE_SRC(pulsesrc)->ringbuffer->spec->info.positions. + 2. gst_audio_ring_buffer_set_channel_positions calls + gst_audio_get_channel_reorder_map. + 3. Arguments of gst_audio_get_channel_reorder_map are + from = s.info.position + to = GST_AUDIO_BASE_SRC(pulsesrc)->ringbuffer->spec->info.positions + At the end of this function, reorder_map is set to + reorder_map[0] = 0 + reorder_map[1] = 3 + reorder_map[2] = 2 + reorder_map[3] = 1 + reorder_map[4] = 4 + reorder_map[5] = 5 + 4. Go back to gst_audio_ring_buffer_set_channel_positions and + 2065 buf->need_reorder = TRUE; + is processed. + 5. Finally, in gst_audio_ring_buffer_read, + 1821 if (need_reorder) { + (skip...) + 1829 memcpy (data + i * bpf + reorder_map[j] * bps, ptr + j * bps, bps); + is processed and makes this issue. + +2019-01-24 17:52:50 +0200 Sebastian Dröge <sebastian@centricular.com> + + * gst-libs/gst/rtsp/gstrtspconnection.c: + rtspconnection: Update to merged GOutputStream::writev() API + +2018-11-30 12:47:57 +0200 Sebastian Dröge <sebastian@centricular.com> + + * gst-libs/gst/rtsp/gstrtspconnection.c: + rtspconnection: Handle EOF on writev() after checking for all other error conditions + Otherwise we would return EOF if nothing was written in any case, even + if this was actually a case of TIMEOUT or EWOULDBLOCK for example. + Thanks to Edward Hervey for debugging and finding this issue. + +2018-10-24 11:32:22 +0200 Ognyan Tonchev <ognyan@axis.com> + + * gst-libs/gst/rtsp/gstrtspconnection.c: + rtspconnection: Fixes for corrupt RTP packets in dispatch_write() + Fixes 2 problems: + 1) Number of unmapped memories does not always match number of mmaped ones in + dispatch_write(). + 2) When dispatch_write() is dispatched second time after an incomplete write, + already set offsets will not be taken into account, thus corrupt RTP data will + be sent. + +2018-09-17 17:03:45 +0300 Sebastian Dröge <sebastian@centricular.com> + + * docs/libs/gst-plugins-base-libs-sections.txt: + * gst-libs/gst/rtsp/gstrtspconnection.c: + * gst-libs/gst/rtsp/gstrtspconnection.h: + rtsp-connection: Make use of new GstRTSPMessage API for directly storing a body buffer and add API for writing multiple messages + By doing so we can send a whole GstBufferList and each memory in the + contained buffers without copying into a single memory area and with a + single writev() call. This improves performance considerably for + high-packet-rate streams. + This depends on https://gitlab.gnome.org/GNOME/glib/merge_requests/333 + to be efficient, otherwise each chunk of memory is a separate write() + call. + https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/370 + +2018-08-17 12:51:31 +0300 Sebastian Dröge <sebastian@centricular.com> + + * docs/libs/gst-plugins-base-libs-sections.txt: + * gst-libs/gst/rtsp/gstrtspmessage.c: + * gst-libs/gst/rtsp/gstrtspmessage.h: + rtsp-message: Add support for storing GstBuffers directly as body payload of messages + This makes it unnecessary for callers to first merge together all + memories, and it allows API like GstRTSPConnection to write them out + without first copying all memories together or using writev()-style API + to write multiple memories out in one go. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/370 + +2019-01-28 15:16:06 +0100 Andrew Gall <a.gall@activevideo.com> + + * gst-libs/gst/video/video-anc.c: + video-anc: Fix glib version check for G_GNUC_CHECK_VERSION macro + Fixes #544 + +2019-01-28 13:54:43 +0900 Seungha Yang <seungha.yang@navercorp.com> + + * tests/check/libs/discoverer.c: + tests: discoverer: Add async API test cases + Add more test cases for async APIs such as gst_discoverer_{start,stop}, + and gst_discoverer_discover_uri_async() + +2019-01-28 18:13:27 +0900 Seungha Yang <seungha.yang@navercorp.com> + + * gst-libs/gst/pbutils/gstdiscoverer.c: + discoverer: Hold GSource object instead of source id + g_source_remove() works only for a GSource which was attached + to default GMainContext, but the GSource might be attached to + custom context depending on how gst_discoverer_start() was called. + Whatever the attached context was, g_source_destroy() can clean it up. + +2019-01-24 10:14:36 +0200 Sebastian Dröge <sebastian@centricular.com> + + * ext/gl/gstglcolorbalance.c: + glcolorbalance: Copy caps in transform_internal_caps() + We don't get ownership of the caps that are passed in, and doing so + causes crashes at a later time. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/546 + +2019-01-22 13:24:29 +0000 Tim-Philipp Müller <tim@centricular.com> + + * gst-libs/gst/gl/meson.build: + meson: opengl: fix enabled_gl_apis in pkg-config file + Make consistent with what autotools puts into enabled_gl_apis + variable. Autotools puts 'gl' in there instead of 'opengl'. + This would cause problems when building -bad glmixers plugin + in meson against a -base that was built with autotools. + See https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/871 + +2018-12-19 10:59:09 +0800 Haihao Xiang <haihao.xiang@intel.com> + + * gst-libs/gst/gl/x11/gstglwindow_x11.c: + gstglwindow_x11: require a resize event at once after XResizeWindow + Otherwise surface_width/surface_height stored in GstGLWindowPrivate + isn't changed, sometimes an unnecessary reconfigure event is sent on + sinkpad, then result in upstream reconfiguring. + Example pipeline: + gst-launch-1.0 videotestsrc ! msdkvpp ! glimagesink + +2019-01-18 11:39:02 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> + + * ext/alsa/Makefile.am: + * ext/alsa/gstalsadeviceprobe.c: + * ext/alsa/gstalsadeviceprobe.h: + * ext/alsa/gstalsadeviceprovider.c: + * ext/alsa/gstalsadeviceprovider.h: + * ext/alsa/gstalsaplugin.c: + * ext/alsa/gstalsasink.c: + * ext/alsa/gstalsasrc.c: + * ext/alsa/meson.build: + Revert "alsa: Implement a DeviceProvider" + This reverts commit 69c3c31608ecebfadd9717e950d8c708988563e3. + All devices have the same name, they are duplicated with pulseaudio one + and the provided does not respond to HW being plugged/unplugged. I think + it's not ready for 1.16. + +2018-08-31 18:33:43 -0300 Thibault Saunier <tsaunier@igalia.com> + + * ext/alsa/Makefile.am: + * ext/alsa/gstalsadeviceprobe.c: + * ext/alsa/gstalsadeviceprobe.h: + * ext/alsa/gstalsadeviceprovider.c: + * ext/alsa/gstalsadeviceprovider.h: + * ext/alsa/gstalsaplugin.c: + * ext/alsa/gstalsasink.c: + * ext/alsa/gstalsasrc.c: + * ext/alsa/meson.build: + alsa: Implement a DeviceProvider + Removing gstalsadeviceprobe.[ch] as it was a relique from the 0.10 + century. + +2018-12-07 18:07:42 +0200 George Kiagiadakis <george.kiagiadakis@collabora.com> + + * gst-libs/gst/video/gstvideoaggregator.c: + videoaggregator: remove broken rate adjustment + The start_time and end_time in this context have already + been adjusted for the input's rate by converting them to running + time above. What is needed afterwards is to compare these + with the output's start/stop running time, which also takes + into account the rate, so we are comparing equal things. + Multiplying these with the output's rate here is only breaking + this logic. In most cases the input and output rate is the same, + so this multiplication effectively reverses the rate adjustment + that happened while converting to running time, which is why + we see the video playing with the original rate in tests. + Fixes #541 + === release 1.15.1 === 2019-01-17 01:50:25 +0000 Tim-Philipp Müller <tim@centricular.com> |