More memory fixes.

This commit is contained in:
Scott Erickson 2014-02-11 15:38:36 -08:00
parent 2a19da5ba2
commit ac49e5eec1
8 changed files with 31 additions and 10 deletions

View file

@ -32,7 +32,7 @@ module.exports = class LevelBus extends Bus
@fireScriptsRef = @fireRef?.child('scripts')
setSession: (@session) ->
@session.on('change:multiplayer', @onMultiplayerChanged)
@session.on 'change:multiplayer', @onMultiplayerChanged, @
onPoint: ->
return true unless @session?.get('multiplayer')
@ -198,7 +198,7 @@ module.exports = class LevelBus extends Bus
@changedSessionProperties.chat = true
@saveSession()
onMultiplayerChanged: =>
onMultiplayerChanged: ->
@changedSessionProperties.multiplayer = true
@session.updatePermissions()
@changedSessionProperties.permissions = true
@ -217,3 +217,7 @@ module.exports = class LevelBus extends Bus
# don't let what the server returns overwrite changes since the save began
tempSession = new LevelSession _id:@session.id
tempSession.save(patch, {patch: true})
destroy: ->
super()
@session.off 'change:multiplayer', @onMultiplayerChanged, @

View file

@ -55,12 +55,13 @@ module.exports = class LevelLoader extends CocoClass
@supermodel.on 'loaded-one', @onSupermodelLoadedOne
@supermodel.once 'error', @onSupermodelError
@level = @supermodel.getModel(Level, @levelID) or new Level _id: @levelID
levelID = @levelID
@supermodel.shouldPopulate = (model) =>
@supermodel.shouldPopulate = (model) ->
# if left unchecked, the supermodel would load this level
# and every level next on the chain. This limits the population
handles = [model.id, model.get 'slug']
return model.constructor.className isnt "Level" or @levelID in handles
return model.constructor.className isnt "Level" or levelID in handles
@supermodel.populateModel @level

View file

@ -20,6 +20,8 @@ module.exports = class Mark extends CocoClass
destroy: ->
@mark?.parent?.removeChild @mark
super()
@markSprite?.destroy()
@sprite = null
toString: -> "<Mark #{@name}: Sprite #{@sprite?.thang?.id ? 'None'}>"
@ -119,6 +121,7 @@ module.exports = class Mark extends CocoClass
markSprite = new CocoSprite @thangType, @thangType.spriteOptions
markSprite.queueAction 'idle'
@mark = markSprite.displayObject
@markSprite = markSprite
update: (pos=null) ->
return false unless @on

View file

@ -94,3 +94,7 @@ module.exports = class HomeView extends View
didReappear: ->
super()
@turnOnStageUpdates()
destroy: ->
super()
@wizardSprite?.destroy()

View file

@ -13,7 +13,7 @@ module.exports = class MultiplayerModal extends View
constructor: (options) ->
super(options)
@session = options.session
@session.on 'change:multiplayer', @updateLinkSection
@session.on 'change:multiplayer', @updateLinkSection, @
@playableTeams = options.playableTeams
getRenderData: ->
@ -32,7 +32,7 @@ module.exports = class MultiplayerModal extends View
onClickLink: (e) ->
e.target.select()
updateLinkSection: =>
updateLinkSection: ->
multiplayer = @$el.find('#multiplayer').prop('checked')
la = @$el.find('#link-area')
if multiplayer then la.show() else la.hide()
@ -41,3 +41,7 @@ module.exports = class MultiplayerModal extends View
onHidden: ->
multiplayer = Boolean(@$el.find('#multiplayer').prop('checked'))
@session.set('multiplayer', multiplayer)
destroy: ->
super()
@session.off 'change:multiplayer', @updateLinkSection, @

View file

@ -30,6 +30,7 @@ module.exports = class Spell
destroy: ->
@view.destroy()
@tabView.destroy()
@thangs = null
addThang: (thang) ->
if @thangs[thang.id]

View file

@ -35,7 +35,7 @@ module.exports = class SpellView extends View
constructor: (options) ->
super options
@session = options.session
@session.on 'change:multiplayer', @onMultiplayerChanged
@session.on 'change:multiplayer', @onMultiplayerChanged, @
@spell = options.spell
@problems = {}
@writable = false unless me.team in @spell.permissions.readwrite # TODO: make this do anything
@ -123,7 +123,7 @@ module.exports = class SpellView extends View
@ace.setValue @spell.source
@ace.clearSelection()
onMultiplayerChanged: =>
onMultiplayerChanged: ->
if @session.get 'multiplayer'
@createFirepad()
else
@ -502,4 +502,7 @@ module.exports = class SpellView extends View
super()
@firepad?.dispose()
@ace.destroy()
@ace = null
@debugView?.destroy()
@spell = null
@session.off 'change:multiplayer', @onMultiplayerChanged, @

View file

@ -134,7 +134,7 @@ module.exports = class PlayLevelView extends View
@initScriptManager()
@insertSubviews()
@initVolume()
@session.on 'change:multiplayer', @onMultiplayerChanged
@session.on 'change:multiplayer', @onMultiplayerChanged, @
@originalSessionState = _.cloneDeep(@session.get('state'))
@register()
@controlBar.setBus(@bus)
@ -302,7 +302,7 @@ module.exports = class PlayLevelView extends View
$('#pointer').css('opacity', 0.0)
clearInterval(@pointerInterval)
onMultiplayerChanged: (e) =>
onMultiplayerChanged: (e) ->
if @session.get('multiplayer')
@bus.connect()
else
@ -391,3 +391,4 @@ module.exports = class PlayLevelView extends View
@bus?.destroy()
#@instance.save() unless @instance.loading
console.profileEnd?() if PROFILE_ME
@session.off 'change:multiplayer', @onMultiplayerChanged, @