Prevent potential NPE in Microcontroller if TE description packet is requested before the first TE update. Closes #1192.

Synchronize sound updates, may prevent potential CMEs.
This commit is contained in:
Florian Nücke 2015-05-31 14:15:05 +02:00
parent dc80da8d39
commit a64fd8c4ba
3 changed files with 35 additions and 22 deletions

View File

@ -36,9 +36,7 @@ private[oc] class Proxy extends CommonProxy {
api.API.manual = client.Manual
MinecraftForge.EVENT_BUS.register(Sound)
MinecraftForge.EVENT_BUS.register(gui.Icons)
MinecraftForge.EVENT_BUS.register(HighlightRenderer)
}
override def init(e: FMLInitializationEvent) {
@ -76,8 +74,10 @@ private[oc] class Proxy extends CommonProxy {
ClientRegistry.registerKeyBinding(KeyBindings.materialCosts)
ClientRegistry.registerKeyBinding(KeyBindings.clipboardPaste)
MinecraftForge.EVENT_BUS.register(HighlightRenderer)
MinecraftForge.EVENT_BUS.register(PetRenderer)
MinecraftForge.EVENT_BUS.register(ServerRack)
MinecraftForge.EVENT_BUS.register(Sound)
MinecraftForge.EVENT_BUS.register(TextBuffer)
MinecraftForge.EVENT_BUS.register(WirelessNetworkDebugRenderer)
@ -86,6 +86,7 @@ private[oc] class Proxy extends CommonProxy {
FMLCommonHandler.instance.bus.register(Audio)
FMLCommonHandler.instance.bus.register(HologramRenderer)
FMLCommonHandler.instance.bus.register(PetRenderer)
FMLCommonHandler.instance.bus.register(Sound)
FMLCommonHandler.instance.bus.register(TextBufferRenderCache)
}
}

View File

@ -40,12 +40,16 @@ object Sound {
if (Settings.get.soundVolume > 0) {
updateTimer.scheduleAtFixedRate(new TimerTask {
override def run() {
sources.synchronized(updateCallable = Some(() => {
updateVolume()
processQueue()
}))
}
}, 500, 50)
}
private var updateCallable = None: Option[() => Unit]
// Set in init event.
var manager: SoundManager = _
@ -115,7 +119,8 @@ object Sound {
@SubscribeEvent
def onTick(e: ClientTickEvent) {
if (!hasPreloaded && soundSystem != null) {
if (soundSystem != null) {
if (!hasPreloaded) {
hasPreloaded = true
new Thread(new Runnable() {
override def run(): Unit = {
@ -136,6 +141,12 @@ object Sound {
}
})
}
sources.synchronized {
updateCallable.foreach(_())
updateCallable = None
}
}
}
@SubscribeEvent

View File

@ -134,6 +134,7 @@ class Microcontroller extends traits.PowerAcceptor with traits.Hub with traits.C
override protected def connectItemNode(node: Node) {
if (machine.node != null && node != null) {
api.Network.joinNewNetwork(machine.node)
machine.node.connect(node)
}
}