]> code.delx.au - pulseaudio/blobdiff - src/pulsecore/object.c
remap: Change remapping function argument type from void to int16_t / float as approp...
[pulseaudio] / src / pulsecore / object.c
index 29cca0a375089787a1bf566b07c9424211113a05..bc1aaf7011b2cfd3e9bdc45649ed6012c8f8a012 100644 (file)
 #include <config.h>
 #endif
 
-#include <pulsecore/core-util.h>
-
 #include "object.h"
 
-pa_object *pa_object_new_internal(size_t size, const char *type_name, int (*check_type)(const char *type_name)) {
+const char pa_object_type_id[] = "pa_object";
+
+pa_object *pa_object_new_internal(size_t size, const char *type_id, bool (*check_type)(const char *type_id)) {
     pa_object *o;
 
     pa_assert(size > sizeof(pa_object));
-    pa_assert(type_name);
+    pa_assert(type_id);
 
     if (!check_type)
         check_type = pa_object_check_type;
 
-    pa_assert(check_type(type_name));
-    pa_assert(check_type("pa_object"));
+    pa_assert(check_type(type_id));
+    pa_assert(check_type(pa_object_type_id));
 
-    o = pa_xmalloc(size);
+    o = pa_xmalloc0(size);
     PA_REFCNT_INIT(o);
-    o->type_name = type_name;
+    o->type_id = type_id;
     o->free = pa_object_free;
     o->check_type = check_type;
 
@@ -59,15 +59,14 @@ pa_object *pa_object_ref(pa_object *o) {
 void pa_object_unref(pa_object *o) {
     pa_object_assert_ref(o);
 
-    if (PA_REFCNT_VALUE(o) == 1) {
+    if (PA_REFCNT_DEC(o) <= 0) {
         pa_assert(o->free);
         o->free(o);
-    } else
-        pa_assert_se(PA_REFCNT_DEC(o) == 0);
+    }
 }
 
-int pa_object_check_type(const char *type_name) {
-    pa_assert(type_name);
+bool pa_object_check_type(const char *type_id) {
+    pa_assert(type_id);
 
-    return pa_streq(type_name, "pa_object");
+    return type_id == pa_object_type_id;
 }