Switch framebuffer ptr to const reference.
Change-Id: I7fc1ceb3f88659979defd6d9541fea89af7207d6
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/experimental/+/125790
Commit-Queue: Chris Mumford <cmumford@google.com>
Reviewed-by: Anthony DiGirolamo <tonymd@google.com>
diff --git a/pw_display_driver/public/pw_display_driver/display_driver.h b/pw_display_driver/public/pw_display_driver/display_driver.h
index 15bc575..7e87964 100644
--- a/pw_display_driver/public/pw_display_driver/display_driver.h
+++ b/pw_display_driver/public/pw_display_driver/display_driver.h
@@ -18,8 +18,7 @@
#include "pw_framebuffer/rgb565.h"
#include "pw_status/status.h"
-namespace pw {
-namespace display_driver {
+namespace pw::display_driver {
// This interface defines a software display driver. This is the software
// component responsible for *all* communications with a display controller.
@@ -34,8 +33,8 @@
// Send all pixels in the supplied |framebuffer| to the display controller
// for display.
- virtual Status Update(pw::framebuffer::FramebufferRgb565* framebuffer) = 0;
+ virtual Status Update(
+ const pw::framebuffer::FramebufferRgb565& framebuffer) = 0;
};
-} // namespace display_driver
-} // namespace pw
+} // namespace pw::display_driver
diff --git a/pw_display_driver_ili9341/display_driver.cc b/pw_display_driver_ili9341/display_driver.cc
index cfb38b6..3ac0f1f 100644
--- a/pw_display_driver_ili9341/display_driver.cc
+++ b/pw_display_driver_ili9341/display_driver.cc
@@ -20,6 +20,7 @@
using pw::color::color_rgb565_t;
using pw::digital_io::State;
+using pw::framebuffer::FramebufferRgb565;
using pw::spi::ChipSelectBehavior;
using pw::spi::Device;
@@ -280,11 +281,10 @@
return OkStatus();
}
-Status DisplayDriverILI9341::Update(
- pw::framebuffer::FramebufferRgb565* frame_buffer) {
+Status DisplayDriverILI9341::Update(const FramebufferRgb565& frame_buffer) {
auto transaction = config_.spi_device_16_bit.StartTransaction(
ChipSelectBehavior::kPerTransaction);
- const uint16_t* fb_data = frame_buffer->GetFramebufferData();
+ const uint16_t* fb_data = frame_buffer.GetFramebufferData();
Status s;
// TODO(cmumford): Figure out why the STM32F429I cannot send the entire
// framebuffer in a single write, but another display can.
@@ -311,16 +311,16 @@
}
Status DisplayDriverILI9341::UpdatePixelDouble(
- pw::framebuffer::FramebufferRgb565* frame_buffer) {
+ const FramebufferRgb565& frame_buffer) {
uint16_t temp_row[kDisplayWidth];
auto transaction = config_.spi_device_16_bit.StartTransaction(
ChipSelectBehavior::kPerTransaction);
- const color_rgb565_t* const fbdata = frame_buffer->GetFramebufferData();
- for (int y = 0; y < frame_buffer->GetHeight(); y++) {
+ const color_rgb565_t* const fbdata = frame_buffer.GetFramebufferData();
+ for (int y = 0; y < frame_buffer.GetHeight(); y++) {
// Populate this row with each pixel repeated twice
- for (int x = 0; x < frame_buffer->GetWidth(); x++) {
- temp_row[x * 2] = fbdata[y * frame_buffer->GetWidth() + x];
- temp_row[(x * 2) + 1] = fbdata[y * frame_buffer->GetWidth() + x];
+ for (int x = 0; x < frame_buffer.GetWidth(); x++) {
+ temp_row[x * 2] = fbdata[y * frame_buffer.GetWidth() + x];
+ temp_row[(x * 2) + 1] = fbdata[y * frame_buffer.GetWidth() + x];
}
// Send this row to the display twice.
auto s = transaction.Write(ConstByteSpan(
diff --git a/pw_display_driver_ili9341/public/pw_display_driver_ili9341/display_driver.h b/pw_display_driver_ili9341/public/pw_display_driver_ili9341/display_driver.h
index d7998d9..0575116 100644
--- a/pw_display_driver_ili9341/public/pw_display_driver_ili9341/display_driver.h
+++ b/pw_display_driver_ili9341/public/pw_display_driver_ili9341/display_driver.h
@@ -42,8 +42,9 @@
// DisplayDriver implementation:
Status Init() override;
- Status Update(pw::framebuffer::FramebufferRgb565* framebuffer);
- Status UpdatePixelDouble(pw::framebuffer::FramebufferRgb565* frame_buffer);
+ Status Update(const pw::framebuffer::FramebufferRgb565& framebuffer);
+ Status UpdatePixelDouble(
+ const pw::framebuffer::FramebufferRgb565& framebuffer);
private:
enum class Mode {
diff --git a/pw_display_driver_imgui/display_driver.cc b/pw_display_driver_imgui/display_driver.cc
index ad2f529..c8c83ee 100644
--- a/pw_display_driver_imgui/display_driver.cc
+++ b/pw_display_driver_imgui/display_driver.cc
@@ -34,6 +34,7 @@
using pw::color::color_rgb565_t;
using pw::coordinates::Vec3Int;
+using pw::framebuffer::FramebufferRgb565;
namespace pw::display_driver {
@@ -389,14 +390,13 @@
}
}
-Status DisplayDriverImgUI::Update(
- pw::framebuffer::FramebufferRgb565* framebuffer) {
+Status DisplayDriverImgUI::Update(const FramebufferRgb565& framebuffer) {
RecreateLcdTexture();
// Copy frame_buffer into lcd_pixel_data
for (GLuint x = 0; x < kDisplayWidth; x++) {
for (GLuint y = 0; y < kDisplayHeight; y++) {
- if (auto c = framebuffer->GetPixel(x, y); c.ok()) {
+ if (auto c = framebuffer.GetPixel(x, y); c.ok()) {
_SetTexturePixel(x, y, c.value());
}
}
diff --git a/pw_display_driver_imgui/public/pw_display_driver_imgui/display_driver.h b/pw_display_driver_imgui/public/pw_display_driver_imgui/display_driver.h
index a8ee80f..ddcc428 100644
--- a/pw_display_driver_imgui/public/pw_display_driver_imgui/display_driver.h
+++ b/pw_display_driver_imgui/public/pw_display_driver_imgui/display_driver.h
@@ -27,7 +27,7 @@
// pw::display_driver::DisplayDriver implementation:
Status Init() override;
- Status Update(pw::framebuffer::FramebufferRgb565* framebuffer) override;
+ Status Update(const pw::framebuffer::FramebufferRgb565& framebuffer) override;
private:
void RecreateLcdTexture();
diff --git a/pw_display_driver_null/public/pw_display_driver_null/display_driver.h b/pw_display_driver_null/public/pw_display_driver_null/display_driver.h
index 6f9d978..bad771c 100644
--- a/pw_display_driver_null/public/pw_display_driver_null/display_driver.h
+++ b/pw_display_driver_null/public/pw_display_driver_null/display_driver.h
@@ -25,7 +25,7 @@
// pw::display_driver::DisplayDriver implementation:
pw::Status Init() override { return pw::OkStatus(); }
- pw::Status Update(pw::framebuffer::FramebufferRgb565*) override {
+ pw::Status Update(const pw::framebuffer::FramebufferRgb565&) override {
return pw::OkStatus();
}
};
diff --git a/pw_display_driver_st7789/display_driver.cc b/pw_display_driver_st7789/display_driver.cc
index 4c5d297..68a577d 100644
--- a/pw_display_driver_st7789/display_driver.cc
+++ b/pw_display_driver_st7789/display_driver.cc
@@ -23,6 +23,7 @@
using pw::color::color_rgb565_t;
using pw::digital_io::State;
+using pw::framebuffer::FramebufferRgb565;
using pw::spi::ChipSelectBehavior;
using pw::spi::Device;
using std::array;
@@ -178,8 +179,7 @@
return OkStatus();
}
-Status DisplayDriverST7789::Update(
- pw::framebuffer::FramebufferRgb565* frame_buffer) {
+Status DisplayDriverST7789::Update(const FramebufferRgb565& frame_buffer) {
// Let controller know a write is coming.
{
auto transaction = config_.spi_device_8_bit.StartTransaction(
@@ -190,8 +190,8 @@
// Write the pixel data.
auto transaction = config_.spi_device_16_bit.StartTransaction(
ChipSelectBehavior::kPerWriteRead);
- const uint16_t* fb_data = frame_buffer->GetFramebufferData();
- const int num_pixels = frame_buffer->GetWidth() * frame_buffer->GetHeight();
+ const uint16_t* fb_data = frame_buffer.GetFramebufferData();
+ const int num_pixels = frame_buffer.GetWidth() * frame_buffer.GetHeight();
return transaction.Write(
ConstByteSpan(reinterpret_cast<const byte*>(fb_data), num_pixels));
}
diff --git a/pw_display_driver_st7789/public/pw_display_driver_st7789/display_driver.h b/pw_display_driver_st7789/public/pw_display_driver_st7789/display_driver.h
index 49a65b9..f5824bb 100644
--- a/pw_display_driver_st7789/public/pw_display_driver_st7789/display_driver.h
+++ b/pw_display_driver_st7789/public/pw_display_driver_st7789/display_driver.h
@@ -44,7 +44,7 @@
// DisplayDriver implementation:
Status Init() override;
- Status Update(pw::framebuffer::FramebufferRgb565* framebuffer);
+ Status Update(const pw::framebuffer::FramebufferRgb565& framebuffer) override;
private:
enum class Mode {
diff --git a/pw_graphics/pw_display/display.cc b/pw_graphics/pw_display/display.cc
index d5b0e27..881306b 100644
--- a/pw_graphics/pw_display/display.cc
+++ b/pw_graphics/pw_display/display.cc
@@ -17,7 +17,7 @@
namespace pw::display {
-Display::Display(pw::framebuffer::FramebufferRgb565 framebuffer,
+Display::Display(FramebufferRgb565 framebuffer,
pw::display_driver::DisplayDriver& display_driver)
: framebuffer_(std::move(framebuffer)), display_driver_(display_driver) {}
@@ -33,7 +33,7 @@
Status Display::ReleaseFramebuffer(FramebufferRgb565 framebuffer) {
if (!framebuffer.IsValid())
return Status::InvalidArgument();
- return display_driver_.Update(&framebuffer);
+ return display_driver_.Update(framebuffer);
}
} // namespace pw::display