Selaa lähdekoodia

Fixes for Altar of Sacrifice (got broken after artifact rewrite)

Michał W. Urbańczyk 14 vuotta sitten
vanhempi
sitoutus
99a7320e99
2 muutettua tiedostoa jossa 8 lisäystä ja 0 poistoa
  1. 5 0
      client/CPlayerInterface.cpp
  2. 3 0
      client/GUIClasses.cpp

+ 5 - 0
client/CPlayerInterface.cpp

@@ -2059,6 +2059,7 @@ void CPlayerInterface::stopMovement()
 
 void CPlayerInterface::showMarketWindow(const IMarket *market, const CGHeroInstance *visitor)
 {
+	boost::unique_lock<boost::recursive_mutex> un(*pim);
 	if(market->o->ID == 2) //Altar
 	{
 		EMarketMode mode = market->availableModes().front();
@@ -2073,24 +2074,28 @@ void CPlayerInterface::showMarketWindow(const IMarket *market, const CGHeroInsta
 
 void CPlayerInterface::showUniversityWindow(const IMarket *market, const CGHeroInstance *visitor)
 {
+	boost::unique_lock<boost::recursive_mutex> un(*pim);
 	CUniversityWindow *cuw = new CUniversityWindow(visitor, market);
 	GH.pushInt(cuw);
 }
 
 void CPlayerInterface::showHillFortWindow(const CGObjectInstance *object, const CGHeroInstance *visitor)
 {
+	boost::unique_lock<boost::recursive_mutex> un(*pim);
 	CHillFortWindow *chfw = new CHillFortWindow(visitor, object);
 	GH.pushInt(chfw);
 }
 
 void CPlayerInterface::availableArtifactsChanged(const CGBlackMarket *bm /*= NULL*/)
 {
+	boost::unique_lock<boost::recursive_mutex> un(*pim);
 	if(CMarketplaceWindow *cmw = dynamic_cast<CMarketplaceWindow*>(GH.topInt()))
 		cmw->artifactsChanged(false);
 }
 
 void CPlayerInterface::showTavernWindow(const CGObjectInstance *townOrTavern)
 {
+	boost::unique_lock<boost::recursive_mutex> un(*pim);
 	CTavernWindow *tv = new CTavernWindow(townOrTavern);
 	GH.pushInt(tv);
 }

+ 3 - 0
client/GUIClasses.cpp

@@ -2530,6 +2530,7 @@ CTradeWindow::CTradeableItem::CTradeableItem( EType Type, int ID, bool Left, int
 	id = ID;
 	used = LCLICK | HOVER | RCLICK;
 	downSelection = false;
+	hlp = NULL;
 }
 
 void CTradeWindow::CTradeableItem::showAll(SDL_Surface * to)
@@ -3835,6 +3836,8 @@ void CAltarWindow::moveFromSlotToAltar(int slotID, CTradeableItem* altarSlot, co
 		{
 			arts->commonInfo->src.clear();
 			arts->commonInfo->dst.clear();
+			CCS->curh->dragAndDropCursor(NULL);
+			arts->unmarkSlots(false);
 		}
 	}
 }