1
0
Fork 0

Codechange: Use a shared_ptr for viewport overlay. (#10586)

pull/10597/head
PeterN 2023-03-31 16:06:36 +01:00 committed by GitHub
parent c905824248
commit c1077212d7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 7 additions and 10 deletions

View File

@ -562,7 +562,7 @@ LinkGraphLegendWindow::LinkGraphLegendWindow(WindowDesc *desc, int window_number
* Set the overlay belonging to this menu and import its company/cargo settings. * Set the overlay belonging to this menu and import its company/cargo settings.
* @param overlay New overlay for this menu. * @param overlay New overlay for this menu.
*/ */
void LinkGraphLegendWindow::SetOverlay(LinkGraphOverlay *overlay) { void LinkGraphLegendWindow::SetOverlay(std::shared_ptr<LinkGraphOverlay> overlay) {
this->overlay = overlay; this->overlay = overlay;
uint32 companies = this->overlay->GetCompanyMask(); uint32 companies = this->overlay->GetCompanyMask();
for (uint c = 0; c < MAX_COMPANIES; c++) { for (uint c = 0; c < MAX_COMPANIES; c++) {

View File

@ -108,7 +108,7 @@ void ShowLinkGraphLegend();
struct LinkGraphLegendWindow : Window { struct LinkGraphLegendWindow : Window {
public: public:
LinkGraphLegendWindow(WindowDesc *desc, int window_number); LinkGraphLegendWindow(WindowDesc *desc, int window_number);
void SetOverlay(LinkGraphOverlay *overlay); void SetOverlay(std::shared_ptr<LinkGraphOverlay> overlay);
void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override; void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override;
void DrawWidget(const Rect &r, int widget) const override; void DrawWidget(const Rect &r, int widget) const override;
@ -117,7 +117,7 @@ public:
void OnInvalidateData(int data = 0, bool gui_scope = true) override; void OnInvalidateData(int data = 0, bool gui_scope = true) override;
private: private:
LinkGraphOverlay *overlay; std::shared_ptr<LinkGraphOverlay> overlay;
void UpdateOverlayCompanies(); void UpdateOverlayCompanies();
void UpdateOverlayCargoes(); void UpdateOverlayCargoes();

View File

@ -224,7 +224,7 @@ struct MainWindow : Window
NWidgetViewport *nvp = this->GetWidget<NWidgetViewport>(WID_M_VIEWPORT); NWidgetViewport *nvp = this->GetWidget<NWidgetViewport>(WID_M_VIEWPORT);
nvp->InitializeViewport(this, TileXY(32, 32), ScaleZoomGUI(ZOOM_LVL_VIEWPORT)); nvp->InitializeViewport(this, TileXY(32, 32), ScaleZoomGUI(ZOOM_LVL_VIEWPORT));
this->viewport->overlay = new LinkGraphOverlay(this, WID_M_VIEWPORT, 0, 0, 2); this->viewport->overlay = std::make_shared<LinkGraphOverlay>(this, WID_M_VIEWPORT, 0, 0, 2);
this->refresh.SetInterval(LINKGRAPH_DELAY); this->refresh.SetInterval(LINKGRAPH_DELAY);
} }

View File

@ -203,10 +203,7 @@ static Point MapXYZToViewport(const Viewport *vp, int x, int y, int z)
void DeleteWindowViewport(Window *w) void DeleteWindowViewport(Window *w)
{ {
if (w->viewport == nullptr) return; delete w->viewport;
delete w->viewport->overlay;
free(w->viewport);
w->viewport = nullptr; w->viewport = nullptr;
} }
@ -227,7 +224,7 @@ void InitializeWindowViewport(Window *w, int x, int y,
{ {
assert(w->viewport == nullptr); assert(w->viewport == nullptr);
ViewportData *vp = CallocT<ViewportData>(1); ViewportData *vp = new ViewportData();
vp->left = x + w->left; vp->left = x + w->left;
vp->top = y + w->top; vp->top = y + w->top;

View File

@ -31,7 +31,7 @@ struct Viewport {
int virtual_height; ///< height << zoom int virtual_height; ///< height << zoom
ZoomLevel zoom; ///< The zoom level of the viewport. ZoomLevel zoom; ///< The zoom level of the viewport.
LinkGraphOverlay *overlay; std::shared_ptr<LinkGraphOverlay> overlay;
}; };
/** Location information about a sign as seen on the viewport */ /** Location information about a sign as seen on the viewport */