diff --git a/libs/net/grl-net-wc.h b/libs/net/grl-net-wc.h index 00866bd1a9ad1eb4182da1033518505feb7aa919..e8da7079ade59266a3d29e1c52709b46648378f6 100644 --- a/libs/net/grl-net-wc.h +++ b/libs/net/grl-net-wc.h @@ -86,6 +86,8 @@ typedef struct _GrlNetWc GrlNetWc; typedef struct _GrlNetWcClass GrlNetWcClass; typedef struct _GrlNetWcPrivate GrlNetWcPrivate; +G_DEFINE_AUTOPTR_CLEANUP_FUNC (GrlNetWc, g_object_unref) + /** * GrlNetWc: * @parent: the parent object struct diff --git a/src/data/grl-data.h b/src/data/grl-data.h index be61b56c02292823b8f60d1080fc21c2ecab75b4..ae95d99240f2f3c4243ff3a76964f8c6a8896d49 100644 --- a/src/data/grl-data.h +++ b/src/data/grl-data.h @@ -66,6 +66,8 @@ typedef struct _GrlData GrlData; typedef struct _GrlDataClass GrlDataClass; typedef struct _GrlDataPrivate GrlDataPrivate; +G_DEFINE_AUTOPTR_CLEANUP_FUNC (GrlData, g_object_unref) + struct _GrlData { GObject parent; diff --git a/src/data/grl-media.h b/src/data/grl-media.h index 1ce46537affd3b21ff72f93482369588b76512eb..8392e415a123e07b699179bf87a0ad82311c3f41 100644 --- a/src/data/grl-media.h +++ b/src/data/grl-media.h @@ -81,6 +81,8 @@ typedef struct _GrlMedia GrlMedia; typedef struct _GrlMediaPrivate GrlMediaPrivate; typedef struct _GrlMediaClass GrlMediaClass; +G_DEFINE_AUTOPTR_CLEANUP_FUNC (GrlMedia, g_object_unref) + struct _GrlMedia { GrlData parent; diff --git a/src/data/grl-related-keys.h b/src/data/grl-related-keys.h index 5fb200a913a3e7a64936aa46b5cc18e7f49e81f7..c370bb64477fd3d7223d9696bf8811760a43eb39 100644 --- a/src/data/grl-related-keys.h +++ b/src/data/grl-related-keys.h @@ -65,6 +65,8 @@ typedef struct _GrlRelatedKeys GrlRelatedKeys; typedef struct _GrlRelatedKeysPrivate GrlRelatedKeysPrivate; typedef struct _GrlRelatedKeysClass GrlRelatedKeysClass; +G_DEFINE_AUTOPTR_CLEANUP_FUNC (GrlRelatedKeys, g_object_unref) + struct _GrlRelatedKeys { GObject parent; diff --git a/src/grl-caps.h b/src/grl-caps.h index 8dbdbdc182870da69cfbd214d24a1b076ed14bad..87db7db2c441aba479a43f9041a2ac380ea2e067 100644 --- a/src/grl-caps.h +++ b/src/grl-caps.h @@ -57,6 +57,8 @@ typedef struct { gpointer _grl_reserved[GRL_PADDING]; } GrlCapsClass; +G_DEFINE_AUTOPTR_CLEANUP_FUNC (GrlCaps, g_object_unref) + #define GRL_TYPE_CAPS (grl_caps_get_type ()) #define GRL_CAPS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GRL_TYPE_CAPS, GrlCaps)) #define GRL_CAPS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GRL_TYPE_CAPS, GrlCapsClass)) diff --git a/src/grl-operation-options.h b/src/grl-operation-options.h index 5e4ef60b6941e67d1828973d2db1bbb559e37d2f..a6c3ee996582c7522c66ae573eea29936d380ef0 100644 --- a/src/grl-operation-options.h +++ b/src/grl-operation-options.h @@ -56,6 +56,8 @@ typedef struct { gpointer _grl_reserved[GRL_PADDING]; } GrlOperationOptionsClass; +G_DEFINE_AUTOPTR_CLEANUP_FUNC (GrlOperationOptions, g_object_unref) + #define GRL_TYPE_OPERATION_OPTIONS (grl_operation_options_get_type ()) #define GRL_OPERATION_OPTIONS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GRL_TYPE_OPERATION_OPTIONS, GrlOperationOptions)) #define GRL_OPERATION_OPTIONS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GRL_TYPE_OPERATION_OPTIONS, GrlOperationOptionsClass)) diff --git a/src/grl-plugin.h b/src/grl-plugin.h index 5273d6e6a25961e2798dd974290f9308e6ca17e6..ee81bcd65623c6b1cc0e76b4bcf843d5dfe48e15 100644 --- a/src/grl-plugin.h +++ b/src/grl-plugin.h @@ -75,6 +75,8 @@ typedef struct _GrlPlugin GrlPlugin; typedef struct _GrlPluginPrivate GrlPluginPrivate; +G_DEFINE_AUTOPTR_CLEANUP_FUNC (GrlPlugin, g_object_unref) + struct _GrlPlugin { GObject parent; diff --git a/tests/Makefile.am b/tests/Makefile.am index 01f01b3d81bb6ab5893b58e73486216f3b8c3465..4df8cbc6b43496e0d65bcdf0db6aa71a3157f4a7 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -20,6 +20,10 @@ TEST_PROGS = registry registry_SOURCES = registry.c registry_LDADD = $(progs_ldadd) +TEST_PROGS += autoptr +autoptr_SOURCES = autoptr.c +autoptr_LDADD = $(progs_ldadd) + if BUILD_GRILO_NET TEST_PROGS += lib-net lib_net_SOURCES = lib-net.c diff --git a/tests/autoptr.c b/tests/autoptr.c new file mode 100644 index 0000000000000000000000000000000000000000..faef432a69063e891f02e9387c8283bd26797dcc --- /dev/null +++ b/tests/autoptr.c @@ -0,0 +1,101 @@ +/* + * Copyright (C) 2018 Yi-Soo An + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; version 2.1 of + * the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA + * + */ + +/* + * This code is based on glib/tests/autoptr.c + */ + +#include + +#include +#include + +static void +test_grl_net_wc (void) +{ + g_autoptr (GrlNetWc) val = grl_net_wc_new (); + g_assert_nonnull (val); +} + +static void +test_grl_data (void) +{ + g_autoptr (GrlData) val = grl_data_new (); + g_assert_nonnull (val); +} + +static void +test_grl_related_keys (void) +{ + g_autoptr (GrlRelatedKeys) val = grl_related_keys_new (); + g_assert_nonnull (val); +} + +static void +test_grl_media (void) +{ + g_autoptr (GrlMedia) val = grl_media_new (); + g_assert_nonnull (val); +} + +static void +test_grl_caps (void) +{ + g_autoptr (GrlCaps) val = grl_caps_new (); + g_assert_nonnull (val); +} + +static void +test_grl_operation_options (void) +{ + g_autoptr (GrlOperationOptions) val = grl_operation_options_new (NULL); + g_assert_nonnull (val); +} + +static void +test_grl_plugin (void) +{ + g_autoptr (GrlPlugin) val = NULL; + + val = GRL_PLUGIN (g_object_new (GRL_TYPE_PLUGIN, NULL)); + + g_assert_nonnull (val); +} + +int +main (int argc, + char *argv[]) +{ + g_test_init (&argc, &argv, NULL); + + grl_init (&argc, &argv); + + g_test_add_func ("/autoptr/grl_net_wc", test_grl_net_wc); + + g_test_add_func ("/autoptr/grl_data", test_grl_data); + g_test_add_func ("/autoptr/grl_media", test_grl_media); + g_test_add_func ("/autoptr/grl_related_keys", test_grl_related_keys); + + g_test_add_func ("/autoptr/grl_caps", test_grl_caps); + g_test_add_func ("/autoptr/grl_operation_options", test_grl_operation_options); + g_test_add_func ("/autoptr/grl_plugin", test_grl_plugin); + + return g_test_run (); +}