[Spice-devel] [PATCH v3 5/9] Add new spice-gl stubs API
Marc-André Lureau
marcandre.lureau at gmail.com
Tue Feb 9 13:08:05 UTC 2016
Hi
On Thu, Feb 4, 2016 at 4:29 PM, Frediano Ziglio <fziglio at redhat.com> wrote:
>> +{
>> + spice_return_if_fail(qxl != NULL);
>> + spice_return_if_fail(qxl->st->gl_draw_async == NULL);
>
> Here you need to close fd on error or you will get a file
> descriptor leak.
>> +
>> +SPICE_GNUC_VISIBLE
>> +void spice_gl_draw_async(QXLInstance *qxl,
>> + uint32_t x, uint32_t y,
>> + uint32_t w, uint32_t h,
>> + uint64_t cookie)
>> +{
>> + spice_return_if_fail(qxl != NULL);
>> + spice_return_if_fail(qxl->st->scanout.drm_dma_buf_fd != -1);
>> + spice_return_if_fail(qxl->st->gl_draw_async == NULL);
>
> Here you should signal the cookie (or return an error to be handled by the
> caller or rendering will stuck
Those two are pre-conditions, and abort() by default. (even if
DISABLE_ABORT is set, they should never happen at runtime) Hence it's
okay to not handle this error case. If you start handling it, then it
becomes implicit that you deal with those cases and you'll have to
keep it, but it should never have to in the first place. This is how
most of glib libraries/applications are written. Since qemu relies on
glib, they have the same contract with glib libraries, although
internally they most often use abort() pre-conditions (as spice server
by default).
--
Marc-André Lureau
More information about the Spice-devel
mailing list