Rather than maintaining ownership of the composition in the
caller, free the DrmComposition in QueueComposition on failure.
Change-Id: Id70e98ae1a8eef400bc29460bfc5a89c4707d617
Signed-off-by: Sean Paul <seanpaul@chromium.org>
// Starts a fresh composition.
virtual Composition *CreateComposition(Importer *importer) = 0;
+ // Transfers ownership of composition to the Compositor (whether or not this
+ // call returns success) for compositing.
// On success returns a syncpoint fd that will be signaled when composition is
// complete or -1 if compositing was completed by this method's return. On
// error returns an integer less than -1. The composition is invalid after
drm_composition->TakeDisplayComposition(display));
if (ret) {
ALOGE("Failed to queue composition for display %d", display);
+ delete composition;
return ret;
}
}
}
ret = ctx->drm.compositor()->QueueComposition(composition);
+ composition = NULL;
if (ret) {
ALOGE("Failed to queue the composition");
- hwc_set_cleanup(num_displays, display_contents, composition);
+ hwc_set_cleanup(num_displays, display_contents, NULL);
return ret;
}
hwc_set_cleanup(num_displays, display_contents, NULL);