mirror of
https://gitlab.uni-freiburg.de/opensourcevdi/spice
synced 2026-08-12 23:23:55 +00:00
display-channel: Check that all structure are destroyed during finalize
The leak detector we use currently is not enough to detect some kind of leak in DisplayChannel so manually test. These tests are enabled only when --enable-extra-checks is passed to configure. Signed-off-by: Frediano Ziglio <fziglio@redhat.com> Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
This commit is contained in:
parent
3a5007d18f
commit
8cdea23d1d
@ -247,6 +247,9 @@ AC_ARG_ENABLE([extra-checks],
|
||||
AS_HELP_STRING([--enable-extra-checks=@<:@yes/no@:>@],
|
||||
[Enable expensive checks @<:@default=no@:>@]))
|
||||
AM_CONDITIONAL(ENABLE_EXTRA_CHECKS, test "$enable_extra_checks" = "yes")
|
||||
AC_DEFINE_UNQUOTED([ENABLE_EXTRA_CHECKS],
|
||||
[$(test "x$enable_extra_checks" = xyes && echo 1 || echo 0)],
|
||||
[Define to 1 to enable extra checks on code otherwise define to 0])
|
||||
|
||||
dnl ===========================================================================
|
||||
dnl check compiler flags
|
||||
|
||||
@ -80,6 +80,30 @@ display_channel_finalize(GObject *object)
|
||||
|
||||
display_channel_destroy_surfaces(self);
|
||||
image_cache_reset(&self->priv->image_cache);
|
||||
|
||||
if (ENABLE_EXTRA_CHECKS) {
|
||||
unsigned int count;
|
||||
_Drawable *drawable;
|
||||
Stream *stream;
|
||||
|
||||
count = 0;
|
||||
for (drawable = self->priv->free_drawables; drawable; drawable = drawable->u.next) {
|
||||
++count;
|
||||
}
|
||||
spice_assert(count == NUM_DRAWABLES);
|
||||
|
||||
count = 0;
|
||||
for (stream = self->priv->free_streams; stream; stream = stream->next) {
|
||||
++count;
|
||||
}
|
||||
spice_assert(count == NUM_STREAMS);
|
||||
spice_assert(ring_is_empty(&self->priv->streams));
|
||||
|
||||
for (count = 0; count < NUM_SURFACES; ++count) {
|
||||
spice_assert(self->priv->surfaces[count].context.canvas == NULL);
|
||||
}
|
||||
}
|
||||
|
||||
monitors_config_unref(self->priv->monitors_config);
|
||||
g_array_unref(self->priv->video_codecs);
|
||||
g_free(self->priv);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user