@@ -45,30 +45,23 @@ static void later_task_callback_wrapper(void* data);
4545enum class RAdbcAsyncTaskStatus { NOT_STARTED , STARTED , READY };
4646
4747struct RAdbcAsyncTask {
48- RAdbcAsyncTask () : callback_sexp(R_NilValue), callback_data_sexp(R_NilValue) {}
48+ RAdbcAsyncTask () : callback_data_sexp(R_NilValue) {}
4949
50- void SetCallback (SEXP callback, SEXP data, int loop_id) {
51- if (callback_sexp != R_NilValue) {
52- return ;
53- }
54-
55- callback_sexp = callback;
50+ void SetCallback (SEXP data, int loop_id) {
5651 callback_data_sexp = data;
5752 later_loop_id = loop_id;
5853 later_ensure_initialized ();
5954 }
6055
6156 void ScheduleCallbackIfSet () {
62- if (callback_sexp != R_NilValue) {
57+ if (callback_data_sexp != R_NilValue) {
6358 later_execLaterNative2 (&later_task_callback_wrapper, this , 0 , later_loop_id);
64- callback_sexp = R_NilValue;
6559 }
6660 }
6761
6862 AdbcError* return_error{nullptr };
6963 int * return_code{nullptr };
7064
71- SEXP callback_sexp;
7265 SEXP callback_data_sexp;
7366 int later_loop_id{-1 };
7467
@@ -79,9 +72,8 @@ struct RAdbcAsyncTask {
7972static void later_task_callback_wrapper (void * data) {
8073 auto task = reinterpret_cast <RAdbcAsyncTask*>(data);
8174
82- SEXP func_sym = PROTECT (Rf_install (" adbc_async_run_callback" ));
83- SEXP func_call =
84- PROTECT (Rf_lang3 (func_sym, task->callback_sexp , task->callback_data_sexp ));
75+ SEXP func_sym = PROTECT (Rf_install (" adbc_async_task_run_callback" ));
76+ SEXP func_call = PROTECT (Rf_lang2 (func_sym, task->callback_data_sexp ));
8577 SEXP pkg_chr = PROTECT (Rf_mkString (" adbcdrivermanager" ));
8678 SEXP pkg_ns = PROTECT (R_FindNamespace (pkg_chr));
8779 Rf_eval (func_call, pkg_ns);
@@ -140,7 +132,7 @@ extern "C" SEXP RAdbcAsyncTaskSetCallback(SEXP task_xptr, SEXP callback_sexp,
140132 int loop_id = adbc_as_int (loop_id_sexp);
141133
142134 SET_VECTOR_ELT (task_prot, 3 , callback_sexp);
143- task->SetCallback (callback_sexp, task_xptr, loop_id);
135+ task->SetCallback (task_xptr, loop_id);
144136 return R_NilValue;
145137}
146138
0 commit comments