Skip to content

Commit 7e414c8

Browse files
committed
[GLib] Drop WTF_ALLOW_UNSAFE_BUFFER_USAGE in DisplayVBlankMonitorDRM.cpp
https://bugs.webkit.org/show_bug.cgi?id=303234 Reviewed by Carlos Garcia Campos. * Source/WebKit/UIProcess/glib/DisplayVBlankMonitorDRM.cpp: (WebKit::findCrtc): Use spans to iterate over connector and CRTC identifiers. (WebKit::findDrmNodeWithCrtc): Use std::array for the array of device pointers. Canonical link: https://commits.webkit.org/303673@main
1 parent 7e772b2 commit 7e414c8

1 file changed

Lines changed: 9 additions & 12 deletions

File tree

Source/WebKit/UIProcess/glib/DisplayVBlankMonitorDRM.cpp

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,6 @@
4545
#include <gtk/gtk.h>
4646
#endif
4747

48-
WTF_ALLOW_UNSAFE_BUFFER_USAGE_BEGIN // GTK/WPE port
49-
5048
namespace WebKit {
5149

5250
#if PLATFORM(GTK)
@@ -61,8 +59,8 @@ static std::optional<std::pair<uint32_t, uint32_t>> findCrtc(int fd, GdkMonitor*
6159

6260
// First find connectors matching the size.
6361
Vector<drmModeConnector*, 1> connectors;
64-
for (int i = 0; i < resources->count_connectors; ++i) {
65-
auto* connector = drmModeGetConnector(fd, resources->connectors[i]);
62+
for (uint32_t connectorId : unsafeMakeSpan(resources->connectors, resources->count_connectors)) {
63+
auto* connector = drmModeGetConnector(fd, connectorId);
6664
if (!connector)
6765
continue;
6866

@@ -88,8 +86,9 @@ static std::optional<std::pair<uint32_t, uint32_t>> findCrtc(int fd, GdkMonitor*
8886

8987
// FIXME: if there are multiple connectors, check other properties.
9088
if (drmModeEncoder* encoder = drmModeGetEncoder(fd, connectors[0]->encoder_id)) {
91-
for (int i = 0; i < resources->count_crtcs; ++i) {
92-
if (resources->crtcs[i] == encoder->crtc_id) {
89+
const auto crtcIds = unsafeMakeSpan(resources->crtcs, resources->count_crtcs);
90+
for (unsigned i = 0; i < crtcIds.size(); ++i) {
91+
if (crtcIds[i] == encoder->crtc_id) {
9392
returnValue = { i, gdk_monitor_get_refresh_rate(monitor) };
9493
break;
9594
}
@@ -172,8 +171,8 @@ static std::optional<DrmNodeWithCrtc> findDrmNodeWithCrtc(GdkMonitor* monitor)
172171
static std::optional<DrmNodeWithCrtc> findDrmNodeWithCrtc()
173172
#endif
174173
{
175-
drmDevicePtr devices[64];
176-
const int devicesNum = drmGetDevices2(0, devices, std::size(devices));
174+
std::array<drmDevicePtr, 64> devices;
175+
const int devicesNum = drmGetDevices2(0, devices.data(), devices.size());
177176
if (devicesNum <= 0)
178177
return { };
179178
for (int i = 0; i < devicesNum; i++) {
@@ -189,11 +188,11 @@ static std::optional<DrmNodeWithCrtc> findDrmNodeWithCrtc()
189188
crtcInfo = findCrtc(fd.value());
190189
#endif
191190
if (crtcInfo) {
192-
drmFreeDevices(devices, devicesNum);
191+
drmFreeDevices(devices.data(), devicesNum);
193192
return DrmNodeWithCrtc { WTFMove(fd), *crtcInfo };
194193
}
195194
}
196-
drmFreeDevices(devices, devicesNum);
195+
drmFreeDevices(devices.data(), devicesNum);
197196
return { };
198197
}
199198

@@ -272,6 +271,4 @@ bool DisplayVBlankMonitorDRM::waitForVBlank() const
272271

273272
} // namespace WebKit
274273

275-
WTF_ALLOW_UNSAFE_BUFFER_USAGE_END
276-
277274
#endif // USE(LIBDRM)

0 commit comments

Comments
 (0)