1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "content/gpu/in_process_gpu_thread.h"
6
7#include "content/gpu/gpu_child_thread.h"
8#include "content/gpu/gpu_process.h"
9
10namespace content {
11
12InProcessGpuThread::InProcessGpuThread(const std::string& channel_id)
13    : base::Thread("Chrome_InProcGpuThread"),
14      channel_id_(channel_id),
15      gpu_process_(NULL) {
16}
17
18InProcessGpuThread::~InProcessGpuThread() {
19  Stop();
20}
21
22void InProcessGpuThread::Init() {
23  gpu_process_ = new GpuProcess();
24  // The process object takes ownership of the thread object, so do not
25  // save and delete the pointer.
26  gpu_process_->set_main_thread(new GpuChildThread(channel_id_));
27}
28
29void InProcessGpuThread::CleanUp() {
30  SetThreadWasQuitProperly(true);
31  delete gpu_process_;
32}
33
34base::Thread* CreateInProcessGpuThread(const std::string& channel_id) {
35  return new InProcessGpuThread(channel_id);
36}
37
38}  // namespace content
39