Usage of GObjectUnref 42/184542/2
authorLukasz Wlazly <l.wlazly@partner.samsung.com>
Wed, 18 Jul 2018 13:16:02 +0000 (15:16 +0200)
committerLukasz Wlazly <l.wlazly@partner.samsung.com>
Thu, 19 Jul 2018 11:17:09 +0000 (13:17 +0200)
Change-Id: I6349888133e348f4f99049494396332ff4048761

src/Atspi.cpp
src/NavigationInterface.cpp
src/utils.hpp

index 9670e1c..e73b7c8 100644 (file)
@@ -125,7 +125,7 @@ AtspiAccessiblePtr Atspi::getBase(const AtspiAccessiblePtr &obj) const
        static void convert(std::shared_ptr<Atspi ## TYPE> &r,                                                \
                                                const AtspiAccessiblePtr &obj)                                                    \
        {                                                                                                     \
-               r =  { ATSPI_ ## NAME(g_object_ref(obj.get())), g_object_unref };                                 \
+               r =  { ATSPI_ ## NAME(g_object_ref(obj.get())), utils::GObjectUnref() };                                 \
        }                                                                                                     \
        void Atspi::get ## TYPE ## Interface(const AtspiAccessiblePtr &obj,                                   \
                                                                                 AsyncCallback<std::shared_ptr<Atspi ## TYPE>> callback) const    \
@@ -138,7 +138,7 @@ AtspiAccessiblePtr Atspi::getBase(const AtspiAccessiblePtr &obj) const
                auto interface = atspi_accessible_get_ ## type ## _iface(accessibleObj.get());                    \
                if (!interface)                                                                                   \
                        DEBUG("Object %p do not has " #type " interface", accessibleObj.get());                       \
-               return {interface, g_object_unref};                                                               \
+               return {interface, utils::GObjectUnref()};                                                               \
        }                                                                                                     \
        std::string Atspi::getUniqueId(const std::shared_ptr<Atspi ## TYPE> &obj)                             \
        {                                                                                                     \
@@ -156,7 +156,7 @@ AtspiAccessiblePtr Atspi::getBase(const AtspiAccessiblePtr &obj) const
                        const std::shared_ptr<Atspi ## TYPE> &obj) const                                              \
        {                                                                                                     \
                if (!obj) return {};                                                                              \
-               return { ATSPI_ACCESSIBLE(g_object_ref(obj.get())), g_object_unref };                             \
+               return { ATSPI_ACCESSIBLE(g_object_ref(obj.get())), utils::GObjectUnref() };                             \
        }
 
 ADD_INTROSPECTION_FUNCTIONS(Action, action, ACTION);
@@ -380,7 +380,7 @@ AtspiAccessiblePtr Atspi::getObjectInRelation(const AtspiAccessiblePtr &accessib
        }
        g_array_free(relations, TRUE);
 
-       return {relationObj, g_object_unref};
+       return {relationObj, utils::GObjectUnref()};
 }
 
 template <typename T> DBusClient Atspi::getProxy(const std::shared_ptr<T> &obj, const std::string &interface) const
@@ -1201,7 +1201,7 @@ AtspiAccessiblePtr Atspi::getDesktop() const
 {
        auto res = atspi_get_desktop(0);
        ASSERT(res);
-       return {res, g_object_unref};
+       return {res, utils::GObjectUnref()};
 }
 
 AtspiAccessiblePtr Atspi::getAtPoint(Point pt, CoordType type, AtspiAccessiblePtr root) const
@@ -1233,7 +1233,7 @@ AtspiAccessiblePtr Atspi::getAtPoint(Point pt, CoordType type, AtspiAccessiblePt
                        GError *error = nullptr;
                        auto res = atspi_component_get_accessible_at_point(compo, pt.x, pt.y, ctype, &error);
                        PRINT_ERROR_AND_FREE(error);
-                       return AtspiAccessiblePtr{res, g_object_unref};
+                       return AtspiAccessiblePtr{res, utils::GObjectUnref()};
                };
 
                auto desktop = getDesktop();
@@ -1260,7 +1260,7 @@ AtspiAccessiblePtr Atspi::getAtPoint(Point pt, CoordType type, AtspiAccessiblePt
        GError *error = nullptr;
        auto res = atspi_accessible_get_navigable_at_point(root.get(), pt.x, pt.y, ctype, &error);
        PRINT_ERROR_AND_FREE(error);
-       return {res, g_object_unref};
+       return {res, utils::GObjectUnref()};
 }
 
 Optional<size_t> Atspi::getChildrenCount(const AtspiAccessiblePtr &accessibleObj) const
@@ -1279,7 +1279,7 @@ AtspiAccessiblePtr Atspi::getChildAtIndex(const AtspiAccessiblePtr &accessibleOb
        GError *error = nullptr;
        auto res = atspi_accessible_get_child_at_index(accessibleObj.get(), (gint)index, &error);
        PRINT_ERROR_AND_FREE(error);
-       return {res, g_object_unref};
+       return {res, utils::GObjectUnref()};
 }
 
 Optional<std::vector<AtspiAccessiblePtr>> Atspi::getChildren(const AtspiAccessiblePtr &accessibleObj) const
@@ -1302,12 +1302,12 @@ AtspiAccessiblePtr Atspi::make(AtspiAccessible *obj, bool increase_reference)
        if (!obj) return {};
        if (increase_reference)
                g_object_ref(obj);
-       return { obj, g_object_unref };
+       return { obj, utils::GObjectUnref() };
 }
 
 AtspiAccessiblePtr Atspi::make(const std::string &bus, const std::string &path)
 {
-       return { ref_accessible(bus.c_str(), path.c_str()), g_object_unref };
+       return { ref_accessible(bus.c_str(), path.c_str()), utils::GObjectUnref() };
 }
 
 AtspiAccessiblePtr Atspi::getParent(const AtspiAccessiblePtr &accessibleObj) const
@@ -1317,7 +1317,7 @@ AtspiAccessiblePtr Atspi::getParent(const AtspiAccessiblePtr &accessibleObj) con
        auto v = atspi_accessible_get_parent(accessibleObj.get(), &error);
        PRINT_ERROR_AND_FREE(error);
        if (!v) return {};
-       return {v, g_object_unref};
+       return {v, utils::GObjectUnref()};
 }
 
 Optional<size_t> Atspi::getIndexInParent(const AtspiAccessiblePtr &accessibleObj) const
index a572916..960a733 100644 (file)
@@ -124,13 +124,7 @@ private:
        ecore::Timer rebuildContextTimer;
        std::shared_ptr<AtspiAccessible> rootObject, keyboardRootObject;
 
-       struct GObjectUnref {
-               template <typename T> void operator()(T *t)
-               {
-                       if (t) g_object_unref(t);
-               }
-       };
-       std::unique_ptr<AtspiEventListener, GObjectUnref> eventListener;
+       std::unique_ptr<AtspiEventListener, utils::GObjectUnref> eventListener;
 
        static Optional<unsigned int> getFocusProcessPid()
        {
index 5883b34..ca53b6b 100644 (file)
@@ -82,6 +82,13 @@ namespace utils
         * Empty Optional object means given argument werent passed.
         */
        std::array<Optional<std::string>, (size_t)Argument::_count> parseArguments(int argc, char **argv);
+
+       struct GObjectUnref {
+               template <typename T> void operator()(T *t) const
+               {
+                       if (t) g_object_unref(t);
+               }
+       };
 }
 
 #endif