1// Copyright (c) 2012 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 "ui/gl/gl_share_group.h"
6
7#include "base/logging.h"
8#include "ui/gl/gl_context.h"
9
10namespace gfx {
11
12GLShareGroup::GLShareGroup()
13    : shared_context_(NULL)
14#if defined(OS_MACOSX)
15    , renderer_id_(-1)
16#endif
17    {
18}
19
20void GLShareGroup::AddContext(GLContext* context) {
21  contexts_.insert(context);
22}
23
24void GLShareGroup::RemoveContext(GLContext* context) {
25  contexts_.erase(context);
26  if (shared_context_ == context)
27    shared_context_ = NULL;
28}
29
30void* GLShareGroup::GetHandle() {
31  GLContext* context = GetContext();
32  if (context)
33    return context->GetHandle();
34
35  return NULL;
36}
37
38GLContext* GLShareGroup::GetContext() {
39  for (ContextSet::iterator it = contexts_.begin();
40       it != contexts_.end();
41       ++it) {
42    if ((*it)->GetHandle())
43      return *it;
44  }
45
46  return NULL;
47}
48
49void GLShareGroup::SetSharedContext(GLContext* context) {
50  DCHECK(contexts_.find(context) != contexts_.end());
51  shared_context_ = context;
52}
53
54GLContext* GLShareGroup::GetSharedContext() {
55  return shared_context_;
56}
57
58#if defined(OS_MACOSX)
59void GLShareGroup::SetRendererID(int renderer_id) {
60  renderer_id_ = renderer_id;
61}
62
63int GLShareGroup::GetRendererID() {
64  return renderer_id_;
65}
66#endif
67
68GLShareGroup::~GLShareGroup() {
69}
70
71}  // namespace gfx
72