| Index: mojo/services/gfx/images/cpp/image_pipe_consumer_endpoint.h
|
| diff --git a/mojo/services/gfx/images/cpp/image_pipe_consumer_endpoint.h b/mojo/services/gfx/images/cpp/image_pipe_consumer_endpoint.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..316e626d4af55601ce7c478030aa3a3caf2b592a
|
| --- /dev/null
|
| +++ b/mojo/services/gfx/images/cpp/image_pipe_consumer_endpoint.h
|
| @@ -0,0 +1,60 @@
|
| +// Copyright 2016 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.
|
| +#ifndef MOJO_SERVICES_GFX_IMAGES_INTERFACES_IMAGE_PIPE_CONSUMER_ENDPOINT_H_
|
| +#define MOJO_SERVICES_GFX_IMAGES_INTERFACES_IMAGE_PIPE_CONSUMER_ENDPOINT_H_
|
| +
|
| +#include "image_pipe_endpoint.h"
|
| +#include "mojo/public/c/system/macros.h"
|
| +#include "mojo/public/cpp/bindings/strong_binding.h"
|
| +#include "mojo/services/gfx/images/cpp/image_pipe_consumer_delegate.h"
|
| +#include "mojo/services/gfx/images/interfaces/image_pipe.mojom.h"
|
| +
|
| +namespace image_pipe {
|
| +
|
| +// |ImagePipeConsumerEndpoint| is a state tracking wrapper for the consumer end
|
| +// of an |ImagePipe| that enforces the constraints documented in the mojom
|
| +// interface. Using |ImagePipeConsumerEndpoint| is not required to use
|
| +// |ImagePipe|, but it may help you use it correctly
|
| +class ImagePipeConsumerEndpoint : private mojo::gfx::ImagePipe {
|
| + public:
|
| + ImagePipeConsumerEndpoint(
|
| + mojo::InterfaceRequest<mojo::gfx::ImagePipe> request,
|
| + ImagePipeConsumerDelegate* delegate);
|
| + ~ImagePipeConsumerEndpoint() override;
|
| +
|
| + // Aquire the Image presented least recently (queue like behavior). If no
|
| + // images are available that match the selection criteria this function will
|
| + // return false otherwise it will write the selected id into its id argument
|
| + // and return true.
|
| + bool AcquireNextImage(uint32_t* out_id);
|
| +
|
| + // Releases an image back to the producer.
|
| + void ReleaseImage(uint32_t id, mojo::gfx::PresentationStatus status);
|
| +
|
| + // For testing only, makes fatal errors not quite fatal, which allows tests
|
| + // to cause a fatal error and check that it was caught correctly without
|
| + // dying a horrible death in the process. If you are using this for something
|
| + // other than testing you are probably doing something very wrong.
|
| + void DisableFatalErrorsForTesting();
|
| +
|
| + private:
|
| + void CloseEndpoint();
|
| +
|
| + // Inherited from mojo::gfx::ImagePipe, see image_pipe.mojom for comments
|
| + void AddImage(mojo::gfx::ImagePtr image, uint32_t id) override;
|
| + void RemoveImage(uint32_t id) override;
|
| + void PresentImage(uint32_t id, const PresentImageCallback& callback) override;
|
| + void FlushImages() override;
|
| +
|
| + ImagePipeEndpoint state_tracker_;
|
| + ImagePipeConsumerDelegate* delegate_;
|
| +
|
| + mojo::Binding<mojo::gfx::ImagePipe> image_pipe_binding_;
|
| +
|
| + MOJO_DISALLOW_COPY_AND_ASSIGN(ImagePipeConsumerEndpoint);
|
| +};
|
| +
|
| +} // namespace image_pipe
|
| +
|
| +#endif // MOJO_SERVICES_GFX_IMAGES_INTERFACES_IMAGE_PIPE_CONSUMER_ENDPOINT_H_
|
|
|