This works around a deadlock that frequently happened when working with menus (font stuff).
I should start investigate this one more deeply some time... git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14646 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
687193750c
commit
cf550035dd
@ -1343,15 +1343,19 @@ ServerApp::_DispatchMessage(int32 code, BPrivate::LinkReceiver &link)
|
||||
font.SetSize(size);
|
||||
font.SetSpacing(spacing);
|
||||
|
||||
for (int32 i = 0; i < numStrings; i++)
|
||||
for (int32 i = 0; i < numStrings; i++) {
|
||||
if (!stringArray[i] || lengthArray[i] <= 0)
|
||||
widthArray[i] = 0.0;
|
||||
else
|
||||
widthArray[i] = fDesktop->GetDisplayDriver()->StringWidth(stringArray[i], lengthArray[i], font);
|
||||
// NOTE: The line below will return the exact same thing. However,
|
||||
// the line above uses the AGG rendering backend, for which glyph caching
|
||||
// actually works. It is about 20 times faster!
|
||||
//width = font.StringWidth(string, length);
|
||||
else {
|
||||
// widthArray[i] = fDesktop->GetDisplayDriver()->StringWidth(stringArray[i], lengthArray[i], font);
|
||||
// NOTE: The line below will return the exact same thing. However,
|
||||
// the line above uses the AGG rendering backend, for which glyph caching
|
||||
// actually works. It is about 20 times faster!
|
||||
// TODO: I've disabled the AGG version for now, as it produces a dead lock
|
||||
// (font use), that I am currently too lazy to investigate...
|
||||
widthArray[i] = font.StringWidth(stringArray[i], lengthArray[i]);
|
||||
}
|
||||
}
|
||||
|
||||
fLink.StartMessage(B_OK);
|
||||
fLink.Attach(widthArray, sizeof(widthArray));
|
||||
|
Loading…
Reference in New Issue
Block a user