This patch makes GetShouldAccelerate directly call GetData, just before the place where we call GetFeatureStatus, which we know is reached.
Initially I considered instead calling GetData from GfxInfo::Init() but that turned out to be a bad idea: Init() is called by the factory constructor, which is called significantly earlier in the startup process. We want to call GetData as late as possible, just when we need it, to maximize chances that the glxtest process be already finished by the time we waitpid() it, so that we don't end up wasting time waiting for it.
This patch makes GetShouldAccelerate directly call GetData, just before the place where we call GetFeatureStatus, which we know is reached.
Initially I considered instead calling GetData from GfxInfo::Init() but that turned out to be a bad idea: Init() is called by the factory constructor, which is called significantly earlier in the startup process. We want to call GetData as late as possible, just when we need it, to maximize chances that the glxtest process be already finished by the time we waitpid() it, so that we don't end up wasting time waiting for it.
This patch makes GetShouldAccelerate directly call GetData, just before the place where we call GetFeatureStatus, which we know is reached.
Initially I considered instead calling GetData from GfxInfo::Init() but that turned out to be a bad idea: Init() is called by the factory constructor, which is called significantly earlier in the startup process. We want to call GetData as late as possible, just when we need it, to maximize chances that the glxtest process be already finished by the time we waitpid() it, so that we don't end up wasting time waiting for it.
Prior to this patch, Gecko allowed bubbling click events to trigger multiple <label>s, and for the synthetic click events generated by <label>s to also trigger additional <label>s. In contrast, Opera allows only the latter, and Webkit/IE allow neither. Gecko's behavior leads to 2^n events being dispatched in the case of markup like:
<label for="thing1" /><input type="foo" name="thing1" />
<label for="thing2" /><input type="foo" name="thing2" />
...
After this patch a bubbling click event triggers at most one <label>, and the synthetic click event cannot trigger additional labels. Our behavior is still not identical to Webkit/IE though, because in Gecko a click event will still bubble up past a <label>, while in Webkit/IE the click event will stop at the <label>.