Showing the changes to src/core/chuck.cpp (1 of 1 file). Show all
Unified · Split
| @@ -605,6 +605,23 @@ bool ChucK::shutdown() · 604 unmodified lines | ||
| 605 | 605 | } |
| 606 | 606 | |
| 607 | 607 | // free vm, compiler, friends |
| 608 | + // first, otf | |
| 609 | + // REFACTOR-2017 TODO: le_cb? | |
| 610 | + | |
| 611 | + // cancel otf thread | |
| 612 | +#if !defined(__PLATFORM_WIN32__) || defined(__WINDOWS_PTHREAD__) | |
| 613 | + if( m_carrier->otf_thread ) pthread_cancel( m_carrier->otf_thread ); | |
| 614 | +#else | |
| 615 | + if( m_carrier->otf_thread ) CloseHandle( m_carrier->otf_thread ); | |
| 616 | +#endif | |
| 617 | + // close otf socket | |
| 618 | + if( m_carrier->otf_socket ) ck_close( m_carrier->otf_socket ); | |
| 619 | + | |
| 620 | + // reset | |
| 621 | + m_carrier->otf_socket = NULL; | |
| 622 | + m_carrier->otf_port = 0; | |
| 623 | + m_carrier->otf_thread = 0; | |
| 624 | + | |
| 608 | 625 | // TODO: a different way to unlock? |
| 609 | 626 | // unlock all objects to delete chout, cherr |
| 610 | 627 | Chuck_VM_Object::unlock_all(); |
| @@ -612,12 +629,10 @@ bool ChucK::shutdown() · 1 unmodified line | ||
| 612 | 629 | SAFE_RELEASE( m_carrier->cherr ); |
| 613 | 630 | // relock |
| 614 | 631 | Chuck_VM_Object::lock_all(); |
| 632 | + // clean up vm, compiler | |
| 615 | 633 | SAFE_DELETE( m_carrier->vm ); |
| 616 | 634 | SAFE_DELETE( m_carrier->compiler ); |
| 617 | 635 | m_carrier->env = NULL; |
| 618 | − m_carrier->otf_socket = NULL; // TODO: properly dealloc | |
| 619 | − m_carrier->otf_port = 0; | |
| 620 | − m_carrier->otf_thread = 0; // TODO: properly dealloc | |
| 621 | 636 | |
| 622 | 637 | // flag |
| 623 | 638 | m_init = FALSE; |