# CanvasBufferedRenderer.RenderResult

Artifact: [androidx.graphics:graphics-core](https://developer.android.com/jetpack/androidx/releases/graphics) [View Source](https://cs.android.com/search?q=file:androidx/graphics/CanvasBufferedRenderer.kt+class:androidx.graphics.CanvasBufferedRenderer.RenderResult) Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/graphics#1.0.0)

*** ** * ** ***


```
public final class CanvasBufferedRenderer.RenderResult
```

<br />

*** ** * ** ***

Class that contains data regarding the result of the render request. Consumers are to wait on the provided `https://developer.android.com/reference/androidx/hardware/SyncFenceCompat` if it is non null before consuming the `https://developer.android.com/reference/android/hardware/HardwareBuffer.html` provided to as well as verify that the status returned by `https://developer.android.com/reference/androidx/graphics/CanvasBufferedRenderer.RenderResult#status()` returns `https://developer.android.com/reference/androidx/graphics/CanvasBufferedRenderer.RenderResult#SUCCESS()`.

For example:

```
fun handleRenderResult(result: RenderResult) {
    // block on the fence if it is non-null
    result.fence?.let { fence ->
        fence.awaitForever()
        fence.close()
    }
    // consume contents of RenderResult.hardwareBuffer
}
```

## Summary

| ### Constants |
|---|---|
| `static final int` | `https://developer.android.com/reference/androidx/graphics/CanvasBufferedRenderer.RenderResult#ERROR_UNKNOWN() = 1` Render request failed with an unknown error |
| `static final int` | `https://developer.android.com/reference/androidx/graphics/CanvasBufferedRenderer.RenderResult#SUCCESS() = 0` Render request was completed successfully |

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/graphics/CanvasBufferedRenderer.RenderResult#RenderResult(android.hardware.HardwareBuffer,androidx.hardware.SyncFenceCompat,kotlin.Int)( @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/hardware/HardwareBuffer.html buffer, https://developer.android.com/reference/androidx/hardware/SyncFenceCompat mFence, int mStatus )` |

| ### Public methods |
|---|---|
| `final https://developer.android.com/reference/androidx/hardware/SyncFenceCompat` | `https://developer.android.com/reference/androidx/graphics/CanvasBufferedRenderer.RenderResult#getFence()()` Optional fence that should be waited upon before consuming `https://developer.android.com/reference/androidx/graphics/CanvasBufferedRenderer.RenderResult#hardwareBuffer()`. |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/android/hardware/HardwareBuffer.html` | `https://developer.android.com/reference/androidx/graphics/CanvasBufferedRenderer.RenderResult#getHardwareBuffer()()` `https://developer.android.com/reference/android/hardware/HardwareBuffer.html` that contains the result of the render request. |
| `final int` | `https://developer.android.com/reference/androidx/graphics/CanvasBufferedRenderer.RenderResult#getStatus()()` Status code for the `https://developer.android.com/reference/androidx/graphics/CanvasBufferedRenderer.RenderResult` either `https://developer.android.com/reference/androidx/graphics/CanvasBufferedRenderer.RenderResult#SUCCESS()` if rendering completed or `https://developer.android.com/reference/androidx/graphics/CanvasBufferedRenderer.RenderResult#ERROR_UNKNOWN()` if the rendering could not be completed. |

## Constants

### ERROR_UNKNOWN

```
public static final int ERROR_UNKNOWN = 1
```

Render request failed with an unknown error

### SUCCESS

```
public static final int SUCCESS = 0
```

Render request was completed successfully

## Public constructors

### RenderResult

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/graphics#1.0.0)

```
public RenderResult(
    @NonNull HardwareBuffer buffer,
    SyncFenceCompat mFence,
    int mStatus
)
```

## Public methods

### getFence

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/graphics#1.0.0)

```
public final SyncFenceCompat getFence()
```

Optional fence that should be waited upon before consuming `https://developer.android.com/reference/androidx/graphics/CanvasBufferedRenderer.RenderResult#hardwareBuffer()`. On Android U and above, requests to render will return sooner and include this fence as a way to signal that the result of the render request is reflected in the contents of the buffer. This is done to reduce latency and provide opportunities for other systems to block on the fence on the behalf of the application. For example, `https://developer.android.com/reference/androidx/graphics/surface/SurfaceControlCompat.Transaction#setBuffer(androidx.graphics.surface.SurfaceControlCompat,android.hardware.HardwareBuffer,androidx.hardware.SyncFenceCompat,kotlin.Function1)` can be invoked with `https://developer.android.com/reference/androidx/graphics/CanvasBufferedRenderer.RenderResult#hardwareBuffer()` and `https://developer.android.com/reference/androidx/graphics/CanvasBufferedRenderer.RenderResult#fence()` respectively without the application having to explicitly block on this fence. For older Android versions, the rendering pipeline will automatically block on this fence and this value will return null.

### getHardwareBuffer

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/graphics#1.0.0)

```
public final @NonNull HardwareBuffer getHardwareBuffer()
```

`https://developer.android.com/reference/android/hardware/HardwareBuffer.html` that contains the result of the render request. Consumers should be sure to block on the `https://developer.android.com/reference/androidx/hardware/SyncFenceCompat` instance provided in `https://developer.android.com/reference/androidx/graphics/CanvasBufferedRenderer.RenderResult#fence()` if it is non-null before consuming the contents of this buffer. If `https://developer.android.com/reference/androidx/graphics/CanvasBufferedRenderer.RenderResult#fence()` returns null then this `https://developer.android.com/reference/android/hardware/HardwareBuffer.html` can be consumed immediately.

### getStatus

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/graphics#1.0.0)

```
public final int getStatus()
```

Status code for the `https://developer.android.com/reference/androidx/graphics/CanvasBufferedRenderer.RenderResult` either `https://developer.android.com/reference/androidx/graphics/CanvasBufferedRenderer.RenderResult#SUCCESS()` if rendering completed or `https://developer.android.com/reference/androidx/graphics/CanvasBufferedRenderer.RenderResult#ERROR_UNKNOWN()` if the rendering could not be completed.