#ifndef EFL_OBJECT_MANUAL_IMPL_HH
#define EFL_OBJECT_MANUAL_IMPL_HH
-#define EFL_OBJECT_BETA
-#define EFL_OBJECT_PROTECTED
-
// Skip del. Must be implemented in eo::concrete.
#define EOLIAN_CXX_EFL_DEL_DECLARATION
#define EOLIAN_CXX_EFL_DEL_IMPLEMENTATION
__VA_ARGS__; \
if (!no_del_cb) efl_del_intercept_set(proxy, _ ## type ## _del_cb); \
efl_allow_parent_unref_set(proxy, 1); \
- efl_auto_unref_set(proxy, 1); \
+ ___efl_auto_unref_set(proxy, 1); \
return proxy; \
}
#endif
// auto_unref
-#define EFL_OBJECT_BETA
-#define EFL_OBJECT_PROTECTED
#define EDJE_OBJECT_BETA
#define EFL_CANVAS_OBJECT_PROTECTED
#define EFL_CANVAS_LAYOUT_CALC_PROTECTED
inline ::efl::Object Part::part(::efl::eina::string_view const& name) const \
{ \
::Eo *handle = ::efl_part(_eo_ptr(), name.c_str()); \
- ::efl_auto_unref_set(handle, false); \
+ ::___efl_auto_unref_set(handle, false); \
return ::efl::Object{handle}; \
}
#define EFL_CANVAS_OBJECT_PROTECTED
#define EFL_CANVAS_GROUP_PROTECTED
#define EFL_CANVAS_GROUP_BETA
-#define EFL_OBJECT_BETA
-#define EFL_OBJECT_PROTECTED
#define EFL_ACCESS_BETA
#define EFL_ACCESS_COMPONENT_BETA
#define EFL_ACCESS_EDITABLE_TEXT_BETA
#ifndef _ELM_PART_HELPER_H
#define _ELM_PART_HELPER_H
-#define EFL_OBJECT_BETA
-#define EFL_OBJECT_PROTECTED
-
#include "Elementary.h"
#include "elm_priv.h"
#include "efl_ui_layout_part_legacy.eo.h"
EINA_SAFETY_ON_FALSE_RETURN_VAL(pd && obj && part, NULL);
efl_allow_parent_unref_set(proxy, 1);
- efl_auto_unref_set(proxy, 1);
+ ___efl_auto_unref_set(proxy, 1);
pd->part = eina_tmpstr_add(part);
pd->obj = obj;
/* Private for EFL internal use only. Do not use these! */
EAPI int ___efl_ref2_count(const Eo *obj_id);
EAPI void ___efl_ref2_reset(const Eo *obj_id);
+EAPI void ___efl_auto_unref_set(Eo *obj_id, Eina_Bool val);
#endif
even if @.parent is not $null.]]
}
}
- @property auto_unref @protected @beta {
- [[Mark an object to be automatically deleted after a function call.
-
- This becomes effectives only after finalize is done. After any EO
- function has been called on this object, it will be unref'ed. This
- property will also be reset to $false. This is intended to simplify
- Part objects lifecycle.
-
- Note: This applies to any EO function call, even if the object was
- of the wrong type (call resolution failed).
-
- This is a write-only property as reading it would unref the object,
- and reset the flag.
-
- Warning: This is a beta API, do not use it unless you know exactly
- what you are doing.
- ]]
- set {}
- values {
- enable: bool(false);
- [[If $true, unref this object after the next call.]]
- }
- }
}
implements {
class.constructor;
# include <mach/mach_time.h>
#endif
-#define EFL_OBJECT_BETA
-#define EFL_OBJECT_PROTECTED
-
#include "Eo.h"
#include "eo_ptr_indirection.h"
#include "eo_private.h"
#include <Eina.h>
#include <fnmatch.h>
-#define EFL_OBJECT_BETA
-#define EFL_OBJECT_PROTECTED
-
#include "Eo.h"
#include "eo_ptr_indirection.h"
#include "eo_private.h"
return pd->allow_parent_unref;
}
-EOLIAN static void
-_efl_object_auto_unref_set(Eo *obj_id EINA_UNUSED, Efl_Object_Data *pd EINA_UNUSED, Eina_Bool enable)
+EAPI void
+___efl_auto_unref_set(Eo *obj_id, Eina_Bool enable)
{
// Write-only property
EO_OBJ_POINTER(obj_id, obj);
- obj->auto_unref = enable ? 2 : 0;
+ obj->auto_unref = enable ? 1 : 0;
}
EOLIAN static Eo *
Eina_Bool del_triggered:1;
Eina_Bool destructed:1;
Eina_Bool manual_free:1;
- unsigned char auto_unref : 2; // unref after 1 call
+ unsigned char auto_unref : 1; // unref after 1 call - hack for parts
};
/* How we search and store the implementations in classes. */
if(!as_generator(string << ">::type "<< string << "::" << string << "() const\n{\n"
<< scope_tab << "::Eo *__return_value = ::efl_part"
<< "(this->_eo_ptr(), \"" << string << "\");\n"
- << scope_tab << "::efl_auto_unref_set(__return_value, false);\n")
+ << scope_tab << "::___efl_auto_unref_set(__return_value, false);\n")
.generate(sink, std::make_tuple(part.klass.eolian_name, klass_name, part.name, part.name), ctx))
return false;
if(!as_generator(scope_tab << "return ::" << *(string << "::"))
# include <unistd.h>
#endif
-#define EFL_OBJECT_BETA
-#define EFL_OBJECT_PROTECTED
-
#include <Eo.h>
#include "eo_suite.h"
obj = efl_add(SIMPLE_CLASS, NULL);
fail_if(efl_ref_count(obj) != 1);
efl_event_callback_add(obj, EFL_EVENT_DEL, _auto_unref_del_cb, &_auto_unref_del);
- efl_auto_unref_set(obj, 1);
+ ___efl_auto_unref_set(obj, 1);
fail_if(_auto_unref_del);
fail_if(efl_ref_count(obj) != 1);
efl_name_set(obj, "name");
obj = efl_add(SIMPLE_CLASS, NULL);
fail_if(efl_ref_count(obj) != 1);
efl_event_callback_add(obj, EFL_EVENT_DEL, _auto_unref_del_cb, &_auto_unref_del);
- efl_auto_unref_set(obj, 1);
+ ___efl_auto_unref_set(obj, 1);
fail_if(_auto_unref_del);
fail_if(efl_ref_count(obj) != 1);
simple_no_implementation(obj);
fail_if(efl_ref_count(obj) != 1);
efl_allow_parent_unref_set(obj, 1);
efl_event_callback_add(obj, EFL_EVENT_DEL, _auto_unref_del_cb, &_auto_unref_del);
- efl_auto_unref_set(obj, 1);
+ ___efl_auto_unref_set(obj, 1);
fail_if(_auto_unref_del);
fail_if(efl_ref_count(obj) != 1);
efl_name_set(obj, "name");