blob: 8af2379c7f6a3af21f8211bde85f045dba43a06b [file] [log] [blame]
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
#include "embedders/openglui/common/sound_handler.h"
#include <string.h>
#include "embedders/openglui/common/log.h"
// TODO(gram): Clean up this instance pointer; either make the class
// a proper singleton or provide a cleaner way for the static functions
// at the end to access it (those functions are the hooks into the Dart
// native extension).
SoundHandler* instance_ = NULL;
SoundHandler::SoundHandler()
: samples_() {
instance_ = this;
}
Sample* SoundHandler::GetSample(const char* path) {
for (samples_t::iterator sp = samples_.begin();
sp != samples_.end();
++sp) {
Sample* sample = (*sp);
if (strcmp(sample->path(), path) == 0) {
LOGI("Returning cached sample %s", path);
return sample;
}
}
Sample* sample = new Sample(path);
if (sample->Load() != 0) {
LOGI("Failed to load sample %s", path);
delete sample;
return NULL;
}
samples_.push_back(sample);
LOGI("Adding sample %s to cache", path);
return sample;
}
int32_t PlayBackgroundSound(const char* path) {
return instance_->PlayBackground(path);
}
void StopBackgroundSound() {
instance_->StopBackground();
}
int32_t LoadSoundSample(const char* path) {
return instance_->LoadSample(path);
}
int32_t PlaySoundSample(const char* path) {
return instance_->PlaySample(path);
}