drm_hwcomposer: enable code analysis using clang-tidy
Drm hwcomposer project has some code-style inconsistencies.
This is the initial step to unify code-style of the code.
Clang-tidy is a great tool which can not only suggest correct styling,
but also allow predicting the errors in the code and suggest correct
coding approaches to avoid potential weaknesses.
CI was tuned to check clang-tidy recommendation for some part of the
code which is ready ATM (can be built outside AOSP tree).
For this part a limited set of clang-tidy checks has applied (coarse check).
Header files aren't checked at all.
Starting from now new code files must be included into the list that is
checked by almost all clang-tidy checks (fine checklist). New header files
should be also included into this list.
See '.gitlab-ci-clang-tidy-fine.sh'.
Signed-off-by: Roman Stratiienko <r.stratiienko@gmail.com>
diff --git a/drm/DrmDevice.cpp b/drm/DrmDevice.cpp
index 818261d..52d81d5 100644
--- a/drm/DrmDevice.cpp
+++ b/drm/DrmDevice.cpp
@@ -18,35 +18,35 @@
#include "DrmDevice.h"
-#include <errno.h>
#include <fcntl.h>
-#include <stdint.h>
#include <xf86drm.h>
#include <xf86drmMode.h>
#include <algorithm>
#include <array>
+#include <cerrno>
#include <cinttypes>
+#include <cstdint>
#include <sstream>
#include <string>
#include "utils/log.h"
#include "utils/properties.h"
-static void trim_left(std::string &str) {
- str.erase(std::begin(str),
- std::find_if(std::begin(str), std::end(str),
- [](int ch) { return !std::isspace(ch); }));
+static void trim_left(std::string *str) {
+ str->erase(std::begin(*str),
+ std::find_if(std::begin(*str), std::end(*str),
+ [](int ch) { return std::isspace(ch) == 0; }));
}
-static void trim_right(std::string &str) {
- str.erase(std::find_if(std::rbegin(str), std::rend(str),
- [](int ch) { return !std::isspace(ch); })
- .base(),
- std::end(str));
+static void trim_right(std::string *str) {
+ str->erase(std::find_if(std::rbegin(*str), std::rend(*str),
+ [](int ch) { return std::isspace(ch) == 0; })
+ .base(),
+ std::end(*str));
}
-static void trim(std::string &str) {
+static void trim(std::string *str) {
trim_left(str);
trim_right(str);
}
@@ -60,19 +60,19 @@
std::vector<std::string> display_order;
std::istringstream str(display_order_buf.data());
- for (std::string conn_name = ""; std::getline(str, conn_name, ',');) {
- trim(conn_name);
+ for (std::string conn_name; std::getline(str, conn_name, ',');) {
+ trim(&conn_name);
display_order.push_back(std::move(conn_name));
}
return display_order;
}
static std::vector<DrmConnector *> make_primary_display_candidates(
- std::vector<std::unique_ptr<DrmConnector>> &connectors) {
+ const std::vector<std::unique_ptr<DrmConnector>> &connectors) {
std::vector<DrmConnector *> primary_candidates;
std::transform(std::begin(connectors), std::end(connectors),
std::back_inserter(primary_candidates),
- [](std::unique_ptr<DrmConnector> &conn) {
+ [](const std::unique_ptr<DrmConnector> &conn) {
return conn.get();
});
primary_candidates.erase(std::remove_if(std::begin(primary_candidates),
@@ -120,7 +120,7 @@
std::tuple<int, int> DrmDevice::Init(const char *path, int num_displays) {
/* TODO: Use drmOpenControl here instead */
- fd_.Set(open(path, O_RDWR));
+ fd_.Set(open(path, O_RDWR | O_CLOEXEC));
if (fd() < 0) {
ALOGE("Failed to open dri %s: %s", path, strerror(errno));
return std::make_tuple(-ENODEV, 0);
@@ -196,7 +196,7 @@
}
std::vector<DrmCrtc *> possible_crtcs;
- DrmCrtc *current_crtc = NULL;
+ DrmCrtc *current_crtc = nullptr;
for (auto &crtc : crtcs_) {
if ((1 << crtc->pipe()) & e->possible_crtcs)
possible_crtcs.push_back(crtc.get());
@@ -228,7 +228,7 @@
}
std::vector<DrmEncoder *> possible_encoders;
- DrmEncoder *current_encoder = NULL;
+ DrmEncoder *current_encoder = nullptr;
for (int j = 0; j < c->count_encoders; ++j) {
for (auto &encoder : encoders_) {
if (encoder->id() == c->encoders[j])
@@ -351,22 +351,22 @@
}
DrmConnector *DrmDevice::GetConnectorForDisplay(int display) const {
- for (auto &conn : connectors_) {
+ for (const auto &conn : connectors_) {
if (conn->display() == display)
return conn.get();
}
- return NULL;
+ return nullptr;
}
DrmConnector *DrmDevice::GetWritebackConnectorForDisplay(int display) const {
- for (auto &conn : writeback_connectors_) {
+ for (const auto &conn : writeback_connectors_) {
if (conn->display() == display)
return conn.get();
}
- return NULL;
+ return nullptr;
}
-// TODO what happens when hotplugging
+// TODO(nobody): what happens when hotplugging
DrmConnector *DrmDevice::AvailableWritebackConnector(int display) const {
DrmConnector *writeback_conn = GetWritebackConnectorForDisplay(display);
DrmConnector *display_conn = GetConnectorForDisplay(display);
@@ -377,7 +377,7 @@
return writeback_conn;
// Use another CRTC if available and doesn't have any connector
- for (auto &crtc : crtcs_) {
+ for (const auto &crtc : crtcs_) {
if (crtc->display() == display)
continue;
display_conn = GetConnectorForDisplay(crtc->display());
@@ -388,23 +388,23 @@
if (writeback_conn)
return writeback_conn;
}
- return NULL;
+ return nullptr;
}
DrmCrtc *DrmDevice::GetCrtcForDisplay(int display) const {
- for (auto &crtc : crtcs_) {
+ for (const auto &crtc : crtcs_) {
if (crtc->display() == display)
return crtc.get();
}
- return NULL;
+ return nullptr;
}
DrmPlane *DrmDevice::GetPlane(uint32_t id) const {
- for (auto &plane : planes_) {
+ for (const auto &plane : planes_) {
if (plane->id() == id)
return plane.get();
}
- return NULL;
+ return nullptr;
}
const std::vector<std::unique_ptr<DrmCrtc>> &DrmDevice::crtcs() const {
@@ -448,7 +448,9 @@
int ret = TryEncoderForDisplay(display, connector->encoder());
if (!ret) {
return 0;
- } else if (ret != -EAGAIN) {
+ }
+
+ if (ret != -EAGAIN) {
ALOGE("Could not set mode %d/%d", display, ret);
return ret;
}
@@ -459,7 +461,9 @@
if (!ret) {
connector->set_encoder(enc);
return 0;
- } else if (ret != -EAGAIN) {
+ }
+
+ if (ret != -EAGAIN) {
ALOGE("Could not set mode %d/%d", display, ret);
return ret;
}
@@ -472,7 +476,7 @@
// Attach writeback connector to the CRTC linked to the display_conn
int DrmDevice::AttachWriteback(DrmConnector *display_conn) {
DrmCrtc *display_crtc = display_conn->encoder()->crtc();
- if (GetWritebackConnectorForDisplay(display_crtc->display()) != NULL) {
+ if (GetWritebackConnectorForDisplay(display_crtc->display()) != nullptr) {
ALOGE("Display already has writeback attach to it");
return -EINVAL;
}
@@ -498,7 +502,7 @@
}
int DrmDevice::CreatePropertyBlob(void *data, size_t length,
- uint32_t *blob_id) {
+ uint32_t *blob_id) const {
struct drm_mode_create_blob create_blob;
memset(&create_blob, 0, sizeof(create_blob));
create_blob.length = length;
@@ -513,7 +517,7 @@
return 0;
}
-int DrmDevice::DestroyPropertyBlob(uint32_t blob_id) {
+int DrmDevice::DestroyPropertyBlob(uint32_t blob_id) const {
if (!blob_id)
return 0;
@@ -533,7 +537,7 @@
}
int DrmDevice::GetProperty(uint32_t obj_id, uint32_t obj_type,
- const char *prop_name, DrmProperty *property) {
+ const char *prop_name, DrmProperty *property) const {
drmModeObjectPropertiesPtr props;
props = drmModeObjectGetProperties(fd(), obj_id, obj_type);
@@ -573,8 +577,8 @@
property);
}
-const std::string DrmDevice::GetName() const {
- auto ver = drmGetVersion(fd_.get());
+std::string DrmDevice::GetName() const {
+ auto *ver = drmGetVersion(fd_.get());
if (!ver) {
ALOGW("Failed to get drm version for fd=%d", fd_.get());
return "generic";