Thread Tools Display Modes
08/31/15, 02:22 PM   #21
Baertram
Super Moderator
 
Baertram's Avatar
WoWInterface Super Mod
AddOn Author - Click to view addons
Join Date: Mar 2014
Posts: 4,963
Ok, as I'm not using FilterIt, and still got guild bank crashes at the live servers:

What other addon could be the crash initiator here?
I'm not using any "offline bank" addon like InventoryInsight or MobileBank.
Only using AdvancedFilters, Roomba, Stacked (only sometimes, so this shouldn't be the reason).

The crash happens as I open the guild bank the 3rd or 4th time during gaming.
Never got a crash so far after gaming a long time and opening the guild bank the 1st time then.

It only happens (afai could simulate it):
-if I'm at the withdraw tab (in rare cases it will also crash at the deposit tab)
-if there are many items shown (like the materials inventory tab is active)
-if I change between the inventory tabs (example: from weapons to materials)
-sometimes it crashes directly if I open the guild bank (and if the guild bank was opened before and closed with the withdraw panel, material tab e.g., active -> If I reopen the guild bank then the withdraw panel + material tab will be shown directly and the crash happens)

For me it looks like some bug with any addon which is reacting on an inventory tab change (as the item lists get refreshed).

I'll do some more tests with only a few addons activated. Hope it happens quick then so I don#t need to test for hours until it happens first again^^ Will post my results here afterwards.
If you got any ideas (maybe the FilterIt bug is a bug in other addons too?) feel free to post them.
Thanks!
  Reply With Quote
08/31/15, 04:00 PM   #22
circonian
AddOn Author - Click to view addons
Join Date: May 2014
Posts: 613
Originally Posted by Baertram View Post
I'll do some more tests with only a few addons activated. Hope it happens quick then so I don#t need to test for hours until it happens first again^^ Will post my results here afterwards.
If you got any ideas (maybe the FilterIt bug is a bug in other addons too?) feel free to post them.
Thanks!
Filter it was registering:
Lua Code:
  1. SHARED_INVENTORY:RegisterCallback("FullInventoryUpdate", OnSharedFullInventoryUpdate)
and when the guild bank opens it fires like 6-7 times causing way to much code to run. I just made some changes so my code did not need to run so much.

My best guess would be check what code is running when the list is Updated. UpdateList(), EVENT_INVENTORY_FULL_UPDATE, (shared) FullInventoryUpdate, exc...
  Reply With Quote
10/30/15, 05:59 PM   #23
Ayantir
 
Ayantir's Avatar
AddOn Author - Click to view addons
Join Date: Jul 2014
Posts: 1,019
Little update, because I still see some code with function linked to event and which execute code without doing any checks, so a little collection :



Lua Code:
  1. if bagId ~= BAG_BACKPACK then return end --handle just backpack updates
Here, add the desired bags. Don't forget that moving an item to another bag fires twice the event.



Lua Code:
  1. if updateReason ~= INVENTORY_UPDATE_REASON_DEFAULT then return end --ignore durability/dye update
At EACH damage or xp gained, the event can fire.



Lua Code:
  1. if IsUnderArrest() then return end -- Avoid check when a guard destroy stolen items
Game will check all your backpack.



Lua Code:
  1. if Roomba and Roomba.WorkInProgress and Roomba.WorkInProgress() then return end --support for Roomba
Some addons may working, please consider them and disable your code while they are doing their stuff.



Lua Code:
  1. if IsItemJunk(bagId, slotId) then return end --we do not need to check junk again
Especially for item junkers. Do not do many checks, if it's pointless



If you need this event to get the slotId for your loot, just try to do a single thing in the function :
EVENT_SINGLE_SLOT_UPDATE always fires before EVENT_LOOT_RECEIVED, so this code will always be valid.
Lua Code:
  1. function LootDrop:OnSingleSlotUpdate(_, bagId, slotId, _, _, updateReason)
  2.    
  3.     if bagId == BAG_BACKPACK and updateReason == INVENTORY_UPDATE_REASON_DEFAULT and IsUnderArrest() == false then
  4.        
  5.         self.lastSingleSlotUpdateSlotId = slotId
  6.  
  7.     end
  8. end



You can also Unregister the event listener while .... interacting with npc, opening bank, guild bank, be in combat, open mailbox, it depends of your needs!
  Reply With Quote

ESOUI » Developer Discussions » General Authoring Discussion » Crashes and SINGLE_SLOT_UPDATE

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off