summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLauro Moura <lauromoura@expertisesolutions.com.br>2018-09-05 14:07:28 -0300
committerVitor Sousa <vitorsousa@expertisesolutions.com.br>2018-09-05 14:19:39 -0300
commit5e107aa19dc944e38624a0fa5a61a54db7f8035c (patch)
tree7c9dc15e71bf5268c4d7edda5bbd71ad03e967fb /src
parent1e52108644becc9972c2101046cece23eb3268f9 (diff)
efl-csharp: Make sure efl_finalize overrides are callable
Summary: efl_finalize override is called inside efl_add_end. Previously by this time the constructor still hadn't saved the C# wrapper handle into the Eo instance private data, to be recovered in the static delegates that call the C# overrides. This commit just changes the order to save the C# handle *before* calling efl_add_end. Test Plan: added unit test to be run with make check Reviewers: felipealmeida, vitor.sousa, Jaehyun_Cho Reviewed By: vitor.sousa Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D6956
Diffstat (limited to 'src')
-rw-r--r--src/bin/eolian_mono/eolian/mono/klass.hh2
-rw-r--r--src/tests/efl_mono/Eo.cs20
2 files changed, 21 insertions, 1 deletions
diff --git a/src/bin/eolian_mono/eolian/mono/klass.hh b/src/bin/eolian_mono/eolian/mono/klass.hh
index 7b632da64d..4eea1e852f 100644
--- a/src/bin/eolian_mono/eolian/mono/klass.hh
+++ b/src/bin/eolian_mono/eolian/mono/klass.hh
@@ -316,8 +316,8 @@ struct klass
316 << scope_tab << scope_tab << "if (init_cb != null) {\n" 316 << scope_tab << scope_tab << "if (init_cb != null) {\n"
317 << scope_tab << scope_tab << scope_tab << "init_cb(this);\n" 317 << scope_tab << scope_tab << scope_tab << "init_cb(this);\n"
318 << scope_tab << scope_tab << "}\n" 318 << scope_tab << scope_tab << "}\n"
319 << scope_tab << scope_tab << "handle = efl.eo.Globals.instantiate_end(handle);\n"
320 << scope_tab << scope_tab << "efl.eo.Globals.data_set(this);\n" 319 << scope_tab << scope_tab << "efl.eo.Globals.data_set(this);\n"
320 << scope_tab << scope_tab << "handle = efl.eo.Globals.instantiate_end(handle);\n"
321 << scope_tab << scope_tab << "eina.Error.RaiseIfOccurred();\n" 321 << scope_tab << scope_tab << "eina.Error.RaiseIfOccurred();\n"
322 << scope_tab << "}\n" 322 << scope_tab << "}\n"
323 << scope_tab << "///<summary>Destructor.</summary>\n" 323 << scope_tab << "///<summary>Destructor.</summary>\n"
diff --git a/src/tests/efl_mono/Eo.cs b/src/tests/efl_mono/Eo.cs
index 997876b52f..5b88f57464 100644
--- a/src/tests/efl_mono/Eo.cs
+++ b/src/tests/efl_mono/Eo.cs
@@ -246,4 +246,24 @@ class TestEoAccessors
246 } 246 }
247} 247}
248 248
249class TestEoFinalize
250{
251 public sealed class Inherit : efl.ObjectInherit
252 {
253 public bool finalizeCalled = false;
254 public override efl.IObject FinalizeAdd()
255 {
256 finalizeCalled = true;
257 return this;
258 }
259 }
260
261
262 public static void finalize_call()
263 {
264 Inherit inherit = new Inherit();
265 Test.Assert(inherit.finalizeCalled);
266 }
267}
268
249} 269}