There are torturous things surrounding Blizzard's quest system. I use UNIT_QUEST_LOG_CHANGED instead. I use QUEST_LOG_UPDATE just to indicate the quest log is ready to be used, but that is because events differ between startup and UI reload. When I use UNIT_QUEST_LOG_CHANGED I also delay its processing for 0.5 seconds, which I guess your semaphore would mimic. Remember not to believe the number of entries returned by GetNumQuestLogEntries() as closed entries makes things wonky.
|