Tim-Philipp Müller [Fri, 25 Jul 2014 10:45:56 +0000 (11:45 +0100)]
typefindelement: remove prototype for function that no longer exists
Thiago Santos [Thu, 24 Jul 2014 17:39:11 +0000 (14:39 -0300)]
bytereader: add gst_byte_reader_masked_scan_uint32_peek
Adds gst_byte_reader_masked_scan_uint32_peek just like
GstAdapter has a _peek and non _peek version
Upgraded tests to check that the returned value is correct in the
_peek version
API: gst_byte_reader_masked_scan_uint32_peek
https://bugzilla.gnome.org/show_bug.cgi?id=728356
Tim-Philipp Müller [Thu, 26 Jun 2014 13:09:25 +0000 (14:09 +0100)]
bufferlist: pre-allocate buffer array in one go with the buffer list
We can now create and free a buffer list with one slice alloc/free
call in most cases, instead of one slice alloc/free for the list,
one slice alloc/free for the GArray, and one malloc/free for the
GArray array. In practice we know the max size of our buffer list
from the start, so can avoid reallocs.
https://bugzilla.gnome.org/show_bug.cgi?id=732284
Stefan Sauer [Wed, 23 Jul 2014 19:27:48 +0000 (21:27 +0200)]
private: allow internal access to the debug base-time
Moving the extern to the head lets us access this from other parts as well. This
is neeed in the tracer branch.
Arun Raghavan [Tue, 22 Jul 2014 18:45:17 +0000 (00:15 +0530)]
scripts: Use git pull --rebase
No point introducing redundant merge commits.
Thiago Santos [Mon, 21 Jul 2014 15:41:08 +0000 (12:41 -0300)]
Revert "tests: taglist: add basic test for taglists serialization"
This reverts commit
85d23d19b7de40541d63b0bc76d8b646c321af26.
There was already a gsttag.c tests file, this test has been merged
in it in the previous commit
Thiago Santos [Mon, 21 Jul 2014 15:40:47 +0000 (12:40 -0300)]
tests: tag: add the empty taglist serialization test
Adds the test to the appropriate and already existing file.
Thiago Santos [Mon, 14 Jul 2014 21:46:54 +0000 (18:46 -0300)]
tests: taglist: add basic test for taglists serialization
Make sure it works with empty taglists
Thiago Santos [Mon, 14 Jul 2014 21:25:50 +0000 (18:25 -0300)]
tests: gststructure: serialization of tag event structure
Adds a test that checks that the serialization of a tag event structure
works without problems
https://bugzilla.gnome.org/show_bug.cgi?id=733131
Thiago Santos [Mon, 14 Jul 2014 21:23:43 +0000 (18:23 -0300)]
gstvalue: add GstTagList compare function
When serializing GstStructures from events in GDP it will add a taglist
as a GstStructure field, having the compare function allows comparison of
GstStructures to check if the serialized/deserialized version matches the
original one, among other cases.
https://bugzilla.gnome.org/show_bug.cgi?id=733131
Srimanta Panda [Wed, 9 Jul 2014 13:48:10 +0000 (15:48 +0200)]
funnel: Fix for racy EOS event handling
When eos events are forwarded simultaneouly from two sinkpads on
funnel, it doesnot forward the eos to sourcepad. The reason is
sticky events are stored after the event callbacks are returned.
Therefore while one is about to store the sticky events on the its
sinkpad, other sinkpad starts checking for the eos events on all other
sinkpads and assumes eos is not present yet.
https://bugzilla.gnome.org/show_bug.cgi?id=732851
Sebastian Dröge [Thu, 17 Jul 2014 14:05:00 +0000 (16:05 +0200)]
pipeline: Add unit test for resetting of the start time
Also check if this properly affects basesink elements to not
report the old start time but the real current position when
setting to PAUSED again.
Sebastian Dröge [Tue, 15 Jul 2014 16:19:24 +0000 (18:19 +0200)]
pipeline: Reset the start time when going from PAUSED to READY too
Sebastian Dröge [Tue, 15 Jul 2014 15:19:10 +0000 (17:19 +0200)]
pipeline: Reset start time in READY->PAUSED before chaining up
Otherwise bin will change the state of the child elements without
distributing the new start time.
Tim-Philipp Müller [Sat, 28 Jun 2014 16:58:26 +0000 (17:58 +0100)]
elements: improve buffer flags to string utility function
Avoid relocations and refactor so that we don't calculate
the fixed and known at compile time maximum string size
every time. Also skip the mini object flags which we are
not going to print anyway.
Sebastian Dröge [Sat, 19 Jul 2014 16:04:31 +0000 (18:04 +0200)]
Back to development
Sebastian Dröge [Sat, 19 Jul 2014 14:46:41 +0000 (16:46 +0200)]
Release 1.4.0
Sebastian Dröge [Sat, 19 Jul 2014 14:21:20 +0000 (16:21 +0200)]
Update .po files
Sebastian Dröge [Sat, 19 Jul 2014 10:16:58 +0000 (12:16 +0200)]
po: Update translations
Thibault Saunier [Thu, 17 Jul 2014 13:53:53 +0000 (15:53 +0200)]
baseparse: Return FLOW_FLUSHING when pushing a frame on a pad that has been flushed
When going to READY, it is possible that we are still pusing a frame but that
our srcpad has already been set to flushing. In that case we should not
post any error on the bus but instead cleanly return FLOW_FLUSHING.
https://bugzilla.gnome.org/show_bug.cgi?id=733320
Edward Hervey [Thu, 17 Jul 2014 05:07:36 +0000 (07:07 +0200)]
typefindelement: Propagate input buffer PTS and DTS
The initial buffers (that were used for timestamping) might have PTS
and DTS set. In order to forward those properly, get the initial
PTS/DTS from the adapter and set them on the reconstructed output
buffer.
https://bugzilla.gnome.org/show_bug.cgi?id=733291
Sebastian Rasmussen [Sat, 12 Jul 2014 15:01:23 +0000 (17:01 +0200)]
debugutils: Unref pad template after use
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=733121
Thiago Santos [Mon, 14 Jul 2014 21:10:45 +0000 (18:10 -0300)]
gst: init taglist gtype to use it in gstvalue
Otherwise it will have a 0 value and GstTagList won't be found
for GstValue functions (serialization/deserialization)
https://bugzilla.gnome.org/show_bug.cgi?id=733131
Sebastian Dröge [Fri, 11 Jul 2014 08:46:01 +0000 (10:46 +0200)]
Release 1.3.91
Sebastian Dröge [Fri, 11 Jul 2014 08:41:20 +0000 (10:41 +0200)]
Update .po files
Sebastian Dröge [Fri, 11 Jul 2014 06:51:08 +0000 (08:51 +0200)]
po: Update translations
Sebastian Rasmussen [Sat, 5 Jul 2014 16:29:29 +0000 (18:29 +0200)]
docs: Fix documentation typos and inconsistencies
* GstGlobalDeviceMonitor was renamed to GstDeviceMonitor
* Expand GST_MESSAGE_DEVICE to the full enum value names
* Correct the incorrect references to the GstDeviceProvider interfaces
* Describe caps arguments for gstcheck interface
* Add missing docs for GstNetAddressMeta and its add function
* Add docs for toc helper macros
* Avoid refering to GstValueList type as done elsewhere
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=732786
Sebastian Rasmussen [Sat, 5 Jul 2014 15:13:21 +0000 (17:13 +0200)]
docs: Cleanup interface references in docs
* Delete references to removed interfaces
* Add missing documentation sections
* Fix duplicate interface references for GstDevice
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=732786
Sebastian Dröge [Tue, 8 Jul 2014 09:17:41 +0000 (11:17 +0200)]
docs: There is no decodebin2 anymore, don't pretend otherwise
Thiago Santos [Mon, 7 Jul 2014 19:14:32 +0000 (16:14 -0300)]
fdsrc: fix error setting when uri is invalid
Elements should always set the GError
Tim-Philipp Müller [Sun, 6 Jul 2014 11:13:04 +0000 (12:13 +0100)]
libs: gstcheck: check that mutex is locked before g_cond_wait*() is called
Sanity check to catch problems in unit test.
Tim-Philipp Müller [Sun, 6 Jul 2014 11:12:20 +0000 (12:12 +0100)]
libs: gstcheck: init and clear global mutex and cond variables
Tim-Philipp Müller [Sun, 6 Jul 2014 11:09:31 +0000 (12:09 +0100)]
tests: fix locking in gstpoll unit test
The mutex needs to be locked when g_cond_wait*() is
called.
Matthieu Bouron [Sat, 5 Jul 2014 15:24:18 +0000 (16:24 +0100)]
gst-uninstalled: add video and base library paths from -bad
https://bugzilla.gnome.org/show_bug.cgi?id=732770
Tim-Philipp Müller [Fri, 4 Jul 2014 18:40:28 +0000 (19:40 +0100)]
tools: suppress GLib warnings when gst-inspecting deprecated properties
GLib in git will spew a g_warning() when a property marked as
deprecated via param spec flags is accessed. Suppress this by
setting the appropriate environment variable.
Sebastian Dröge [Thu, 3 Jul 2014 08:11:02 +0000 (10:11 +0200)]
message: Work around g-i/pygobject/gjs bug with ~0 in enums
GST_MESSAGE_ANY was considered a long by pygobject and gjs, and thus
couldn't be used in gst_bus_poll() and similar APIs as they expect an
int-typed enum.
Just use 0xffffffff instead for now.
https://bugzilla.gnome.org/show_bug.cgi?id=732633
Tim-Philipp Müller [Wed, 2 Jul 2014 07:41:18 +0000 (08:41 +0100)]
tests: don't use post-GLib 2.32 API in bufferlist test
g_ptr_array_insert() is GLib >= 2.40
Göran Jönsson [Tue, 1 Jul 2014 10:22:56 +0000 (12:22 +0200)]
pad: Don't unlock while iterating over all sticky events for removal
Otherwise we might end up getting the event removed from elsewhere
at the same time while we're unlocked for g_object_notify().
https://bugzilla.gnome.org/show_bug.cgi?id=732556
Sebastian Dröge [Tue, 1 Jul 2014 17:17:11 +0000 (19:17 +0200)]
identity: Proxy the accept-caps query
We always work in passthrough mode so there's no point in doing
something more clever in basetransform. Also the basetransform
code leads to problems with incomplete caps and downstream
elements that use GST_PAD_FLAG_ACCEPT_INTERSECT.
https://bugzilla.gnome.org/show_bug.cgi?id=732559
Vincent Penquerc'h [Tue, 1 Jul 2014 10:21:53 +0000 (11:21 +0100)]
basesink: reset QoS on segment event
This avoids spurious warnings about slow machine when upstream
sends new segments without flushing.
Evan Nemerson [Tue, 1 Jul 2014 06:39:18 +0000 (23:39 -0700)]
introspection: Assorted minor introspection and documentation fixes
https://bugzilla.gnome.org/show_bug.cgi?id=732534
Guillaume Desmottes [Mon, 30 Jun 2014 08:59:18 +0000 (08:59 +0000)]
devicemonitor: Stop using g_clear_pointer()
We dont't want to depend on GLib 2.34 for now.
Sebastian Dröge [Sun, 29 Jun 2014 17:16:05 +0000 (19:16 +0200)]
sparsefile: Initialize memory in unit test to make valgrind happy
We were writing unitialized stack memory to the file.
Sebastian Dröge [Sat, 28 Jun 2014 08:45:18 +0000 (10:45 +0200)]
Release 1.3.90
Sebastian Dröge [Sat, 28 Jun 2014 08:41:48 +0000 (10:41 +0200)]
Update .po files
Tim-Philipp Müller [Fri, 27 Jun 2014 09:44:32 +0000 (10:44 +0100)]
devicemonitor: don't fail when started without any filters
Just show all devices then.
Tim-Philipp Müller [Fri, 27 Jun 2014 09:44:01 +0000 (10:44 +0100)]
deviceproviderfactory: handle NULL classes argument and match any
Olivier Crête [Fri, 27 Jun 2014 01:00:40 +0000 (21:00 -0400)]
device: Add unit tests
Olivier Crête [Thu, 26 Jun 2014 21:22:25 +0000 (17:22 -0400)]
devicemonitor: Improve documentation
Olivier Crête [Thu, 26 Jun 2014 21:13:12 +0000 (17:13 -0400)]
devicemonitor: Make it possible to add multiple filters
Each filter will include a GstCaps and a set of classes to match
Olivier Crête [Thu, 26 Jun 2014 20:31:51 +0000 (16:31 -0400)]
device: Add pre-conditions
Olivier Crête [Thu, 26 Jun 2014 19:08:46 +0000 (15:08 -0400)]
GstDeviceMonitor: Rename from GstGlobalDeviceMonitor
Olivier Crête [Thu, 26 Jun 2014 18:28:09 +0000 (14:28 -0400)]
DeviceProvider: Rename from DeviceMonitor
Sebastian Dröge [Thu, 26 Jun 2014 17:31:33 +0000 (19:31 +0200)]
dataqueue: Hide from bindings
Other languages have their own data structures that are more convenient to
use.
https://bugzilla.gnome.org/show_bug.cgi?id=731303
Sebastian Dröge [Thu, 26 Jun 2014 17:30:52 +0000 (19:30 +0200)]
queuearray: Hide from bindings
Other languages have their own data structures that are more convenient to use.
https://bugzilla.gnome.org/show_bug.cgi?id=731350
Philip Withnall [Wed, 28 May 2014 09:14:45 +0000 (10:14 +0100)]
miniobject: Add missing (nullable) annotations
gst_mini_object_replace() can take NULL mini-objects.
https://bugzilla.gnome.org/show_bug.cgi?id=730873
Sebastian Dröge [Thu, 26 Jun 2014 17:02:06 +0000 (19:02 +0200)]
message: Application and element messages should not have NULL structures
It does not make sense for them.
Evan Nemerson [Wed, 11 Jun 2014 23:19:01 +0000 (16:19 -0700)]
introspection: add some missing allow-none annotations to in params
https://bugzilla.gnome.org/show_bug.cgi?id=730957
Evan Nemerson [Wed, 11 Jun 2014 23:06:19 +0000 (16:06 -0700)]
introspection: add nullability annotations to out and inout params
https://bugzilla.gnome.org/show_bug.cgi?id=730957
Evan Nemerson [Wed, 11 Jun 2014 22:21:34 +0000 (15:21 -0700)]
introspection: add missing (nullable) annotations to return values
Support for (nullable) was added to G-I at the same time as nullable
return values. Previous versions of G-I will not mark return values as
nullable, even when an (allow-none) annotation is present, so it is
not necessary to add (allow-none) annotations for compatibility with
older versions of G-I.
https://bugzilla.gnome.org/show_bug.cgi?id=730957
Evan Nemerson [Thu, 12 Jun 2014 00:15:39 +0000 (17:15 -0700)]
base: assorted introspection fixes and additions
https://bugzilla.gnome.org/show_bug.cgi?id=731542
Evan Nemerson [Thu, 12 Jun 2014 00:12:20 +0000 (17:12 -0700)]
base: add (nullable) annotations to return values
https://bugzilla.gnome.org/show_bug.cgi?id=731542
Tim-Philipp Müller [Thu, 26 Jun 2014 13:08:03 +0000 (14:08 +0100)]
tests: add another buffer list test case
Tim-Philipp Müller [Thu, 26 Jun 2014 12:24:08 +0000 (13:24 +0100)]
tests: port and re-enable buffer list tests
And remove some which don't apply any more.
George Kiagiadakis [Thu, 26 Jun 2014 08:58:04 +0000 (11:58 +0300)]
tests: enhance the gstcaps test_features to also test gst_caps_set_features()
Compliments my previous patch for gst_caps_set_features, which would
previously assert and leak the old GstCapsFeatures if the caps already
had a GstCapsFeatures and you were trying to replace it with a new one.
George Kiagiadakis [Thu, 26 Jun 2014 08:16:34 +0000 (11:16 +0300)]
caps: unset the parent refcount of the old features before freeing them in gst_caps_set_features()
Otherwise gst_caps_features_free() asserts and the features structure is leaked
Thiago Santos [Mon, 16 Jun 2014 22:30:06 +0000 (19:30 -0300)]
baseparse: avoid returning _OK for _NOT_LINKED
When the parser receives non-aligned packets it can push a buffer
and get a not-linked return while still leaving some data still to
be parsed. This remaining data will not form a complete frame and
the subclass likely returns _OK and baseparse would take that
as the return, while it the element is actually not-linked.
This patch fixes this by storing the last flow-return from a push
and using that if a parsing operation doesn't result in data being
flushed or skipped.
https://bugzilla.gnome.org/show_bug.cgi?id=731474
Tim-Philipp Müller [Wed, 25 Jun 2014 10:40:57 +0000 (11:40 +0100)]
elements: fix copyright and remove gtk-doc chunk
Trivial as it may be, this code was mostly copied from
somewhere else. The gtk-doc chunk is not needed, since
it's not public API.
Olivier Crête [Tue, 3 Jun 2014 02:07:52 +0000 (22:07 -0400)]
filesrc: Ignore seek error on non-seekable files
This make it works with FIFOs.
https://bugzilla.gnome.org/show_bug.cgi?id=731176
Sebastian Dröge [Sun, 22 Jun 2014 17:36:14 +0000 (19:36 +0200)]
Back to development
Sebastian Dröge [Sun, 22 Jun 2014 16:07:42 +0000 (18:07 +0200)]
Release 1.3.3
Sebastian Dröge [Sun, 22 Jun 2014 15:15:40 +0000 (17:15 +0200)]
Update .po files
Sebastian Dröge [Sun, 22 Jun 2014 12:23:03 +0000 (14:23 +0200)]
po: Update translations
Tim-Philipp Müller [Sun, 22 Jun 2014 11:52:01 +0000 (12:52 +0100)]
tests: add unit test for gst_caps_is_any() and _is_empty()
https://bugzilla.gnome.org//show_bug.cgi?id=731704
Tim-Philipp Müller [Sun, 22 Jun 2014 11:50:42 +0000 (12:50 +0100)]
caps: gst_caps_is_any() should return TRUE or FALSE
Not some flag value instead of TRUE. Fixes code like
gst_caps_is_any() == TRUE.
https://bugzilla.gnome.org//show_bug.cgi?id=731704
Tim-Philipp Müller [Sun, 1 Jun 2014 15:56:41 +0000 (16:56 +0100)]
device: rename "klass" and get_klass() to "device-class" and _get_device_class()
There's some precedent in GstElementFactory, but a
"klass" property just seems weird.
Tim-Philipp Müller [Fri, 20 Jun 2014 17:34:44 +0000 (18:34 +0100)]
benchmarks: capsnego: add --loops command line option
And default to 50 loops.
Tim-Philipp Müller [Fri, 20 Jun 2014 16:14:52 +0000 (17:14 +0100)]
benchmark: capsnego: use GOptionContext for option parsing
Tim-Philipp Müller [Thu, 19 Jun 2014 11:10:23 +0000 (12:10 +0100)]
tests: fix compiler warnings in gstvalue tests
Calling GST_VALUE_HOLDS_*(&v) now results in a compiler
warning about value!=NULL always being false, so check
type directly in those cases.
Tim-Philipp Müller [Tue, 17 Jun 2014 21:45:57 +0000 (22:45 +0100)]
value: simplify GST_VALUE_HOLDS for our boxed and fundamental types
Boxed types can't be derived from, and we don't support
deriving from our special fundamental types (the code
checks for GType equality in most places.
Olivier Crête [Fri, 20 Jun 2014 20:55:06 +0000 (16:55 -0400)]
GstDevice: Document GstDevice and related classes
Srimanta Panda [Mon, 16 Jun 2014 11:47:55 +0000 (13:47 +0200)]
Fix funnel EOS handling and wrong unittest
When no data is coming from sinkpads and eos events
arrived at one of the sinkpad, funnel forwards the EOS
event to downstream. It forwards the EOS because lastsink pad
is NULL. Also the unit testcase of the funnel is not checking
the correct behavior as it should. The unit test case should
fail if one of the sink pad has already EOS present on it and
we are trying to push one more EOS.
https://bugzilla.gnome.org/show_bug.cgi?id=731716
Tim-Philipp Müller [Thu, 19 Jun 2014 07:09:55 +0000 (08:09 +0100)]
gstvalue: optimise checks for lists
Our fundamental types are non-derivable, so we can
just check for equality. Also avoid doing the same
check multiple times in a couple of places.
Tim-Philipp Müller [Thu, 19 Jun 2014 07:06:31 +0000 (08:06 +0100)]
gstvalue: use g_assert() in internal function for already-checked things
So these get compiled out for releases.
Tim-Philipp Müller [Thu, 19 Jun 2014 07:05:40 +0000 (08:05 +0100)]
gstvalue: add internal _can_compare_unchecked()
Tim-Philipp Müller [Thu, 19 Jun 2014 07:03:37 +0000 (08:03 +0100)]
gstvalue: add internal _list_concat() that takes ownership of input values
Avoids unnecessary copies.
Tim-Philipp Müller [Wed, 18 Jun 2014 18:06:58 +0000 (19:06 +0100)]
structure: simplify value type checks in getters
Just check for GType equality in common cases.
Sebastian Dröge [Thu, 19 Jun 2014 07:29:18 +0000 (09:29 +0200)]
value: Add a FIXME 2.0 for a fraction ranges optimization
Currently we leak the internal representation of them as two GValues that
contain a fraction. Without this we could store fraction ranges as
data[0] = (min_n << 32) | (min_d)
data[1] = (max_n << 32) | (max_d)
and wouldn't require an additional allocation per range.
Sebastian Dröge [Thu, 19 Jun 2014 07:23:56 +0000 (09:23 +0200)]
value: Make sure to cast int range values to guints before storing them
Otherwise negative values will sets all of the 64 bits due to two's
complement's definition of negative values.
Also add a test for negative int ranges.
Tim-Philipp Müller [Thu, 19 Jun 2014 06:57:11 +0000 (07:57 +0100)]
win32: update exports
Sebastian Dröge [Thu, 19 Jun 2014 07:05:18 +0000 (09:05 +0200)]
value: Store integer ranges directly in a GValue without additional allocation
Micro optimization to save some allocations. Next step to do this
with fraction ranges too.
Edward Hervey [Thu, 19 Jun 2014 06:43:02 +0000 (08:43 +0200)]
gst_private: Fix duplicate definition
Sebastian Dröge [Thu, 19 Jun 2014 06:05:03 +0000 (08:05 +0200)]
gst: Store more basic type GTypes in variables
Micro optimization to change a function call to a variable access
for all our basic types.
Sebastian Dröge [Thu, 19 Jun 2014 06:04:01 +0000 (08:04 +0200)]
value: Store our fundamental type GTypes in variables
Micro optimization to change a function call to a variable access
for all our basic types.
Edward Hervey [Tue, 17 Jun 2014 05:31:48 +0000 (07:31 +0200)]
gstvalue: Speed up gst_value_intersect/_subtract
Both gst_value_intersect and gst_value_subtract will call
gst_value_compare if one of their arguments isn't a list.
gst_value_compare will then re-do a check to see if one of
the arguments is a list (for the special case of comparing a unitary
value with a list of length 1).
The problem is that the various G_VALUE_HOLDS represent an expensive
amount of calling gst_value_compare (almost half of it) to see if
the provided arguments are list. These checks can be done without
when we know that the arguments aren't lists.
* Create a new "nolist" gst_value_compare which avoids that special
case comparision
Benchmarks:
valgrind/callgrind: average speedup in instruction calls for
gst_value_intersect and gst_value_subtract is around 56% (Makes 63%
of the calls it used to take previously)
tests/benchmarks/capsnego: With default settings (depth 4, children 3
607 elements), time taken for transition from READY to PAUSED:
Before : 00.
391519153
After : 00.
220397492
56% of the time previously used, +77% speedup
https://bugzilla.gnome.org/show_bug.cgi?id=731756
Tim-Philipp Müller [Tue, 17 Jun 2014 13:39:00 +0000 (14:39 +0100)]
tests: remove some cruft from the bufferlist test
Buffers no longer carry caps, and bufferlists don't have
groups where buffers may need to be merged into one any more.
Tim-Philipp Müller [Mon, 16 Jun 2014 19:30:13 +0000 (20:30 +0100)]
tests: add test for gst_buffer_list_remove()
Tim-Philipp Müller [Mon, 16 Jun 2014 19:29:56 +0000 (20:29 +0100)]
bufferlist: fix buffer leak in _remove()
Tim-Philipp Müller [Mon, 16 Jun 2014 08:18:45 +0000 (09:18 +0100)]
flowcombiner: fix g-i transfer annotations
Edward Hervey [Mon, 16 Jun 2014 06:41:48 +0000 (08:41 +0200)]
flowcombiner: Fixed GBoxedCopyFunc
I'll just quote the most interesting man in the world:
"I don't usually push commits, but when I do I don't compile it
first"