// Copyright (c) 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 "content/common/gpu/null_transport_surface.h" #include "base/command_line.h" #include "content/common/gpu/gpu_channel.h" #include "content/common/gpu/gpu_channel_manager.h" #include "content/common/gpu/gpu_command_buffer_stub.h" #include "content/public/common/content_switches.h" #include "gpu/command_buffer/service/context_group.h" namespace content { NullTransportSurface::NullTransportSurface( GpuChannelManager* manager, GpuCommandBufferStub* stub, const gfx::GLSurfaceHandle& handle) : PassThroughImageTransportSurface(manager, stub, manager->GetDefaultOffscreenSurface()), parent_client_id_(handle.parent_client_id) { } NullTransportSurface::~NullTransportSurface() { } bool NullTransportSurface::Initialize() { if (!surface()) return false; if (!PassThroughImageTransportSurface::Initialize()) return false; GpuChannel* parent_channel = GetHelper()->manager()->LookupChannel(parent_client_id_); if (parent_channel) { const base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); if (command_line->HasSwitch(switches::kUIPrioritizeInGpuProcess)) GetHelper()->SetPreemptByFlag(parent_channel->GetPreemptionFlag()); } return true; } void NullTransportSurface::Destroy() { // Do not destroy |surface_| since we use the shared offscreen surface. } bool NullTransportSurface::SwapBuffers() { NOTIMPLEMENTED(); return false; } bool NullTransportSurface::PostSubBuffer( int x, int y, int width, int height) { NOTIMPLEMENTED(); return false; } void NullTransportSurface::SendVSyncUpdateIfAvailable() { NOTREACHED(); } bool NullTransportSurface::OnMakeCurrent(gfx::GLContext* context) { // Override PassThroughImageTransportSurface default behavior which // sets the swap interval. return true; } } // namespace content