| Index: media/ozone/media_ozone_platform.cc
|
| diff --git a/media/ozone/media_ozone_platform.cc b/media/ozone/media_ozone_platform.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..804de37580271e92849dc0be7796512e23ea7a31
|
| --- /dev/null
|
| +++ b/media/ozone/media_ozone_platform.cc
|
| @@ -0,0 +1,93 @@
|
| +// Copyright 2014 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 "media/ozone/media_ozone_platform.h"
|
| +
|
| +#include "base/debug/trace_event.h"
|
| +#include "base/logging.h"
|
| +#include "ui/ozone/platform_object.h"
|
| +#include "ui/ozone/platform_selection.h"
|
| +
|
| +namespace media {
|
| +
|
| +namespace {
|
| +
|
| +class MediaOzonePlatformStub : public MediaOzonePlatform {
|
| + public:
|
| + MediaOzonePlatformStub() {}
|
| +
|
| + virtual ~MediaOzonePlatformStub() {}
|
| +
|
| + private:
|
| + DISALLOW_COPY_AND_ASSIGN(MediaOzonePlatformStub);
|
| +};
|
| +
|
| +} // namespace
|
| +
|
| +// The following statics are just convenient stubs, declared by the
|
| +// generate_constructor_list.py script. They should be removed once the
|
| +// internal Ozone platforms decide to actually implement their media specifics.
|
| +MediaOzonePlatform* CreateMediaOzonePlatformCaca() {
|
| + return new MediaOzonePlatformStub;
|
| +}
|
| +
|
| +MediaOzonePlatform* CreateMediaOzonePlatformDri() {
|
| + return new MediaOzonePlatformStub;
|
| +}
|
| +
|
| +MediaOzonePlatform* CreateMediaOzonePlatformEgltest() {
|
| + return new MediaOzonePlatformStub;
|
| +}
|
| +
|
| +MediaOzonePlatform* CreateMediaOzonePlatformGbm() {
|
| + return new MediaOzonePlatformStub;
|
| +}
|
| +
|
| +MediaOzonePlatform* CreateMediaOzonePlatformTest() {
|
| + return new MediaOzonePlatformStub;
|
| +}
|
| +
|
| +MediaOzonePlatform::MediaOzonePlatform() {
|
| + CHECK(!instance_) << "There should only be a single MediaOzonePlatform.";
|
| + instance_ = this;
|
| +}
|
| +
|
| +MediaOzonePlatform::~MediaOzonePlatform() {
|
| + CHECK_EQ(instance_, this);
|
| + instance_ = NULL;
|
| +}
|
| +
|
| +// static
|
| +MediaOzonePlatform* MediaOzonePlatform::GetInstance() {
|
| + if (!instance_)
|
| + CreateInstance();
|
| + return instance_;
|
| +}
|
| +
|
| +VideoDecodeAccelerator* MediaOzonePlatform::CreateVideoDecodeAccelerator(
|
| + const base::Callback<bool(void)>& make_context_current) {
|
| + NOTIMPLEMENTED();
|
| + return NULL;
|
| +}
|
| +
|
| +// static
|
| +void MediaOzonePlatform::CreateInstance() {
|
| + if (instance_)
|
| + return;
|
| +
|
| + TRACE_EVENT1("ozone",
|
| + "MediaOzonePlatform::Initialize",
|
| + "platform",
|
| + ui::GetOzonePlatformName());
|
| + scoped_ptr<MediaOzonePlatform> platform =
|
| + ui::PlatformObject<MediaOzonePlatform>::Create();
|
| +
|
| + // TODO(spang): Currently need to leak this object.
|
| + CHECK_EQ(instance_, platform.release());
|
| +}
|
| +
|
| +// static
|
| +MediaOzonePlatform* MediaOzonePlatform::instance_;
|
| +
|
| +} // namespace media
|
|
|