]> code.delx.au - pulseaudio/blobdiff - polyp/mainloop-api.c
Make the whole stuff LGPL only
[pulseaudio] / polyp / mainloop-api.c
index 8b4e09ac51976876667caf8379e05e2741319240..7b80e4fe14a50c02b02b245a961c1bbc031d92a8 100644 (file)
@@ -4,17 +4,17 @@
   This file is part of polypaudio.
  
   polypaudio is free software; you can redistribute it and/or modify
-  it under the terms of the GNU General Public License as published
-  by the Free Software Foundation; either version 2 of the License,
-  or (at your option) any later version.
+  it under the terms of the GNU Lesser General Public License as
+  published by the Free Software Foundation; either version 2.1 of the
+  License, or (at your option) any later version.
  
   polypaudio 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
-  General Public License for more details.
+  Lesser General Public License for more details.
  
-  You should have received a copy of the GNU General Public License
-  along with polypaudio; if not, write to the Free Software
+  You should have received a copy of the GNU Lesser General Public
+  License along with polypaudio; if not, write to the Free Software
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
   USA.
 ***/
 #include "xmalloc.h"
 
 struct once_info {
-    void (*callback)(void *userdata);
+    void (*callback)(struct pa_mainloop_api*m, void *userdata);
     void *userdata;
 };
 
-static void once_callback(struct pa_mainloop_api *api, void *id, void *userdata) {
+static void once_callback(struct pa_mainloop_api *m, struct pa_defer_event *e, void *userdata) {
     struct once_info *i = userdata;
-    assert(api && i && i->callback);
-    i->callback(i->userdata);
-    assert(api->cancel_fixed);
-    api->cancel_fixed(api, id);
+    assert(m && i && i->callback);
+
+    i->callback(m, i->userdata);
+
+    assert(m->defer_free);
+    m->defer_free(e);
+}
+
+static void free_callback(struct pa_mainloop_api *m, struct pa_defer_event *e, void *userdata) {
+    struct once_info *i = userdata;
+    assert(m && i);
     pa_xfree(i);
 }
 
-void pa_mainloop_api_once(struct pa_mainloop_api* api, void (*callback)(void *userdata), void *userdata) {
+void pa_mainloop_api_once(struct pa_mainloop_api* m, void (*callback)(struct pa_mainloop_api *m, void *userdata), void *userdata) {
     struct once_info *i;
-    void *id;
-    assert(api && callback);
+    struct pa_defer_event *e;
+    assert(m && callback);
 
     i = pa_xmalloc(sizeof(struct once_info));
     i->callback = callback;
     i->userdata = userdata;
 
-    assert(api->source_fixed);
-    id = api->source_fixed(api, once_callback, i);
-    assert(id);
-
-    /* Note: if the mainloop is destroyed before once_callback() was called, some memory is leaked. */
+    assert(m->defer_new);
+    e = m->defer_new(m, once_callback, i);
+    assert(e);
+    m->defer_set_destroy(e, free_callback);
 }