ListenableGlesRenderer2


abstract class ListenableGlesRenderer2<SharedAssetsT : Renderer.SharedAssets> : Renderer.GlesRenderer2


ListenableFuture-based compatibility wrapper around Renderer.GlesRenderer's suspending methods.

use Watch Face Format instead

Summary

Public constructors

<SharedAssetsT : Renderer.SharedAssets> ListenableGlesRenderer2(
    surfaceHolder: SurfaceHolder,
    currentUserStyleRepository: CurrentUserStyleRepository,
    watchState: WatchState,
    interactiveDrawModeUpdateDelayMillis: @IntRange(from = 0, to = 60000) Long,
    eglConfigAttribList: IntArray,
    eglSurfaceAttribList: IntArray
)

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

Public functions

abstract ListenableFuture<SharedAssetsT>

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

final suspend Unit

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

final suspend Unit
onUiThreadGlSurfaceCreated(width: @Px Int, height: @Px Int)

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

Unit

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

Unit

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

Protected functions

final suspend SharedAssetsT

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open ListenableFuture<Unit>

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open ListenableFuture<Unit>

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

Inherited functions

From androidx.wear.watchface.Renderer
open Rect

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

Unit

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Unit

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

Unit

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

Unit

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Boolean

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

From androidx.wear.watchface.Renderer.GlesRenderer
open Unit

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

open Unit

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

suspend Unit

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

suspend Unit
runUiThreadGlCommands(commands: suspend () -> Unit)

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

From androidx.wear.watchface.Renderer.GlesRenderer2
final Unit
render(zonedDateTime: ZonedDateTime)

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

abstract Unit
@UiThread
render(zonedDateTime: ZonedDateTime, sharedAssets: SharedAssetsT)

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

final Unit

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

abstract Unit
@UiThread
renderHighlightLayer(
    zonedDateTime: ZonedDateTime,
    sharedAssets: SharedAssetsT
)

This function is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

Inherited properties

From androidx.wear.watchface.Renderer
Collection<Pair<IntContentDescriptionLabel>>

This property is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

@Px Float

This property is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

@Px Float

This property is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

Long

This property is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

RenderParameters

This property is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

Rect

This property is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

SurfaceHolder

This property is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

WatchFaceColors?

This property is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

From androidx.wear.watchface.Renderer.GlesRenderer
EGLContext

This property is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

EGLConfig

This property is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

EGLDisplay

This property is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

EGLContext

This property is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

From androidx.wear.watchface.Renderer.GlesRenderer2
Int

This property is deprecated. AndroidX watchface libraries are deprecated, use Watch Face Format instead.

Public constructors

ListenableGlesRenderer2

<SharedAssetsT : Renderer.SharedAssets> ListenableGlesRenderer2(
    surfaceHolder: SurfaceHolder,
    currentUserStyleRepository: CurrentUserStyleRepository,
    watchState: WatchState,
    interactiveDrawModeUpdateDelayMillis: @IntRange(from = 0, to = 60000) Long,
    eglConfigAttribList: IntArray = EGL_CONFIG_ATTRIB_LIST,
    eglSurfaceAttribList: IntArray = EGL_SURFACE_ATTRIB_LIST
)

Public functions

createSharedAssetsFuture

Added in 1.1.0
Deprecated in 1.3.0-alpha06
@WorkerThread
abstract fun createSharedAssetsFuture(): ListenableFuture<SharedAssetsT>

When editing multiple WatchFaceService instances and hence Renderers can exist concurrently (e.g. a headless instance and an interactive instance) and using SharedAssets allows memory to be saved by sharing immutable data (e.g. Bitmaps, shaders, etc...) between them.

To take advantage of SharedAssets, override this method. The constructed SharedAssets are passed into the render as an argument (NB you'll have to cast this to your type). It is safe to make GLES calls within this method.

When all instances using SharedAssets have been closed, SharedAssets.onDestroy will be called.

Note that while SharedAssets are constructed on a background thread, they'll typically be used on the main thread and subsequently destroyed there. The watch face library constructs shared GLES contexts to allow resource sharing between threads.

Returns
ListenableFuture<SharedAssetsT>

A ListenableFuture for the SharedAssetsT that will be passed into render and renderHighlightLayer

onBackgroundThreadGlContextCreated

Added in 1.1.0
Deprecated in 1.3.0-alpha06
final suspend fun onBackgroundThreadGlContextCreated(): Unit

Called once a background thread when a new GL context is created on the background thread, before any subsequent calls to render. Note this function is called inside a lambda passed to runBackgroundThreadGlCommands which has synchronized access to the GL context.

If you need to override this method in java, consider using androidx.wear.watchface.ListenableGlesRenderer instead.

onUiThreadGlSurfaceCreated

Added in 1.1.0
Deprecated in 1.3.0-alpha06
final suspend fun onUiThreadGlSurfaceCreated(width: @Px Int, height: @Px Int): Unit

Called when a new GL surface is created on the UiThread, before any subsequent calls to render or in response to SurfaceHolder.Callback.surfaceChanged. Note this function is called inside a lambda passed to runUiThreadGlCommands which has synchronized access to the GL context.

If you need to override this method in java, consider using androidx.wear.watchface.ListenableGlesRenderer instead.

Parameters
width: @Px Int

width of surface in pixels

height: @Px Int

height of surface in pixels

runBackgroundThreadGlCommands

Added in 1.1.0
Deprecated in 1.3.0-alpha06
@WorkerThread
fun runBackgroundThreadGlCommands(runnable: Runnable): Unit

Inside of a Mutex this function sets the GL context associated with the WatchFaceService.getBackgroundThreadHandler's looper thread as the current one, executes runnable and finally unsets the GL context.

Access to the GL context this way is necessary because GL contexts are not shared between renderers and there can be multiple watch face instances existing concurrently (e.g. headless and interactive, potentially from different watch faces if an APK contains more than one WatchFaceService).

NB this function is called by the library before running runBackgroundThreadGlCommands so there's no need to use this directly in client code unless you need to make GL calls outside of those methods.

Throws
kotlin.IllegalStateException

if the calls to EGL14.eglMakeCurrent fails

runUiThreadGlCommands

Added in 1.1.0
Deprecated in 1.3.0-alpha06
@UiThread
fun runUiThreadGlCommands(runnable: Runnable): Unit

Inside of a Mutex this function sets the UiThread GL context as the current one, executes runnable and finally unsets the GL context.

Access to the GL context this way is necessary because GL contexts are not shared between renderers and there can be multiple watch face instances existing concurrently (e.g. headless and interactive, potentially from different watch faces if an APK contains more than one WatchFaceService).

Throws
kotlin.IllegalStateException

if the calls to EGL14.eglMakeCurrent fails

Protected functions

createSharedAssets

protected final suspend fun createSharedAssets(): SharedAssetsT

When editing multiple WatchFaceService instances and hence Renderers can exist concurrently (e.g. a headless instance and an interactive instance) and using SharedAssets allows memory to be saved by sharing immutable data (e.g. Bitmaps, shaders, etc...) between them.

To take advantage of SharedAssets, override this method. The constructed SharedAssets are passed into the render as an argument (NB you'll have to cast this to your type). It is safe to make GLES calls within this method.

When all instances using SharedAssets have been closed, SharedAssets.onDestroy will be called.

Note that while SharedAssets are constructed on a background thread, they'll typically be used on the main thread and subsequently destroyed there. The watch face library constructs shared GLES contexts to allow resource sharing between threads.

Returns
SharedAssetsT

The SharedAssetsT that will be passed into render and renderHighlightLayer.

onBackgroundThreadGlContextCreatedFuture

Added in 1.1.0
Deprecated in 1.3.0-alpha06
protected open fun onBackgroundThreadGlContextCreatedFuture(): ListenableFuture<Unit>

Called once a background thread when a new GL context is created on the background thread, before any subsequent calls to render. Note this function is called inside a lambda passed to runBackgroundThreadGlCommands which has synchronized access to the GL context. Note cancellation of the returned future is not supported.

Returns
ListenableFuture<Unit>

A ListenableFuture which is resolved when background thread work has completed. Rendering will be blocked until this has resolved.

onUiThreadGlSurfaceCreatedFuture

Added in 1.1.0
Deprecated in 1.3.0-alpha06
@UiThread
protected open fun onUiThreadGlSurfaceCreatedFuture(width: @Px Int, height: @Px Int): ListenableFuture<Unit>

Called when a new GL surface is created on the UiThread, before any subsequent calls to render and in response to SurfaceHolder.Callback.surfaceChanged. Note this function is called inside a lambda passed to Renderer.GlesRenderer.runUiThreadGlCommands which has synchronized access to the GL context. Note cancellation of the returned future is not supported.

Parameters
width: @Px Int

width of surface in pixels

height: @Px Int

height of surface in pixels

Returns
ListenableFuture<Unit>

A ListenableFuture which is resolved when UI thread work has completed. Rendering will be blocked until this has resolved.