When we add a new listener to an object, it will emit the full state
of the object. For this it temporarily sets the change_mask to all
changes. Restore the previous state after this or else we might not
emit the right change_mask for the next listener.
Consider the case where one there are two listeners on an object.
The object emits a change and the first listener wants to enumerate the
changed params. For this is adds a new listener and then triggers the
enumeration. If we set the change_mask to 0 after adding the listener,
the second listener would get a 0 change_mask and fail to update
its state.
SPA_MEMBER is misleading, all we're doing here is pointer+offset and a
type-casting the result. Rename to SPA_PTROFF which is more expressive (and
has the same number of characters so we don't need to re-indent).
libcamera is depending on libdrm in libcamera_wrapper.cpp but it was
implicitely including the header drm_fourcc.h with libcamera
file pixel_format.h
With this patch, the libcamera plugin should explicitely depends on
libdrm as it needs DRM fourcc and should not depend on multiple
inclusion from libcamera.
Add a FourCC for Motion-JPEG compressed format. This is a temporary
addition until the format gets merged in the upstream kernel.