efl: Hold event (EO API) should implement instance_get

This fixes the following ERR:

ERR<23969>:eo /home/jpeg/e/core/efl/src/lib/eo/eo.c:462
  _eo_call_resolve() in ../src/lib/efl/interfaces/efl_event.eo.c:5:
  func 'efl_event_instance_get' (1479) could not be resolved for class 'Efl_Event_Hold'.
This commit is contained in:
Jean-Philippe Andre 2016-07-19 15:29:56 +09:00
parent ac10a00acc
commit 0e6b6c4828
2 changed files with 36 additions and 0 deletions

View File

@ -2,6 +2,8 @@
# include <config.h>
#endif
#define EFL_EVENT_PROTECTED
#include <Evas.h>
#define EFL_INTERNAL_UNSTABLE
@ -53,4 +55,35 @@ _efl_event_hold_eo_base_constructor(Eo *obj, Efl_Event_Hold_Data *pd)
return obj;
}
EOLIAN static Efl_Event *
_efl_event_hold_efl_event_instance_get(Eo *klass EINA_UNUSED, void *_pd EINA_UNUSED,
Eo_Base *owner, void **priv)
{
// TODO: Implement a cache. Depends only on how many hold events we trigger.
Efl_Event *evt = eo_add(MY_CLASS, owner);
if (priv) *priv = eo_data_scope_get(evt, MY_CLASS);
return evt;
}
EOLIAN static void
_efl_event_hold_efl_event_reset(Eo *obj, Efl_Event_Hold_Data *pd)
{
memset(pd, 0, sizeof(*pd));
pd->eo = obj;
}
EOLIAN static Efl_Event *
_efl_event_hold_efl_event_dup(Eo *obj, Efl_Event_Hold_Data *pd)
{
Efl_Event_Hold_Data *ev;
Efl_Event *evt = eo_add(EFL_EVENT_HOLD_CLASS, eo_parent_get(obj));
ev = eo_data_scope_get(evt, MY_CLASS);
if (ev)
{
memcpy(ev, pd, sizeof(*ev));
ev->eo = evt;
}
return evt;
}
#include "efl_event_hold.eo.c"

View File

@ -18,6 +18,9 @@ class Efl.Event.Hold (Eo.Base, Efl.Event.Input)
}
implements {
Eo.Base.constructor;
Efl.Event.instance_get;
Efl.Event.reset;
Efl.Event.dup;
Efl.Event.timestamp.get;
Efl.Event.timestamp.set;
}