Clean-up in QXcbScreen::getOutputProperty()

Use the Q_XCB_REPLY() macro and let its unique_ptr<> take care of
free()ing the reply.

Change-Id: I32eb9c56ea0ba5632bf6ab39c77567d10f442995
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
bb10
Gatis Paeglis 2017-06-12 11:01:29 +02:00
parent 634f28fa1f
commit 84cc43413a
1 changed files with 3 additions and 6 deletions

View File

@ -861,17 +861,14 @@ QByteArray QXcbScreen::getOutputProperty(xcb_atom_t atom) const
{
QByteArray result;
auto cookie =
xcb_randr_get_output_property(xcb_connection(), m_output,
atom, XCB_ATOM_ANY, 0, 100, false, false);
auto reply = xcb_randr_get_output_property_reply(xcb_connection(), cookie, nullptr);
auto reply = Q_XCB_REPLY(xcb_randr_get_output_property, xcb_connection(),
m_output, atom, XCB_ATOM_ANY, 0, 100, false, false);
if (reply && reply->type == XCB_ATOM_INTEGER && reply->format == 8) {
quint8 *data = new quint8[reply->num_items];
memcpy(data, xcb_randr_get_output_property_data(reply), reply->num_items);
memcpy(data, xcb_randr_get_output_property_data(reply.get()), reply->num_items);
result = QByteArray(reinterpret_cast<const char *>(data), reply->num_items);
delete[] data;
}
free(reply);
return result;
}