Skip to content
Snippets Groups Projects
  1. Dec 07, 2015
    • ShadowNinja's avatar
      Fix Event implementation · 696148e2
      ShadowNinja authored
      On non-windows platforms this just used a semaphore,
      which meant that multiple calls to signal() would
      result in wait() returning multiple times.
      696148e2
  2. Nov 08, 2015
  3. Nov 04, 2015
    • est31's avatar
      Time: use locks again · 8f039956
      est31 authored
      The Atomic implementation was only partially correct, and was very complex.
      Use locks for sake of simplicity, following KISS principle.
      Only remaining atomic operation use is time of day speed, because that
      really is only read + written.
      
      Also fixes a bug with m_time_conversion_skew only being decremented, never
      incremented (Regresion from previous commit).
      
      atomic.h changes:
      	* Add GenericAtomic<T> class for non-integral types like floats.
      
      	* Remove some last remainders from atomic.h of the volatile use.
      8f039956
  4. Nov 03, 2015
    • est31's avatar
      Atomic: cleanup and add more operations · abc354a5
      est31 authored
      Cleanup:
      	* Remove volatile keyword, it is of no use at all. [1]
      	* Remove the enable_if stuff. It had no use either.
      	  The most likely explanation why the enable_if stuff was there is that it
      	  was used as something like a STATIC_ASSERT to verify that sizeof(T) is not larger
      	  than sizeof(void *). This check however is not just misplaced in a place where we
      	  already use a lock, it isn't needed at all, as gcc will just generate a call to
      	  to the runtime if it compiles for platforms that don't support atomic instructions.
      	  The runtime will then most likely use locks.
      
      Code style fixes:
      	* Prefix name of the mutex
      	* Line everything up nicely, where it makes things look nice
      	* Filling \ continuations with spaces is code style rule
      
      Added operations on the atomic var:
      	* Compare and swap
      	* Swap
      
      The second point of the cleanup also fixes the Android build of the next commit.
      
      [1]: http://stackoverflow.com/q/2484980
      abc354a5
  5. Nov 02, 2015
  6. Nov 01, 2015
    • kwolekr's avatar
      Fix Lua scripting synchronization · 52e5b513
      kwolekr authored
      For several years now, the lua script lock has been completely broken.
      This commit fixes the main issue (creation of a temporary rather than
      scoped object), and fixes a subsequent deadlock issue caused by
      nested script API calls by adding support for recursive mutexes.
      52e5b513
  7. Oct 31, 2015
  8. Oct 28, 2015
    • kwolekr's avatar
      Add DISABLE_CLASS_COPY macro (and use it) · c56d7fe0
      kwolekr authored
      Use this macro to disallow copying of an object using the assignment
      operator or copy constructor.  This catches otherwise silent-but-deadly
      mistakes such as "ServerMap map = env->getMap();" at compile time.
      
      If so desired, it is still possible to copy a class, but it now requires
      an explicit call to memcpy or std::copy.
      c56d7fe0
  9. Oct 24, 2015
  10. Oct 17, 2015
  11. Oct 14, 2015
    • ShadowNinja's avatar
      Refactor logging · 2139d7d4
      ShadowNinja authored
      - Add warning log level
      - Change debug_log_level setting to enumeration string
      - Map Irrlicht log events to MT log events
      - Encapsulate log_* functions and global variables into a class, Logger
      - Unify dstream with standard logging mechanism
      - Unify core.debug() with standard core.log() script API
      2139d7d4
  12. Oct 03, 2015
  13. Sep 06, 2015
  14. Aug 24, 2015
    • ShadowNinja's avatar
      Clean up threading · e4bff8be
      ShadowNinja authored
        * Rename everything.
          * Strip J prefix.
          * Change UpperCamelCase functions to lowerCamelCase.
        * Remove global (!) semaphore count mutex on OSX.
        * Remove semaphore count getter (unused, unsafe, depended on internal
          API functions on Windows, and used a hack on OSX).
        * Add `Atomic<type>`.
        * Make `Thread` handle thread names.
        * Add support for C++11 multi-threading.
        * Combine pthread and win32 sources.
        * Remove `ThreadStarted` (unused, unneeded).
        * Move some includes from the headers to the sources.
        * Move all of `Event` into its header (allows inlining with no new includes).
        * Make `Event` use `Semaphore` (except on Windows).
        * Move some porting functions into `Thread`.
        * Integrate logging with `Thread`.
        * Add threading test.
      e4bff8be
Loading