void search_complete(sp_search * search, Callback * st) { PyObject *res, *results; PyGILState_STATE gstate; gstate = PyGILState_Ensure(); results = Results_FromSpotify(search); res = PyObject_CallFunctionObjArgs(st->callback, results, st->userdata, NULL); if (!res) PyErr_WriteUnraisable(st->callback); delete_trampoline(st); Py_XDECREF(res); Py_DECREF(results); PyGILState_Release(gstate); }
void Session_search_complete(sp_search *search, void *data) { Callback *trampoline = (Callback *)data; debug_printf(">> search complete (%p, %p)", search, trampoline); if (trampoline == NULL) return; PyObject *result, *search_results; PyGILState_STATE gstate = PyGILState_Ensure(); search_results = Results_FromSpotify(search, 1 /* add_ref */); result = PyObject_CallFunction(trampoline->callback, "NO", search_results, trampoline->userdata); if (result != NULL) Py_DECREF(result); else PyErr_WriteUnraisable(trampoline->callback); delete_trampoline(trampoline); PyGILState_Release(gstate); }