CV_IMPL void cvDestroyWindow( const char* name ) { CV_FUNCNAME( "cvDestroyWindow" ); __BEGIN__; CvWindow* window; if(!name) CV_ERROR( CV_StsNullPtr, "NULL name string" ); window = icvFindWindowByName( name ); if( !window ) EXIT; // note that it is possible for the update thread to run this function // if there is a call to cvShowImage in a mouse callback // (this would produce a deadlock on window_mutex) CV_LOCK_MUTEX(); icvDeleteWindow( window ); CV_UNLOCK_MUTEX(); __END__; }
CV_IMPL void cvDestroyAllWindows( void ) { while( hg_windows ) { CvWindow* window = hg_windows; icvDeleteWindow( window ); } }
static gboolean icvOnClose( GtkWidget* widget, GdkEvent* /*event*/, gpointer user_data ) { CvWindow* window = (CvWindow*)user_data; if( window->signature == CV_WINDOW_MAGIC_VAL && window->frame == widget ) { icvDeleteWindow(window); } return TRUE; }
CV_IMPL void cvDestroyAllWindows( void ) { CV_LOCK_MUTEX(); while( hg_windows ) { CvWindow* window = hg_windows; icvDeleteWindow( window ); } CV_UNLOCK_MUTEX(); }
CV_IMPL void cvDestroyWindow( const char* name) { CV_FUNCNAME( "cvDestroyWindow" ); __BEGIN__; CvWindow* window; if(!name) CV_ERROR( CV_StsNullPtr, "NULL name string" ); window = icvFindWindowByName( name ); if( !window ) EXIT; icvDeleteWindow( window ); __END__; }