ShowImage: improve attributes performance.
* Writes the attributes only if they are different or missing. * Thanks Humdinger for point out.
This commit is contained in:
parent
e59470891c
commit
9c1f5f4d70
@ -1526,12 +1526,22 @@ ShowImageWindow::_SaveWidthAndHeight()
|
||||
int32 width = bounds.IntegerWidth() + 1;
|
||||
int32 height = bounds.IntegerHeight() + 1;
|
||||
|
||||
BFile file(&fNavigator.CurrentRef(), B_WRITE_ONLY);
|
||||
if (file.InitCheck() != B_OK)
|
||||
BNode node(&fNavigator.CurrentRef());
|
||||
if (node.InitCheck() != B_OK)
|
||||
return;
|
||||
|
||||
file.WriteAttr("Media:Width", B_INT32_TYPE, 0, &width, sizeof(width));
|
||||
file.WriteAttr("Media:Height", B_INT32_TYPE, 0, &height, sizeof(height));
|
||||
const char* kWidthAttrName = "Media:Width";
|
||||
const char* kHeightAttrName = "Media:Height";
|
||||
|
||||
int32 widthAttr;
|
||||
ssize_t attrSize = node.ReadAttr(kWidthAttrName, B_INT32_TYPE, 0, &widthAttr, sizeof(widthAttr));
|
||||
if (attrSize <= 0 || widthAttr != width)
|
||||
node.WriteAttr(kWidthAttrName, B_INT32_TYPE, 0, &width, sizeof(width));
|
||||
|
||||
int32 heightAttr;
|
||||
attrSize = node.ReadAttr(kHeightAttrName, B_INT32_TYPE, 0, &heightAttr, sizeof(heightAttr));
|
||||
if (attrSize <= 0 || heightAttr != height)
|
||||
node.WriteAttr(kHeightAttrName, B_INT32_TYPE, 0, &height, sizeof(height));
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user