您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
55 行
1.5 KiB
55 行
1.5 KiB
using System;
|
|
using RSG;
|
|
using Unity.UIWidgets.async2;
|
|
using Unity.UIWidgets.ui2;
|
|
|
|
namespace Unity.UIWidgets.foundation {
|
|
public abstract class BindingBase {
|
|
protected BindingBase() {
|
|
D.assert(!_debugInitialized);
|
|
initInstances();
|
|
D.assert(_debugInitialized);
|
|
}
|
|
|
|
static bool _debugInitialized = false;
|
|
|
|
public Window window => Window.instance;
|
|
|
|
protected virtual void initInstances() {
|
|
D.assert(!_debugInitialized);
|
|
D.assert(() => {
|
|
_debugInitialized = true;
|
|
return true;
|
|
});
|
|
}
|
|
|
|
protected bool locked => _lockCount > 0;
|
|
int _lockCount = 0;
|
|
|
|
protected Future lockEvents(Func<Future> callback) {
|
|
developer.Timeline.startSync("Lock events");
|
|
|
|
D.assert(callback != null);
|
|
_lockCount += 1;
|
|
Future future = callback();
|
|
D.assert(future != null,
|
|
() =>
|
|
"The lockEvents() callback returned null; " +
|
|
"it should return a Promise that completes when the lock is to expire.");
|
|
future.whenComplete(() => {
|
|
_lockCount -= 1;
|
|
if (!locked) {
|
|
developer.Timeline.finishSync();
|
|
unlocked();
|
|
}
|
|
|
|
return null;
|
|
});
|
|
return future;
|
|
}
|
|
|
|
protected virtual void unlocked() {
|
|
D.assert(!locked);
|
|
}
|
|
}
|
|
}
|