### Eclipse Workspace Patch 1.0 #P ManiaLive Index: libraries/ManiaLive/Gui/Windowing/Window.php =================================================================== --- libraries/ManiaLive/Gui/Windowing/Window.php (revision 1372) +++ libraries/ManiaLive/Gui/Windowing/Window.php (working copy) @@ -51,6 +51,7 @@ { private $id; private $callbacks; + private $callback_hashes; private $login; private $is_hidden; private $dialog; @@ -233,16 +234,25 @@ // add parameters to callback ... $callback = array($callback, $args); - + + // create hash of the callback! + $callobject = new \stdClass(); + $callobject->object = spl_object_hash($callback[0][0]); + $callobject->method = $callback[0][1]; + $callobject->args = $callback[1]; + + // TODO generate a multidimensional array. first level:object hash, second level: method name, third level: parameters hash + $hash = md5(serialize($callobject)); + // search if this callback has an id yet ... - $action = array_search($callback, $this->callbacks); - if ($action === false) + if (!isset($this->callback_hashes[$hash])) { $action = IDGenerator::generateActionID($this->id); + $this->callback_hashes[$hash] = $action; $this->callbacks[$action] = $callback; } - return $action; + return $this->callback_hashes[$hash]; } /**