summaryrefslogtreecommitdiff
path: root/src/lib/evas/canvas/evas_out.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/evas/canvas/evas_out.c')
-rw-r--r--src/lib/evas/canvas/evas_out.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/lib/evas/canvas/evas_out.c b/src/lib/evas/canvas/evas_out.c
index 48bd5df..567ea58 100644
--- a/src/lib/evas/canvas/evas_out.c
+++ b/src/lib/evas/canvas/evas_out.c
@@ -38,11 +38,22 @@ efl_canvas_output_add(Evas *canvas)
38 38
39 // The engine is already initialized, use it 39 // The engine is already initialized, use it
40 // right away to setup the info structure 40 // right away to setup the info structure
41 if (e->engine.func->output_info) 41 if (e->engine.func->info_size)
42 { 42 {
43 r->info = e->engine.func->output_info(); 43 r->info = calloc(1, e->engine.func->info_size);
44 if (!r->info) goto on_error;
45 r->info->magic = rand();
46 r->info_magic = r->info->magic;
47
48 if (e->engine.func->output_info_setup)
49 e->engine.func->output_info_setup(r->info);
50 }
51 else
52 {
53 CRI("Engine not up to date no info size provided.");
44 } 54 }
45 55
56 on_error:
46 return r; 57 return r;
47} 58}
48 59
@@ -62,7 +73,8 @@ efl_canvas_output_del(Efl_Canvas_Output *output)
62 output->ector); 73 output->ector);
63 e->engine.func->output_free(_evas_engine_context(e), 74 e->engine.func->output_free(_evas_engine_context(e),
64 output->output); 75 output->output);
65 e->engine.func->output_info_free(output->info); 76 free(output->info);
77 output->info = NULL;
66 } 78 }
67 e->outputs = eina_list_remove(e->outputs, output); 79 e->outputs = eina_list_remove(e->outputs, output);
68 80