goto fail;
/* copy existing configuration */
- new_ctx = dm_alloc(sizeof(*new_ctx));
+ new_ctx = dc_create_state();
if (!new_ctx)
goto fail;
- atomic_inc(&new_ctx->ref_count);
-
dc_resource_validate_ctx_copy_construct_current(dc, new_ctx);
state->context = new_ctx;
goto fail;
}
- dc->current_context = dm_alloc(sizeof(*dc->current_context));
+ dc->current_context = dc_create_state();
if (!dc->current_context) {
dm_error("%s: failed to create validate ctx\n", __func__);
goto fail;
}
- atomic_inc(&dc->current_context->ref_count);
-
dc_ctx->cgs_device = init_params->cgs_device;
dc_ctx->driver_context = init_params->driver;
dc_ctx->dc = dc;
return true;
}
+struct validate_context *dc_create_state(void)
+{
+ struct validate_context *context = dm_alloc(sizeof(struct validate_context));
+
+ if (!context)
+ return NULL;
+
+ atomic_inc(&context->ref_count);
+ return context;
+}
+
void dc_retain_validate_context(struct validate_context *context)
{
ASSERT(atomic_read(&context->ref_count) > 0);
new_planes[i] = srf_updates[i].surface;
/* initialize scratch memory for building context */
- context = dm_alloc(sizeof(*context));
+ context = dc_create_state();
if (context == NULL)
goto context_alloc_fail;
- atomic_inc(&context->ref_count);
-
dc_resource_validate_ctx_copy_construct(
core_dc->current_context, context);
const struct dc_stream_status *stream_status);
+struct validate_context *dc_create_state(void);
void dc_retain_validate_context(struct validate_context *context);
void dc_release_validate_context(struct validate_context *context);