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

pull/507/head
PeterN 1 year ago committed by GitHub
parent c905824248
commit c1077212d7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

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

@ -108,7 +108,7 @@ void ShowLinkGraphLegend();
struct LinkGraphLegendWindow : Window {
public:
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 DrawWidget(const Rect &r, int widget) const override;
@ -117,7 +117,7 @@ public:
void OnInvalidateData(int data = 0, bool gui_scope = true) override;
private:
LinkGraphOverlay *overlay;
std::shared_ptr<LinkGraphOverlay> overlay;
void UpdateOverlayCompanies();
void UpdateOverlayCargoes();

@ -224,7 +224,7 @@ struct MainWindow : Window
NWidgetViewport *nvp = this->GetWidget<NWidgetViewport>(WID_M_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);
}

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

@ -31,7 +31,7 @@ struct Viewport {
int virtual_height; ///< height << zoom
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 */

Loading…
Cancel
Save