static void driver_close_device( void *driver_data ) { JoystickData *data = (JoystickData*) driver_data; /* stop input thread */ direct_thread_cancel( data->thread ); direct_thread_join( data->thread ); direct_thread_destroy( data->thread ); /* close device */ close( data->fd ); /* free private data */ D_FREE( data ); }
// "fermeture" du driver *** static void driver_close_device(void *driver_data) { ZytData *data = (ZytData *)driver_data; /* stop input thread */ direct_thread_cancel (data->thread); direct_thread_join (data->thread); direct_thread_destroy (data->thread); /* close device */ tcsetattr(data->fd,TCSANOW,&saved_options); // remise en l'état de l'ancienne configuration du port close (data->fd); /* free private data */ D_FREE (data); }
/* * End thread, close device and free private data. */ static void driver_close_device( void *driver_data ) { DreamboxremoteData *data = (DreamboxremoteData*) driver_data; /* stop input thread */ direct_thread_cancel( data->thread ); direct_thread_join( data->thread ); direct_thread_destroy( data->thread ); /* close file */ close( data->fd ); /* free private data */ D_FREE ( data ); }
static void driver_close_device( void *driver_data ) { WM97xxTSData *data = (WM97xxTSData*) driver_data; /* stop input thread */ direct_thread_cancel( data->thread ); direct_thread_join( data->thread ); direct_thread_destroy( data->thread ); /* close device */ if (close( data->fd ) < 0) D_PERROR( "DirectFB/WM97xx: Error closing `/dev/touchscreen/wm97xx'!\n" ); /* free private data */ D_FREE( data ); }
static void driver_close_device(void *driver_data) { eloData *data = (eloData *)driver_data; /* stop input thread */ direct_thread_cancel(data->thread); direct_thread_join(data->thread); direct_thread_destroy(data->thread); /* restore termnial settings for the port */ tty_rawmode(data->fd,0); /* close device */ close(data->fd); /* free private data */ D_FREE(data); }
static void driver_close_device( void *driver_data ) { ucb1x00TSData *data = (ucb1x00TSData*) driver_data; /* stop input thread */ direct_thread_cancel( data->thread ); direct_thread_join( data->thread ); direct_thread_destroy( data->thread ); /* close device */ if (close( data->fd ) < 0) D_PERROR( "DirectFB/ucb1x00: Error closing `/dev/ucb1x00-ts'!\n" ); if (event_buffer) free( event_buffer ); /* free private data */ D_FREE( data ); }
DFBResult dfb_vt_shutdown( bool emergency ) { const char cursoron_str[] = "\033[?0;0;0c"; const char blankon_str[] = "\033[9;10]"; D_DEBUG_AT( VT, "%s()\n", __FUNCTION__ ); if (!dfb_vt) return DFB_OK; if (dfb_config->vt_switching) { if (ioctl( dfb_vt->fd, VT_SETMODE, &dfb_vt->vt_mode ) < 0) D_PERROR( "DirectFB/fbdev/vt: Unable to restore VT mode!!!\n" ); sigaction( SIG_SWITCH_FROM, &dfb_vt->sig_usr1, NULL ); sigaction( SIG_SWITCH_TO, &dfb_vt->sig_usr2, NULL ); direct_thread_cancel( dfb_vt->thread ); direct_thread_join( dfb_vt->thread ); direct_thread_destroy( dfb_vt->thread ); pthread_mutex_destroy( &dfb_vt->lock ); pthread_cond_destroy( &dfb_vt->wait ); } if (dfb_config->kd_graphics) { if (ioctl( dfb_vt->fd, KDSETMODE, KD_TEXT ) < 0) D_PERROR( "DirectFB/Keyboard: KD_TEXT failed!\n" ); } else { write( dfb_vt->fd, blankon_str, sizeof(blankon_str) ); } write( dfb_vt->fd, cursoron_str, sizeof(cursoron_str) ); if (dfb_config->vt_switch) { D_DEBUG_AT( VT, " -> switching back...\n" ); if (ioctl( dfb_vt->fd0, VT_ACTIVATE, dfb_vt->prev ) < 0) D_PERROR( "DirectFB/core/vt: VT_ACTIVATE" ); if (ioctl( dfb_vt->fd0, VT_WAITACTIVE, dfb_vt->prev ) < 0) D_PERROR( "DirectFB/core/vt: VT_WAITACTIVE" ); D_DEBUG_AT( VT, " -> switched back...\n" ); usleep( 40000 ); /* restore con2fbmap */ vt_set_fb( dfb_vt->num, dfb_vt->old_fb ); if (close( dfb_vt->fd ) < 0) D_PERROR( "DirectFB/core/vt: Unable to " "close file descriptor of allocated VT!\n" ); if (ioctl( dfb_vt->fd0, VT_DISALLOCATE, dfb_vt->num ) < 0) D_PERROR( "DirectFB/core/vt: Unable to disallocate VT!\n" ); } else { /* restore con2fbmap */ vt_set_fb( dfb_vt->num, dfb_vt->old_fb ); if (close( dfb_vt->fd ) < 0) D_PERROR( "DirectFB/core/vt: Unable to " "close file descriptor of current VT!\n" ); } if (close( dfb_vt->fd0 ) < 0) D_PERROR( "DirectFB/core/vt: Unable to " "close file descriptor of tty0!\n" ); D_FREE( dfb_vt ); dfb_vt = dfb_fbdev->vt = NULL; return DFB_OK; }