Changeset 1df3018a in mainline for uspace/srv/audio/hound/audio_sink.c


Ignore:
Timestamp:
2012-07-13T03:24:17Z (12 years ago)
Author:
Jan Vesely <jano.vesely@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
d93a5a6f
Parents:
d01e635
Message:

hound: Only few more TODOs left

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/audio/hound/audio_sink.c

    rd01e635 r1df3018a  
    4343#include "log.h"
    4444
    45 #if 0
    46 static int loop(void* arg)
    47 {
    48         audio_sink_t *sink = arg;
    49         assert(sink);
    50         while (sink->device) {
    51                 while (sink->running) {
    52                         //wait for usable buffer
    53                         audio_sink_mix_inputs(sink,
    54                             sink->device->buffer.available_base,
    55                             sink->device->buffer.available_size);
    56                 }
    57                 //remove ready
    58                 sleep(1);
    59         }
    60         return 0;
    61 }
    62 #endif
    6345
    64 
    65 int audio_sink_init(audio_sink_t *sink, const char* name)
     46int audio_sink_init(audio_sink_t *sink, const char *name,
     47    void *private_data,int (*connection_change)(audio_sink_t *sink),
     48    const audio_format_t *f)
    6649{
    6750        assert(sink);
     
    7356        list_initialize(&sink->sources);
    7457        sink->name = str_dup(name);
    75         sink->format = AUDIO_FORMAT_ANY;
    76         log_verbose("Initialized sink (%p) '%s' with ANY audio format",
    77             sink, sink->name);
     58        sink->private_data = private_data;
     59        sink->format = *f;
     60        log_verbose("Initialized sink (%p) '%s'", sink, sink->name);
    7861        return EOK;
    7962}
     63
     64void audio_sink_fini(audio_sink_t *sink)
     65{
     66        assert(sink);
     67        assert(!sink->private_data);
     68        free(sink->name);
     69        sink->name = NULL;
     70}
     71
    8072
    8173int audio_sink_add_source(audio_sink_t *sink, audio_source_t *source)
     
    111103        }
    112104
    113         if (sink->connected_change.hook) {
    114                 const int ret =
    115                     sink->connected_change.hook(sink->connected_change.arg);
     105        if (sink->connection_change) {
     106                const int ret = sink->connection_change(sink);
    116107                if (ret != EOK) {
    117                         log_debug("Connected hook failed.");
     108                        log_debug("Connection hook failed.");
    118109                        list_remove(&source->link);
    119110                        sink->format = old_format;
     
    131122        assert(list_member(&source->link, &sink->sources));
    132123        list_remove(&source->link);
    133         if (sink->connected_change.hook) {
    134                 const int ret =
    135                     sink->connected_change.hook(sink->connected_change.arg);
     124        if (sink->connection_change) {
     125                const int ret = sink->connection_change(sink);
    136126                if (ret != EOK) {
    137127                        log_debug("Connected hook failed.");
     128                        list_append(&source->link, &sink->sources);
     129                        return ret;
    138130                }
    139131        }
Note: See TracChangeset for help on using the changeset viewer.