@@ -394,26 +394,46 @@ FieldlineAcqSystem::FieldlineAcqSystem(Fieldline* parent)
394
394
// register "this" into somewhere findable by python's execution flow.
395
395
acq_system = this ;
396
396
initSampleArrays ();
397
- // Py_DECREF(argsSetDataParser);
398
- // Py_DECREF(setCloseLoop);
399
- // Py_DECREF(trueTuple);
400
- // Py_DECREF(pResult2);
401
- //
402
- // Py_DECREF(FieldlineModule);
403
- // Py_DECREF(fService);
404
- // Py_DECREF(ipList);
405
- // Py_DECREF(fServiceInstance);
406
- // Py_DECREF(openMethod);
407
- // Py_DECREF(pResult);
408
- //
397
+
398
+ Py_DECREF (parseCallbacksModule);
399
+ Py_DECREF (FieldlineModule);
400
+ Py_DECREF (fService );
401
+ Py_DECREF (ipList);
402
+ Py_DECREF (fServiceInstance );
403
+ Py_DECREF (openMethod);
404
+ Py_DECREF (pResult);
405
+ Py_DECREF (setCloseLoop);
406
+ Py_DECREF (trueTuple);
407
+ Py_DECREF (pResult2);
408
+ Py_DECREF (loadSensors);
409
+ Py_DECREF (restartAllSensors);
410
+ Py_DECREF (callback_on_finished);
411
+ Py_DECREF (callback_on_error);
412
+ Py_DECREF (callback_on_completion);
413
+ Py_DECREF (argsRestart);
414
+ Py_DECREF (resultRestart);
415
+ Py_DECREF (readDataFcn);
416
+ Py_DECREF (parserCallback);
417
+ Py_DECREF (argsSetDataParser);
418
+ Py_DECREF (result33);
419
+
409
420
m_pThreadState = (void *)PyEval_SaveThread ();
410
421
}
411
422
412
423
FieldlineAcqSystem::~FieldlineAcqSystem ()
413
424
{
414
425
PyEval_RestoreThread (reinterpret_cast <PyThreadState*>(m_pThreadState));
415
- Py_DECREF (m_pCallbackModule);
416
- Py_DECREF (m_pCallsModule);
426
+
427
+ Py_XDECREF (m_pCallbackModule);
428
+ Py_XDECREF (m_pCallsModule);
429
+
430
+ if (m_samplesBlock) {
431
+ delete[] m_samplesBlock;
432
+ }
433
+ if (m_samplesBlock2) {
434
+ delete[] m_samplesBlock2;
435
+ }
436
+
417
437
Py_Finalize ();
418
438
}
419
439
@@ -473,6 +493,10 @@ void FieldlineAcqSystem::startADC() {
473
493
printLog (" startResult ok" );
474
494
}
475
495
496
+ Py_DECREF (argsStartData);
497
+ Py_DECREF (zeroArg);
498
+ Py_DECREF (startResult);
499
+
476
500
PyGILState_Release (gstate);
477
501
}
478
502
@@ -492,6 +516,10 @@ void FieldlineAcqSystem::stopADC() {
492
516
printLog (" stopResult ok" );
493
517
}
494
518
519
+ Py_DECREF (argsstopData);
520
+ Py_DECREF (stopArg);
521
+ Py_DECREF (stopResult);
522
+
495
523
PyGILState_Release (gstate);
496
524
}
497
525
@@ -506,6 +534,8 @@ void* FieldlineAcqSystem::loadModule(const char* moduleName)
506
534
PyErr_Print ();
507
535
}
508
536
537
+ Py_DECREF (pModule);
538
+
509
539
PyGILState_Release (gstate);
510
540
511
541
return (void *)pModule;
@@ -519,16 +549,14 @@ void* FieldlineAcqSystem::loadCModule(const char* moduleName, void*(*moduleInitF
519
549
if (Py_IsInitialized ())
520
550
{
521
551
PyImport_AddModule (moduleName);
522
- PyObject* pyModule = (PyObject*)moduleInitFunc ();
552
+ PyObject* PyModule = (PyObject*)moduleInitFunc ();
523
553
PyObject* sys_modules = PyImport_GetModuleDict ();
524
- PyDict_SetItemString (sys_modules, moduleName, pyModule );
525
- Py_DECREF (pyModule );
554
+ PyDict_SetItemString (sys_modules, moduleName, PyModule );
555
+ Py_DECREF (PyModule );
526
556
} else {
527
557
PyImport_AppendInittab (moduleName, (PyObject*(*)(void )) moduleInitFunc);
528
558
}
529
-
530
559
PyGILState_Release (gstate);
531
-
532
560
return loadModule (moduleName);
533
561
}
534
562
@@ -540,7 +568,7 @@ void FieldlineAcqSystem::callFunctionAsync(const char* moduleName, const char* f
540
568
t.detach ();
541
569
}
542
570
543
- void FieldlineAcqSystem::callFunction (const std::string moduleName, const std::string funcName)
571
+ void FieldlineAcqSystem::callFunction (const std::string& moduleName, const std::string& funcName)
544
572
{
545
573
PyGILState_STATE gstate;
546
574
gstate = PyGILState_Ensure ();
@@ -553,27 +581,25 @@ void FieldlineAcqSystem::callFunction(const std::string moduleName, const std::s
553
581
if (pModule == NULL ) {
554
582
PyErr_Print ();
555
583
printLog (std::string (" Import failed. Can't find " ).append (moduleName).append (" ." ).c_str ());
584
+ printLog (" Check the Path." );
556
585
}
557
586
}
558
587
559
588
PyObject* pFunc = PyObject_GetAttrString (pModule, funcName.c_str ());
560
589
if (pFunc == NULL ) {
561
590
printLog (std::string (" Error finding function: " ).append (funcName).c_str ());
562
591
PyErr_Print ();
563
- Py_DECREF (pModule);
564
592
}
565
593
566
594
PyObject* pResult = PyObject_CallObject (pFunc, NULL );
567
595
if (pResult == NULL ) {
568
596
printLog (std::string (" Error calling function: " ).append (funcName).c_str ());
569
597
PyErr_Print ();
570
- Py_DECREF (pModule);
571
- Py_DECREF (pFunc);
572
598
}
573
599
574
- Py_DECREF (pModule);
575
- Py_DECREF (pFunc);
576
- Py_DECREF (pResult);
600
+ Py_XDECREF (pModule);
601
+ Py_XDECREF (pFunc);
602
+ Py_XDECREF (pResult);
577
603
578
604
PyGILState_Release (gstate);
579
605
}
0 commit comments