From f4ae58dda21e1505fdfaf9d30c1a11d2263c3e59 Mon Sep 17 00:00:00 2001 From: Shoghi Cervantes Date: Wed, 10 Sep 2014 15:11:56 +0200 Subject: [PATCH] Removed pthreads workarounds --- src/pocketmine/Thread.php | 2 +- src/pocketmine/Worker.php | 2 +- src/pocketmine/level/generator/GenerationThread.php | 2 +- src/pocketmine/plugin/PluginManager.php | 1 + src/pocketmine/scheduler/AsyncWorker.php | 8 ++++++-- 5 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/pocketmine/Thread.php b/src/pocketmine/Thread.php index 104add953..6a06a0b66 100644 --- a/src/pocketmine/Thread.php +++ b/src/pocketmine/Thread.php @@ -29,6 +29,6 @@ abstract class Thread extends \Thread{ public final function start($options = PTHREADS_INHERIT_ALL){ ThreadManager::getInstance()->add($this); - return parent::start($options & ~PTHREADS_INHERIT_CLASSES); + return parent::start($options); } } \ No newline at end of file diff --git a/src/pocketmine/Worker.php b/src/pocketmine/Worker.php index 78f9f3bd9..b6b8e890a 100644 --- a/src/pocketmine/Worker.php +++ b/src/pocketmine/Worker.php @@ -29,6 +29,6 @@ abstract class Worker extends \Worker{ public final function start($options = PTHREADS_INHERIT_ALL){ ThreadManager::getInstance()->add($this); - return parent::start($options & ~PTHREADS_INHERIT_CLASSES); + return parent::start($options); } } \ No newline at end of file diff --git a/src/pocketmine/level/generator/GenerationThread.php b/src/pocketmine/level/generator/GenerationThread.php index d30f34b13..58a6de654 100644 --- a/src/pocketmine/level/generator/GenerationThread.php +++ b/src/pocketmine/level/generator/GenerationThread.php @@ -92,7 +92,7 @@ class GenerationThread extends Thread{ error_reporting(-1); //Load removed dependencies, can't use require_once() foreach($this->loadPaths as $name => $path){ - if(!class_exists($name, false) and !class_exists($name, false)){ + if(!class_exists($name, false) and !interface_exists($name, false)){ require($path); } } diff --git a/src/pocketmine/plugin/PluginManager.php b/src/pocketmine/plugin/PluginManager.php index 994f1e451..2fa15b231 100644 --- a/src/pocketmine/plugin/PluginManager.php +++ b/src/pocketmine/plugin/PluginManager.php @@ -433,6 +433,7 @@ class PluginManager{ */ public function unsubscribeFromPermission($permission, Permissible $permissible){ if(isset($this->permSubs[$permission])){ + $this->permSubs[$permission][spl_object_hash($permissible)]->release(); unset($this->permSubs[$permission][spl_object_hash($permissible)]); } } diff --git a/src/pocketmine/scheduler/AsyncWorker.php b/src/pocketmine/scheduler/AsyncWorker.php index 690599d01..7b8530f9d 100644 --- a/src/pocketmine/scheduler/AsyncWorker.php +++ b/src/pocketmine/scheduler/AsyncWorker.php @@ -26,8 +26,12 @@ use pocketmine\Worker; class AsyncWorker extends Worker{ public function run(){ - require(\pocketmine\PATH . "src/spl/ClassLoader.php"); - require(\pocketmine\PATH . "src/spl/BaseClassLoader.php"); + if(!interface_exists("ClassLoader", false)){ + require(\pocketmine\PATH . "src/spl/ClassLoader.php"); + } + if(!class_exists("BaseClassLoader", false)){ + require(\pocketmine\PATH . "src/spl/BaseClassLoader.php"); + } $autoloader = new \BaseClassLoader(); $autoloader->addPath(\pocketmine\PATH . "src"); $autoloader->register(true);