(svn r16745) -Fix [FS#3011]: invalidate JoinStation window after removing item from the pool

pull/155/head
smatz 15 years ago
parent 4764c73f1c
commit aa4ccab6a8

@ -108,6 +108,7 @@ DEFINE_POOL_METHOD(void)::FreeItem(size_t index)
this->data[index] = NULL;
this->first_free = min(this->first_free, index);
this->items--;
if (!this->cleaning) Titem::PostDestructor(index);
}
DEFINE_POOL_METHOD(void)::CleanPool()

@ -221,6 +221,15 @@ struct Pool {
{
return Tpool->items;
}
/**
* Dummy function called after destructor of each member.
* If you want to use it, override it in PoolItem's subclass.
* @param index index of deleted item
* @note when this function is called, PoolItem::Get(index) == NULL.
* @note it's called only when !CleaningPool()
*/
static FORCEINLINE void PostDestructor(size_t index) { }
};
private:

@ -94,8 +94,6 @@ Station::~Station()
/* Remove all news items */
DeleteStationNews(this->index);
InvalidateWindowData(WC_SELECT_STATION, 0, 0);
for (CargoID c = 0; c < NUM_CARGO; c++) {
goods[c].cargo.Truncate(0);
}
@ -108,6 +106,16 @@ Station::~Station()
}
/**
* Invalidating of the JoinStation window has to be done
* after removing item from the pool.
* @param index index of deleted item
*/
void Station::PostDestructor(size_t index)
{
InvalidateWindowData(WC_SELECT_STATION, 0, 0);
}
/**
* Get the primary road stop (the first road stop) that the given vehicle can load/unload.
* @param v the vehicle to get the first road stop for

@ -186,6 +186,8 @@ public:
{
return Station::Get(GetStationIndex(tile));
}
static void PostDestructor(size_t index);
};
#define FOR_ALL_STATIONS_FROM(var, start) FOR_ALL_ITEMS_FROM(Station, station_index, var, start)

Loading…
Cancel
Save