Skip to content

Commit

Permalink
Address review comments.
Browse files Browse the repository at this point in the history
  • Loading branch information
pengdev committed Nov 3, 2022
1 parent 72c73bc commit 5b29680
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 5 deletions.
6 changes: 5 additions & 1 deletion sdk/src/main/java/com/mapbox/maps/MapController.kt
Original file line number Diff line number Diff line change
Expand Up @@ -219,12 +219,16 @@ internal class MapController : MapPluginProviderDelegate, MapControllable {

override fun addWidget(widget: Widget) {
val weakThis = WeakReference(this)
renderer.renderThread.addWidget(widget.also { it.setRepaintTrigger { weakThis.get()?.renderer?.scheduleRepaint() } })
widget.setRepaintTrigger {
weakThis.get()?.renderer?.scheduleRepaint()
}
renderer.renderThread.addWidget(widget)
renderer.scheduleRepaint()
}

override fun removeWidget(widget: Widget): Boolean {
val wasRemoved = renderer.renderThread.removeWidget(widget)
widget.setRepaintTrigger(null)
if (wasRemoved) {
renderer.scheduleRepaint()
}
Expand Down
8 changes: 4 additions & 4 deletions sdk/src/main/java/com/mapbox/maps/renderer/widget/Widget.kt
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@ import com.mapbox.maps.MapboxExperimental
@MapboxExperimental
abstract class Widget internal constructor() {
internal abstract val renderer: WidgetRenderer
private var repaintTriggerWeakReference: (() -> Unit)? = null
private var repaintTrigger: (() -> Unit)? = null

/**
* Triggers a repaint of the widget, as well as the map.
* It will do nothing if the widget has not been added to the map.
*/
protected fun triggerRepaint() {
repaintTriggerWeakReference?.invoke()
repaintTrigger?.invoke()
}

/**
Expand Down Expand Up @@ -51,7 +51,7 @@ abstract class Widget internal constructor() {
abstract fun getRotation(): Float

@JvmSynthetic
internal fun setRepaintTrigger(trigger: () -> Unit) {
repaintTriggerWeakReference = trigger
internal fun setRepaintTrigger(trigger: (() -> Unit)?) {
repaintTrigger = trigger
}
}

0 comments on commit 5b29680

Please sign in to comment.