Commit 9279a242 authored by Peng Huang's avatar Peng Huang Committed by Commit Bot

ARC: fix the arc video playback with --mus

With recent changes, --mus has a separate viz process wich is launched by
browser process via GpuPorcessHost. So we should use GpuProcessHost to
request ARC related interfaces in Viz.

Bug: 793901
Change-Id: Idd27f95fcf962b54634876024d0da4600da3f3aa
Reviewed-on: https://chromium-review.googlesource.com/820151Reviewed-by: default avatarYusuke Sato <yusukes@chromium.org>
Reviewed-by: default avatarSadrul Chowdhury <sadrul@chromium.org>
Commit-Queue: Peng Huang <penghuang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#523338}
parent cce71934
......@@ -11,7 +11,6 @@
#include "base/logging.h"
#include "base/memory/singleton.h"
#include "base/threading/thread_checker.h"
#include "chrome/browser/chromeos/ash_config.h"
#include "components/arc/arc_bridge_service.h"
#include "components/arc/arc_browser_context_keyed_service_factory_base.h"
#include "components/arc/common/video_decode_accelerator.mojom.h"
......@@ -24,6 +23,7 @@
#include "services/service_manager/public/cpp/connector.h"
#include "services/ui/public/interfaces/arc.mojom.h"
#include "services/ui/public/interfaces/constants.mojom.h"
#include "ui/base/ui_base_switches_util.h"
namespace arc {
......@@ -50,9 +50,7 @@ class GpuArcVideoServiceHostFactory
class VideoAcceleratorFactoryService : public mojom::VideoAcceleratorFactory {
public:
VideoAcceleratorFactoryService() {
DCHECK_EQ(chromeos::GetAshConfig(), ash::Config::CLASSIC);
}
VideoAcceleratorFactoryService() { DCHECK(!switches::IsMusHostingViz()); }
~VideoAcceleratorFactoryService() override = default;
......@@ -87,18 +85,18 @@ class VideoAcceleratorFactoryService : public mojom::VideoAcceleratorFactory {
DISALLOW_COPY_AND_ASSIGN(VideoAcceleratorFactoryService);
};
class VideoAcceleratorFactoryServiceMus
class VideoAcceleratorFactoryServiceViz
: public mojom::VideoAcceleratorFactory {
public:
VideoAcceleratorFactoryServiceMus() {
DCHECK_NE(chromeos::GetAshConfig(), ash::Config::CLASSIC);
VideoAcceleratorFactoryServiceViz() {
DCHECK(switches::IsMusHostingViz());
DETACH_FROM_THREAD(thread_checker_);
auto* connector =
content::ServiceManagerConnection::GetForProcess()->GetConnector();
connector->BindInterface(ui::mojom::kServiceName, &arc_);
}
~VideoAcceleratorFactoryServiceMus() override {
~VideoAcceleratorFactoryServiceViz() override {
DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
}
......@@ -125,14 +123,14 @@ class VideoAcceleratorFactoryServiceMus
ui::mojom::ArcPtr arc_;
DISALLOW_COPY_AND_ASSIGN(VideoAcceleratorFactoryServiceMus);
DISALLOW_COPY_AND_ASSIGN(VideoAcceleratorFactoryServiceViz);
};
std::unique_ptr<mojom::VideoAcceleratorFactory>
CreateVideoAcceleratorFactory() {
if (chromeos::GetAshConfig() == ash::Config::CLASSIC)
return std::make_unique<VideoAcceleratorFactoryService>();
return std::make_unique<VideoAcceleratorFactoryServiceMus>();
if (switches::IsMusHostingViz())
return std::make_unique<VideoAcceleratorFactoryServiceViz>();
return std::make_unique<VideoAcceleratorFactoryService>();
}
} // namespace
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment