// 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 "mojo/services/surfaces/surfaces_service_impl.h"

namespace mojo {

SurfacesServiceImpl::SurfacesServiceImpl(cc::SurfaceManager* manager,
                                         uint32_t* next_id_namespace,
                                         SurfacesImpl::Client* client)
    : manager_(manager),
      next_id_namespace_(next_id_namespace),
      client_(client) {
}
SurfacesServiceImpl::~SurfacesServiceImpl() {
}

void SurfacesServiceImpl::CreateSurfaceConnection(
    const Callback<void(SurfacePtr, uint32_t)>& callback) {
  uint32_t id_namespace = (*next_id_namespace_)++;
  SurfacePtr surface;
  BindToProxy(new SurfacesImpl(manager_, id_namespace, client_), &surface);
  callback.Run(surface.Pass(), id_namespace);
}

}  // namespace mojo