1
0
Files
irix-657m-src/eoe/cmd/mediad/Device.C
2022-09-29 17:59:04 +03:00

89 lines
1.4 KiB
C

#include "Device.H"
#include <assert.h>
#include <stddef.h>
#include "Config.H"
#include "CallBack.H"
#include "DeviceInfo.H"
#include "Event.H"
#include "strplus.H"
Enumerable::Set Device::devices;
Device::Device(const DeviceInfo& info)
: Enumerable(devices),
_dso(info.dso()),
_address(info.address()),
_inv_record(info.inventory()),
_name(NULL),
_is_ignored(false),
_is_shared(false),
_config(new Config(config_proc, this))
{
_is_shared = _config->device_is_shared(_address);
}
Device::~Device()
{
delete _config;
delete [] _name;
}
Device *
Device::at(const DeviceAddress& addr)
{
for (Device *p = first(); p; p = p->next())
if (p->_address == addr)
break;
return p;
}
int
Device::suspend_monitoring()
{
return 0; // Always successful.
}
int
Device::resume_monitoring()
{
return 0; // Always successful.
}
bool
Device::has_audio_data()
{
return false;
}
void
Device::set_name(const char *new_name)
{
assert(new_name != NULL);
delete [] _name;
_name = strdupplus(new_name);
}
void
Device::set_shared(bool value)
{
bool was_shared = _is_shared;
_is_shared = value;
if (_is_shared != was_shared)
CallBack::activate(Event(Event::Config, NULL, NULL));
}
void
Device::set_ignored(bool value)
{
_is_ignored = value;
}
void
Device::config_proc(Config& config, void *closure)
{
Device *device = (Device *) closure;
device->set_shared(config.device_is_shared(device->address()));
}