blob: c253586cece399b75ad2dccdf48992ac071c6eef [file] [log] [blame]
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "platform/impl/scoped_wake_lock_linux.h"
#include "platform/api/task_runner.h"
#include "platform/impl/platform_client_posix.h"
#include "util/osp_logging.h"
namespace openscreen {
int ScopedWakeLockLinux::reference_count_ = 0;
SerialDeletePtr<ScopedWakeLock> ScopedWakeLock::Create(
TaskRunner* task_runner) {
return SerialDeletePtr<ScopedWakeLock>(task_runner,
new ScopedWakeLockLinux());
}
namespace {
TaskRunner* GetTaskRunner() {
auto* const platform_client = PlatformClientPosix::GetInstance();
OSP_DCHECK(platform_client);
auto* const task_runner = platform_client->GetTaskRunner();
OSP_DCHECK(task_runner);
return task_runner;
}
} // namespace
ScopedWakeLockLinux::ScopedWakeLockLinux() : ScopedWakeLock() {
OSP_DCHECK(GetTaskRunner()->IsRunningOnTaskRunner());
if (reference_count_++ == 0) {
AcquireWakeLock();
}
}
ScopedWakeLockLinux::~ScopedWakeLockLinux() {
GetTaskRunner()->PostTask([] {
if (--reference_count_ == 0) {
ReleaseWakeLock();
}
});
}
// static
void ScopedWakeLockLinux::AcquireWakeLock() {
OSP_VLOG << "Acquired wake lock: currently a noop";
}
// static
void ScopedWakeLockLinux::ReleaseWakeLock() {
OSP_VLOG << "Released wake lock: currently a noop";
}
} // namespace openscreen