fixed casting bugs (builds now)

also fixed newline at end of file.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1240 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
shatty
2002-09-28 09:20:04 +00:00
parent ce832bb128
commit de52c54764
3 changed files with 18 additions and 11 deletions
@@ -51,17 +51,22 @@ LegacyAudioConsumer::LegacyAudioConsumer( BMediaAddOn *addon, const char *name,
mBuffer_size = 4096; mBuffer_size = 4096;
io_buf1 = malloc( 2 * ( sizeof( audio_buffer_header ) + mBuffer_size ) ); io_buf1 = static_cast<audio_buffer_header *>(
malloc( 2 * ( sizeof( audio_buffer_header ) + mBuffer_size ))
);
if ( io_buf1 == NULL ) { if ( io_buf1 == NULL ) {
close( fd ); close( fd );
return; return;
} }
io_buf2 = static_cast<char *>( io_buf1 ) + sizeof( audio_buffer_header ) + mBuffer_size; io_buf2 = reinterpret_cast<audio_buffer_header *>(
reinterpret_cast<char *>(const_cast<audio_buffer_header *>( io_buf1 ))
+ sizeof( audio_buffer_header )
+ mBuffer_size);
static_cast<audio_buffer_header *>( io_buf1 )->reserved_1 = sizeof( audio_buffer_header ) + mBuffer_size; io_buf1->reserved_1 = sizeof( audio_buffer_header ) + mBuffer_size;
static_cast<audio_buffer_header *>( io_buf2 )->reserved_1 = sizeof( audio_buffer_header ) + mBuffer_size; io_buf2->reserved_1 = sizeof( audio_buffer_header ) + mBuffer_size;
mInitStatus = B_OK; mInitStatus = B_OK;
return; return;
@@ -84,7 +89,7 @@ LegacyAudioConsumer::~LegacyAudioConsumer()
} }
if ( io_buf1 != NULL ) { if ( io_buf1 != NULL ) {
free( static_cast<void *>( io_buf1 ) ); free( static_cast<void *>(const_cast<audio_buffer_header *>(io_buf1)) );
} }
if ( fd != 0 ) { if ( fd != 0 ) {
@@ -375,16 +380,16 @@ LegacyAudioConsumer::HandleSeek( bigtime_t performance_time )
void void
LegacyAudioConsumer::HandleBuffer( BBuffer *buffer ) LegacyAudioConsumer::HandleBuffer( BBuffer *buffer )
{ {
void *buf; audio_buffer_header *buf;
//wait for free buffer //wait for free buffer
acquire_sem( mBuffer_free ); acquire_sem( mBuffer_free );
//avoid buffer currently in use //avoid buffer currently in use
buf = static_cast<void *>( ( io_buf == io_buf2 ) ? io_buf1 : io_buf2 ); buf = const_cast<audio_buffer_header *>( ( io_buf == io_buf2 ) ? io_buf1 : io_buf2 );
//prepare buffer //prepare buffer
memcpy( static_cast<char *>( buf ) + sizeof( audio_buffer_header ), buffer->Data(), buffer->SizeUsed() ); memcpy( reinterpret_cast<char *>( buf ) + sizeof( audio_buffer_header ), buffer->Data(), buffer->SizeUsed() );
//tell the io thread a new buffer is ready //tell the io thread a new buffer is ready
release_sem( mBuffer_avail ); release_sem( mBuffer_avail );
@@ -10,6 +10,8 @@
#include <media/MediaNode.h> #include <media/MediaNode.h>
#include <support/Locker.h> #include <support/Locker.h>
struct audio_buffer_header;
class LegacyAudioConsumer : class LegacyAudioConsumer :
public virtual BMediaEventLooper, public virtual BMediaEventLooper,
public virtual BBufferConsumer public virtual BBufferConsumer
@@ -106,8 +108,8 @@ class LegacyAudioConsumer :
size_t mBuffer_size; size_t mBuffer_size;
volatile void *io_buf1; volatile audio_buffer_header *io_buf1;
volatile void *io_buf2; volatile audio_buffer_header *io_buf2;
volatile void *io_buf; volatile void *io_buf;
int fd; //file descriptor for hw driver int fd; //file descriptor for hw driver
@@ -23,4 +23,4 @@ LegacyAudioProducer::LegacyAudioProducer( BMediaAddOn *addon, const char *name,
: BMediaNode( name ), BMediaEventLooper(), BBufferProducer( B_MEDIA_RAW_AUDIO ), BControllable() : BMediaNode( name ), BMediaEventLooper(), BBufferProducer( B_MEDIA_RAW_AUDIO ), BControllable()
{ {
} }
#endif #endif