Ignore:
Timestamp:
2012-07-02T12:31:08Z (12 years ago)
Author:
Jan Vesely <jano.vesely@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
2f7042e
Parents:
bd250b0f
Message:

audio: Allow client to specify buffer size.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/drv/generic/remote_audio_pcm_buffer.c

    rbd250b0f r00006e0  
    3434#include <async.h>
    3535#include <errno.h>
    36 #include <assert.h>
    3736#include <str.h>
    3837#include <as.h>
     
    8584    unsigned *id)
    8685{
    87         if (!exch || !buffer || !size)
    88                 return EINVAL;
    89         sysarg_t buffer_size, buffer_id;
    90         const int ret = async_req_1_2(exch,
     86        if (!exch || !buffer || !size || !id)
     87                return EINVAL;
     88
     89        sysarg_t buffer_size = *size, buffer_id = 0;
     90        const int ret = async_req_2_2(exch,
    9191            DEV_IFACE_ID(AUDIO_PCM_BUFFER_IFACE), IPC_M_AUDIO_PCM_GET_BUFFER,
    92             &buffer_size, &buffer_id);
     92            (sysarg_t)buffer_size, &buffer_size, &buffer_id);
    9393        if (ret == EOK) {
    9494                void *dst = NULL;
    95                 const int ret =
    96                     async_share_in_start_0_0(exch, buffer_size, &dst);
     95                // FIXME Do we need to know the flags?
     96                const int ret = async_share_in_start_0_0(exch, buffer_size, &dst);
    9797                if (ret != EOK) {
    9898                        return ret;
     
    100100                *buffer = dst;
    101101                *size = buffer_size;
    102         }
    103         if (ret == EOK && id)
    104102                *id = buffer_id;
     103        }
    105104        return ret;
    106105}
     
    219218        }
    220219        void *buffer = NULL;
    221         size_t size = 0;
     220        size_t size = DEV_IPC_GET_ARG1(*call);
    222221        unsigned id = 0;
    223222        const int ret = pcm_iface->get_buffer(fun, &buffer, &size, &id);
Note: See TracChangeset for help on using the changeset viewer.