Changeset 819:dbc032ac4849 in roaraudio for libroaryiff
- Timestamp:
- 09/18/08 20:13:11 (16 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libroaryiff/audiocd.c
r806 r819 26 26 27 27 struct { 28 int fh;29 int stream;30 char * device;31 } _g_roaryiff_cdrom = { -1, -1, NULL};28 int is_open; 29 int is_playing; 30 struct roar_cdrom cdrom[1]; 31 } _g_roaryiff_cdrom = {0, 0, {}}; 32 32 33 33 int YEjectAudioCD(YConnection *con) { … … 38 38 int YPlayAudioCDTrack(YConnection *con, int track_number) { 39 39 struct roar_connection rcon; 40 int flags;41 40 42 41 if ( con == NULL ) … … 45 44 rcon.fh = con->fd; 46 45 47 48 if ( _g_roaryiff_cdrom.fh == -1 ) { 49 // ok, we need to open the cdrom device 50 if ( _g_roaryiff_cdrom.device == NULL ) { 51 _g_roaryiff_cdrom.device = roar_cdromdevice(); 52 if ( _g_roaryiff_cdrom.device == NULL ) 53 return -1; 54 } 55 if ( (_g_roaryiff_cdrom.fh = open(_g_roaryiff_cdrom.device, O_RDONLY, 0644)) == -1 ) 46 if ( ! _g_roaryiff_cdrom.is_open ) { 47 if ( roar_cdrom_open(&rcon, _g_roaryiff_cdrom.cdrom, NULL) == -1 ) 56 48 return -1; 57 58 if ( (flags = fcntl(_g_roaryiff_cdrom.fh, F_GETFL, 0)) == -1 ) {59 close(_g_roaryiff_cdrom.fh);60 _g_roaryiff_cdrom.fh = -1;61 return -1;62 }63 64 flags |= FD_CLOEXEC;65 66 if ( fcntl(_g_roaryiff_cdrom.fh, F_SETFL, flags) == -1 ) {67 close(_g_roaryiff_cdrom.fh);68 _g_roaryiff_cdrom.fh = -1;69 return -1;70 }71 49 } 72 50 73 return -1;51 return roar_cdrom_play(_g_roaryiff_cdrom.cdrom, track_number); 74 52 } 75 53 … … 82 60 rcon.fh = con->fd; 83 61 84 if ( _g_roaryiff_cdrom.fh != -1 ) { 85 close(_g_roaryiff_cdrom.fh); 62 if ( _g_roaryiff_cdrom.is_playing ) { 63 roar_cdrom_stop(_g_roaryiff_cdrom.cdrom); 64 _g_roaryiff_cdrom.is_playing = 0; 86 65 } 87 66 88 if ( _g_roaryiff_cdrom.stream != -1 ) { 89 roar_kick(&rcon, ROAR_OT_STREAM, _g_roaryiff_cdrom.stream); 67 if ( _g_roaryiff_cdrom.is_open ) { 68 roar_cdrom_close(_g_roaryiff_cdrom.cdrom); 69 _g_roaryiff_cdrom.is_open = 0; 90 70 } 91 71
Note: See TracChangeset
for help on using the changeset viewer.