Changeset 5335:dba934a2d1e0 in roaraudio
- Timestamp:
- 12/09/11 18:13:39 (12 years ago)
- Branch:
- default
- Phase:
- public
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
include/libroar/roardl.h
r5327 r5335 98 98 } 99 99 100 // general stuff: 100 101 #define ROAR_DL_PLUGIN_ABORT_LOADING(err) roar_err_set((err)); return NULL 101 102 #define ROAR_DL_PLUGIN_CHECK_VERSIONS(app,abi) if ( roar_dl_para_check_version(para, (app), (abi)) == -1 ) return NULL 103 104 // register stuff: 102 105 #define ROAR_DL_PLUGIN_REG(fn, funcptr) (lib.func[(fn)] = (funcptr)) 103 106 #define ROAR_DL_PLUGIN_REG_UNLOAD(func) (lib.unload = (func)) … … 106 109 lib.global_data_init = &(init); \ 107 110 lib.global_data_pointer = (void*)&(ptr) 111 112 // meta data stuff: 113 #define ROAR_DL_PLUGIN_META_PRODUCT(x) (libname.libname = (x)) 114 #define ROAR_DL_PLUGIN_META_PRODUCT_NV(name,vendor) ROAR_DL_PLUGIN_META_PRODUCT(name " <" vendor ">") 115 #define ROAR_DL_PLUGIN_META_PRODUCT_NIV(name,id,vendor) ROAR_DL_PLUGIN_META_PRODUCT(name " <" #id "/" vendor ">") 116 #define ROAR_DL_PLUGIN_META_VERSION(x) (libname.libversion = (x)) 117 #define ROAR_DL_PLUGIN_META_ABI(x) (libname.abiversion = (x)) 118 #define ROAR_DL_PLUGIN_META_DESC(x) (libname.description = (x)) 119 #define ROAR_DL_PLUGIN_META_CONTACT(x) (libname.contact = (x)) 120 #define ROAR_DL_PLUGIN_META_CONTACT_FL(first,last) ROAR_DL_PLUGIN_META_CONTACT(first " " last) 121 #define ROAR_DL_PLUGIN_META_CONTACT_FLE(first,last,email) ROAR_DL_PLUGIN_META_CONTACT(first " " last " <" email ">") 122 #define ROAR_DL_PLUGIN_META_CONTACT_FLNE(first,last,nick,email) ROAR_DL_PLUGIN_META_CONTACT(first " \"" nick "\" " last " <" email ">") 123 #define ROAR_DL_PLUGIN_META_AUTHORS(x) (libname.authors = (x)) 124 #define ROAR_DL_PLUGIN_META_LICENSE(x) (libname.license = (x)) 125 #define ROAR_DL_PLUGIN_META_LICENSE_TAG(x) ROAR_DL_PLUGIN_META_LICENSE(ROAR_LICENSE_ ## x) 108 126 109 127 enum roar_dl_loadercmd { … … 116 134 ROAR_DL_LOADER_POSTUNLOAD 117 135 }; 136 137 struct roar_plugincontainer; 118 138 119 139 struct roar_dl_librarypara { … … 147 167 // Examples: libroar2, 0.5.1 148 168 struct roar_notify_core * notifycore; 149 int (*loader)(struct roar_dl_librarypara * lhandle, enum roar_dl_loadercmd cmd, void * argp); 169 struct roar_plugincontainer * container; 170 int (*loader)(struct roar_dl_librarypara * lhandle, void * loader_userdata, enum roar_dl_loadercmd cmd, void * argp); 171 void * loader_userdata; 150 172 }; 151 173 … … 169 191 int version; 170 192 size_t len; 193 uint32_t flags; 171 194 const char * name; 172 195 const char * libname; … … 192 215 int (*free) (struct roar_dl_librarypara * para); 193 216 int (*update)(struct roar_dl_librarypara * para); 217 int (*tick) (struct roar_dl_librarypara * para); 218 int (*wait) (struct roar_dl_librarypara * para); 194 219 }; 195 220 … … 199 224 ROAR_DL_APPSCHED_FREE, 200 225 #define ROAR_DL_APPSCHED_FREE ROAR_DL_APPSCHED_FREE 201 ROAR_DL_APPSCHED_UPDATE 226 ROAR_DL_APPSCHED_UPDATE, 202 227 #define ROAR_DL_APPSCHED_UPDATE ROAR_DL_APPSCHED_UPDATE 228 ROAR_DL_APPSCHED_TICK, 229 #define ROAR_DL_APPSCHED_TICK ROAR_DL_APPSCHED_TICK 230 ROAR_DL_APPSCHED_WAIT 231 #define ROAR_DL_APPSCHED_WAIT ROAR_DL_APPSCHED_WAIT 203 232 }; 204 233 -
libroar/roardl.c
r5321 r5335 538 538 539 539 int roar_dl_appsched_trigger(struct roar_dl_lhandle * lhandle, enum roar_dl_appsched_trigger trigger) { 540 int (*func) (struct roar_dl_librarypara * para) = NULL; 540 541 int ret; 541 542 … … 553 554 #define _trig(lname,uname) \ 554 555 case ROAR_DL_APPSCHED_ ## uname : \ 555 if ( lhandle->lib->appsched->lname == NULL ) { \ 556 roar_err_set(ROAR_ERROR_NOENT); \ 557 return -1; \ 558 } \ 559 roar_dl_context_restore(lhandle); \ 560 ret = lhandle->lib->appsched->lname(lhandle->para); \ 561 roar_dl_context_store(lhandle); \ 562 return ret; \ 556 func = lhandle->lib->appsched->lname; \ 563 557 break; 564 558 _trig(init, INIT); 565 559 _trig(free, FREE); 566 560 _trig(update, UPDATE); 567 } 568 569 roar_err_set(ROAR_ERROR_BADRQC); 570 return -1; 561 _trig(tick, TICK); 562 _trig(wait, WAIT); 563 // use ifndef here so warnings of unhandled enum values will be shown in DEBUG mode. 564 #ifndef DEBUG 565 default: 566 roar_err_set(ROAR_ERROR_BADRQC); 567 return -1; 568 break; 569 #endif 570 } 571 572 if ( func == NULL ) { 573 roar_err_set(ROAR_ERROR_NOENT); 574 return -1; 575 } 576 577 roar_dl_context_restore(lhandle); 578 ret = func(lhandle->para); 579 roar_dl_context_store(lhandle); 580 return ret; 571 581 } 572 582 -
plugins/universal/plugin-info.c
r5318 r5335 1 // discard.c:1 //plugin-info.c: 2 2 3 3 /* … … 109 109 .init = init, 110 110 .free = NULL, 111 .update = NULL 111 .update = NULL, 112 .tick = NULL, 113 .wait = NULL 112 114 }; 113 115 114 ROAR_DL_PLUGIN_START(roard_plugin_info) { 115 // ROARD_DL_CHECK_VERSIONS(); 116 117 libname.license = "GPL-3.0"; 116 ROAR_DL_PLUGIN_START(plugin_info) { 117 ROAR_DL_PLUGIN_META_PRODUCT("plugin-info <0/RoarAudio>"); 118 ROAR_DL_PLUGIN_META_PRODUCT_NIV("plugin-info", 0, "RoarAudio"); 119 ROAR_DL_PLUGIN_META_VERSION(ROAR_VERSION_STRING); 120 ROAR_DL_PLUGIN_META_DESC("Display information about the plugin context"); 121 ROAR_DL_PLUGIN_META_CONTACT_FLNE("Philipp", "Schafft", "ph3-der-loewe", "lion@lion.leolix.org"); 122 ROAR_DL_PLUGIN_META_LICENSE_TAG(GPLv3_0); 118 123 119 124 ROAR_DL_PLUGIN_REG_GLOBAL_DATA(global_data, global_data_init);
Note: See TracChangeset
for help on using the changeset viewer.