package jp.juggler.util

import android.os.Handler
import android.os.Looper

////////////////////////////////////////////////////////////////////
// threading

val isMainThread: Boolean get() = Looper.getMainLooper().thread === Thread.currentThread()

// メインスレッドから呼び出された場合、それがsynchronizedの中だと GlobalScope.launch を使うのは良くない
fun runOnMainLooper(proc: () -> Unit) {
    val looper = Looper.getMainLooper()
    if (looper.thread === Thread.currentThread()) {
        proc()
    } else {
        Handler(looper).post { proc() }
    }
}

fun runOnMainLooperDelayed(delayMs: Long, proc: () -> Unit) {
    Handler(Looper.getMainLooper()).postDelayed({ proc() }, delayMs)
}
