{
struct sink *sink = DC_SINK_TO_SINK(dc_sink);
+ ASSERT(sink->ref_count > 0);
++sink->ref_count;
}
{
struct sink *sink = DC_SINK_TO_SINK(dc_sink);
+ ASSERT(sink->ref_count > 0);
--sink->ref_count;
if (sink->ref_count == 0) {
if (false == construct(sink, init_params))
goto construct_fail;
- /* TODO should we move this outside to where the assignment actually happens? */
- dc_sink_retain(&sink->protected.public);
+ ++sink->ref_count;
return &sink->protected.public;
void dc_stream_retain(const struct dc_stream *dc_stream)
{
struct stream *stream = DC_STREAM_TO_STREAM(dc_stream);
+
+ ASSERT(stream->ref_count > 0);
stream->ref_count++;
}
struct core_stream *protected = DC_STREAM_TO_CORE(public);
if (public != NULL) {
+ ASSERT(stream->ref_count > 0);
stream->ref_count--;
if (stream->ref_count == 0) {
if (false == construct(&stream->protected, dc_sink))
goto construct_fail;
- dc_stream_retain(&stream->protected.public);
+ stream->ref_count++;
return &stream->protected.public;
if (false == construct(core_dc->ctx, surface))
goto construct_fail;
- dc_surface_retain(&surface->protected.public);
+ ++surface->ref_count;
return &surface->protected.public;
{
struct surface *surface = DC_SURFACE_TO_SURFACE(dc_surface);
+ ASSERT(surface->ref_count > 0);
++surface->ref_count;
}
{
struct surface *surface = DC_SURFACE_TO_SURFACE(dc_surface);
+ ASSERT(surface->ref_count > 0);
--surface->ref_count;
if (surface->ref_count == 0) {
{
struct gamma *gamma = DC_GAMMA_TO_GAMMA(dc_gamma);
+ ASSERT(gamma->ref_count > 0);
++gamma->ref_count;
}
void dc_gamma_release(const struct dc_gamma *dc_gamma)
{
struct gamma *gamma = DC_GAMMA_TO_GAMMA(dc_gamma);
+
+ ASSERT(gamma->ref_count > 0);
--gamma->ref_count;
if (gamma->ref_count == 0)
if (gamma == NULL)
goto alloc_fail;
- dc_gamma_retain(&gamma->protected.public);
+ ++gamma->ref_count;
return &gamma->protected.public;
{
struct transfer_func *tf = DC_TRANSFER_FUNC_TO_TRANSFER_FUNC(dc_tf);
+ ASSERT(tf->ref_count > 0);
++tf->ref_count;
}
void dc_transfer_func_release(const struct dc_transfer_func *dc_tf)
{
struct transfer_func *tf = DC_TRANSFER_FUNC_TO_TRANSFER_FUNC(dc_tf);
+
+ ASSERT(tf->ref_count > 0);
--tf->ref_count;
if (tf->ref_count == 0)
if (tf == NULL)
goto alloc_fail;
- dc_transfer_func_retain(&tf->protected.public);
+ ++tf->ref_count;
return &tf->protected.public;
{
struct target *target = DC_TARGET_TO_TARGET(dc_target);
+ ASSERT(target->ref_count > 0);
target->ref_count++;
}
ASSERT(target->ref_count > 0);
target->ref_count--;
+
if (target->ref_count == 0) {
destruct(protected);
dm_free(target);
construct(&target->protected, stream->ctx, dc_streams, stream_count);
- dc_target_retain(&target->protected.public);
+ target->ref_count++;
return &target->protected.public;