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:
@@ -1343,15 +1343,19 @@ ServerApp::_DispatchMessage(int32 code, BPrivate::LinkReceiver &link)
|
|||||||
font.SetSize(size);
|
font.SetSize(size);
|
||||||
font.SetSpacing(spacing);
|
font.SetSpacing(spacing);
|
||||||
|
|
||||||
for (int32 i = 0; i < numStrings; i++)
|
for (int32 i = 0; i < numStrings; i++) {
|
||||||
if (!stringArray[i] || lengthArray[i] <= 0)
|
if (!stringArray[i] || lengthArray[i] <= 0)
|
||||||
widthArray[i] = 0.0;
|
widthArray[i] = 0.0;
|
||||||
else
|
else {
|
||||||
widthArray[i] = fDesktop->GetDisplayDriver()->StringWidth(stringArray[i], lengthArray[i], font);
|
// widthArray[i] = fDesktop->GetDisplayDriver()->StringWidth(stringArray[i], lengthArray[i], font);
|
||||||
// NOTE: The line below will return the exact same thing. However,
|
// NOTE: The line below will return the exact same thing. However,
|
||||||
// the line above uses the AGG rendering backend, for which glyph caching
|
// the line above uses the AGG rendering backend, for which glyph caching
|
||||||
// actually works. It is about 20 times faster!
|
// actually works. It is about 20 times faster!
|
||||||
//width = font.StringWidth(string, length);
|
// 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.StartMessage(B_OK);
|
||||||
fLink.Attach(widthArray, sizeof(widthArray));
|
fLink.Attach(widthArray, sizeof(widthArray));
|
||||||
|
|||||||
Reference in New Issue
Block a user