static void asgtk_gradient_dispose (GObject *object) { ASGtkGradient *ge = ASGTK_GRADIENT (object); if( ge->points ) destroy_asbidirlist( &(ge->points) ); if( ge->point_list_model ) { g_object_unref (ge->point_list_model); ge->point_list_model = NULL ; } G_OBJECT_CLASS (parent_class)->dispose (object); }
void DeadPipe (int nonsense) { static int already_dead = False ; if( already_dead ) return; already_dead = True ; g_signal_handlers_disconnect_by_func (AppState.volumeMonitor, G_CALLBACK (mount_added), NULL); g_signal_handlers_disconnect_by_func (AppState.volumeMonitor, G_CALLBACK (mount_changed), NULL); g_signal_handlers_disconnect_by_func (AppState.volumeMonitor, G_CALLBACK (mount_removed), NULL); g_signal_handlers_disconnect_by_func (AppState.volumeMonitor, G_CALLBACK (volume_added), NULL); g_signal_handlers_disconnect_by_func (AppState.volumeMonitor, G_CALLBACK (volume_changed), NULL); g_signal_handlers_disconnect_by_func (AppState.volumeMonitor, G_CALLBACK (volume_removed), NULL); destroy_asbidirlist ( &(AppState.volumes)); free_button_resources (AppState.buttons[0]); free_button_resources (AppState.buttons[1]); /* window_data_cleanup(); destroy_ascanvas( &PagerState.main_canvas ); destroy_ascanvas( &PagerState.icon_canvas ); if( Config ) DestroyPagerConfig (Config); */ FreeMyAppResources(); #ifdef DEBUG_ALLOCS print_unfreed_mem (); #endif /* DEBUG_ALLOCS */ XFlush (dpy); XCloseDisplay (dpy); exit (0); }
int main( int argc, char **argv ) { int i ; ASBiDirElem *curr; char *command; action_t *a; ASWinCommandState WinCommandState ; InitMyApp (CLASS_WINCOMMAND, argc, argv, NULL, NULL, OPTION_SINGLE|OPTION_RESTART ); ConnectX( ASDefaultScr, 0 ); ASBiDirList *operations = create_asbidirlist( NULL ); /* Initialize State */ memset( &WinCommandState, 0x00, sizeof(WinCommandState)); /* Traverse arguments */ for( i = 1 ; i< argc ; ++i) { if(argv[i] == NULL) continue; /* If it's a flag */ if(argv[i][0] == '-') { switch( set_WinCommandParam( &WinCommandState, argv[i], (i+1<argc)?argv[i+1]:NULL ) ) { case ASWC_BadParam : case ASWC_BadVal : fprintf( stderr, "bad parameter [%s]\n", argv[i] ); break; case ASWC_Ok_ValUsed : ++i; case ASWC_Ok_ValUnused : break ; } }else { LOCAL_DEBUG_OUT("Adding operation: %s", argv[i]); append_bidirelem(operations, argv[i]); } } if( WinCommandState.pattern == NULL) WinCommandState.pattern = mystrdup(DEFAULT_PATTERN); if( operations->count > 0 ) { ascom_init(); ascom_update_winlist(); /* execute default_handlers */ for( curr = operations->head; curr != NULL; curr = curr->next) if ( (a = get_action_by_name( (char *) curr->data)) ) a->init_defaults(&WinCommandState); /* honor flags */ if( get_flags( WinCommandState.flags, WINCOMMAND_Desk)) select_windows_on_desk(False); else if( ! get_flags( WinCommandState.flags, WINCOMMAND_AllDesks)) select_windows_on_screen(False); if ( ! select_windows_by_pattern(WinCommandState.pattern, !get_flags(WinCommandState.flags, WINCOMMAND_ActOnAll), False) ) LOCAL_DEBUG_OUT("warning: invalid pattern. Reverting to default."); /* apply operations */ for( curr = operations->head; curr != NULL; curr = curr->next) { command = (char *) curr->data; LOCAL_DEBUG_OUT("command: %s", command); if ( (a = get_action_by_name( (char *) curr->data)) ) a->exec_wrapper(&WinCommandState, (char *) curr->data); } ascom_wait(); ascom_deinit(); }else/* interactive mode */ { char *line_read = NULL ; while( (line_read = my_readline()) != NULL ) { char *ptr = line_read; char *cmd = NULL ; ptr = parse_token (ptr, &cmd); if( cmd != NULL && cmd[0] != '\0' ) { if( mystrcasecmp(cmd, "quit") == 0 ) break; if( mystrcasecmp(cmd, "set") == 0 ) { char *param = NULL ; ptr = parse_token (ptr, ¶m); while( isspace(*ptr) ) ++ptr ; switch( set_WinCommandParam( &WinCommandState, param, ptr) ) { case ASWC_BadParam : case ASWC_BadVal : printf("bad parameter [%s]\n", argv[i] ); break; case ASWC_Ok_ValUsed : case ASWC_Ok_ValUnused : #ifdef HAVE_READLINE add_history (line_read); #endif printf( "ok\n"); break ; } }else if( (a = get_action_by_name( cmd )) ) { a->init_defaults(&WinCommandState); ascom_init(); ascom_update_winlist(); if( get_flags( WinCommandState.flags, WINCOMMAND_Desk)) select_windows_on_desk(False); else if( ! get_flags( WinCommandState.flags, WINCOMMAND_AllDesks)) select_windows_on_screen(False); if ( ! select_windows_by_pattern(WinCommandState.pattern, !get_flags(WinCommandState.flags, WINCOMMAND_ActOnAll), False) ) LOCAL_DEBUG_OUT("warning: invalid pattern. Reverting to default."); a->exec_wrapper(&WinCommandState, ptr); ascom_wait(); ascom_deinit(); #ifdef HAVE_READLINE add_history (line_read); #endif printf( "ok\n"); }else { /* try to parse it as AS function */ printf( "bad command\n"); } free( cmd ) ; } free( line_read ); } printf( "\nbye bye\n" ); } destroy_asbidirlist( &operations ); return 0 ; }