瀏覽代碼

lol Buildfix

undefined
Benjamin ‘Touky’ Huet Sam Hocevar <sam@hocevar.net> 9 年之前
父節點
當前提交
9acf2e925b
共有 9 個文件被更改,包括 23 次插入155 次删除
  1. +0
    -103
      doc/samples/data/meshviewer_buffer.lua
  2. +3
    -2
      doc/samples/meshviewer/meshviewer.cpp
  3. +1
    -1
      doc/samples/meshviewer/scenesetup.h
  4. +1
    -1
      src/input/controller.h
  5. +1
    -1
      src/lol/sys/all.h
  6. +3
    -2
      src/lol/sys/thread.h
  7. +1
    -0
      src/lol/sys/threadtypes.h
  8. +13
    -12
      src/sys/thread.cpp
  9. +0
    -33
      src/sys/threadbase.h

+ 0
- 103
doc/samples/data/meshviewer_buffer.lua 查看文件

@@ -1,103 +0,0 @@

//SCENE SETUP END

//addlight 0.0 position (1 0 1) color #0ff
//addlight 0.0 position (-0.2 -1 -0.5) color (.0 .2 .5 1)

//custom setmesh "sc#f00 ab 2 ty 1.5 ab 2"

custom setmesh "

//tqw
//CMD TEST
//sc#0f0 asph 1 10
//sc#0f0 ab 10
//sc#0f0 afcb 1 -.2
//sc#0f0 acg 8 1 1 1 2 2 1.5 1.5 -.4
//sc#0f0 as 6 1 2
//sc#0f0 scb#f00 aes 6 1 2 2
//sc#0f0 ac 6 5 2 2 false true true
//sc#0f0 aq 1
//splt 2 smth 4 0 1

//[sc#0f0 ac 3 .5 .4 0 ty .25 [ad 3 .4 sy -1] ty .5 ac 3 1 .1 ty .5 dup [ rz 90 ry 90 scv#00f dup [ ry 90 scv#f00 ] ] ]
//[sc#fff ab .1]

//[sc#0f0 ac 3 .5 .4 0 ty .25 [ad 3 .4 sy -1] ty .5 ac 3 1 .1 ty .5 dup[rz 90 ry 90 scv#00f dup[ry 90 scv#f00]]][sc#fff ab .1]

//[sc#fff ab 1 tx .5 ty .5]
//[sc#fff ab 1 tx -.5 ty -.5]


//[sc#fff ac 3 .5 .4 0 ty .25 [ad 3 .4 sy -1] ty .5 ac 3 1 .1 ty .5 [ad 3 .1 sy -1] ty 1]

//smth 3 1 1 smth 8 0 1
//[sc#fff loop 4 [ [loop 4 [ab 1 tx 2]] tz 2]]


//[sc#f00 scb#f00 ac 3 .5 .4 0 ty .25 [ad 3 .4 sy -1] ty .5 ac 3 1 .1 .1 ty .5 rz -90]
//[sc#00f scb#00f ac 3 .5 .4 0 ty .25 [ad 3 .4 sy -1] ty .5 ac 3 1 .1 .1 ty .5 rx 90]
//[sc#f00 ab .2 tx 1]
//[sc#0f0 ab .2 ty 1]
//[sc#00f ab .2 tz 1]
//sc#0f0 ab 2 ty 1.5 ab 2
//sc#00f ab 2 ty 1.5 ab 2

//sc#00f tqw lp 5[tz 11 [lp 6 [tx 5 ty 5 afcb 10 -1 ]]] tz -22

// tqw
sc#f00 ab 10
//tz 5
//vm
// splt 1
// rj .2
// splt 1
// rj .2
// smth 1 0 1

//[sc#66f afcb(10) .25tx0]csgs[sc#fff afcb(10).25t(2)][[sc#6f6 afcb(7).25]csgs[sc#fff afcb(7).25t(1.5)]][[sc#f44 asph4 12t(-2.5)]csga[sc#fff afcb(7).25t(1.4)]csgs[sc#fff afcb(7).25t(2.5)]][[sc#ff0 ato6 2.5 1.2rx90tz-1.25tx-.9][sc#ff0 ab.5 2.1 .5dup[rz90sx.5ty-.8tx-.28]ty.55tx.25tz-.4taz1 1sy.8sx.8ty-.55tx-.25tz.4tz-1.2tx1.2]tz1.25tx1.25dup[sx-1ry90]tz-1.25tx-1.25]

"

//splt 0
//test
//[sc#f8f ab 1 splt 4 twy 90]


// splt 5 twy 90 0
//[sc#f8f afcb 10 10 10 .25 tx 0 splt 4 twy 1.6 0 ]
//sc#fff
//[afcb 1 1 1 -.1 tx 1]
//[afcb 1 1 1 -.1 tx 0]
//[afcb 1 1 1 -.1 tx -1]
//[[afcb 1 1 1 -.1 tx 1]
//[afcb 1 1 1 -.1 tx 0]
//[afcb 1 1 1 -.1 tx -1]tz 1]
//[[afcb 1 1 1 -.1 tx 1]
//[afcb 1 1 1 -.1 tx 0]
//[afcb 1 1 1 -.1 tx -1]tz -1]
//[afcb 3 .2 3 -.05 ty -.6]


//[sc#fff scb#fff ato 20 8 12 rx0]
//[sc#fff scb#fff acg 8 2 5 1 6 8 4 2 .1 1]

//[sc#fff ab 4 4 4 ]//twy 45 0 bdxy 90 0 splt 5 tz 2
//[sc#88f ab 4 4 4 tx 4 ab 4 4 4 tx -2 tax .4 .4 0]
//[sc#88f ab .25 1 1 tx .25 ab .25 1 1 tx .25 ab .25 1 1 tx .25 ab .25 1 1 tx .125 stx 10 0 0]
// tax -2 0 0 0
//[sc#88f ab 4 4 4 tx 4 ab 4 4 4 tx -2 shz 1 0 0 0]
//[sc#fff asph 4 4]
//[sc#ff2 asph 4 4 tax .4 .4 0]
//[sc#ff2 asph 2 4]
//[sc#fff acap 1 4 4]
//[sc#fff scb#fff ac 10 4 4 4 0 0 1]
//[sc#ff2 scb#ff2 ad 10 4 0]
//[sc#fff scb#fff at 4 1]
//[sc#fff scb#000 aq 4 1]
//[sc#fff scb#2ff aes 5 3 6 2]
//[sc#fff scb#2ff as 4 2 4 0 0]
//[sc#fff scb#fff acg 2 10 .1 .1 .4 .4 .1 .1 0 1]

//[sc#ff2 asph 2 10 10 10]
//[sc#400 asph 2 10 10 10 t 2 2 2 csgs]

+ 3
- 2
doc/samples/meshviewer/meshviewer.cpp 查看文件

@@ -147,7 +147,7 @@ void MeshViewer::Start()
m_entities << (m_file_check = new FileUpdateTester());
m_file_status = m_file_check->RegisterFile(m_file_name);

m_entities << (m_file_loader = new DefaultThreadManager(1, 1));
//m_entities << (m_file_loader = new DefaultThreadManager(1, 1));

//Camera setup
m_camera = new Camera();
@@ -222,7 +222,7 @@ void MeshViewer::TickGame(float seconds)

//Check file update
ASSERT(m_file_status);
if (m_file_status->HasUpdated())
if (false && m_file_status->HasUpdated())
{
MeshViewerLoadJob* job = GetLoadJob(m_file_name);
if (!job)
@@ -230,6 +230,7 @@ void MeshViewer::TickGame(float seconds)
}

//Check work done
if (false)
{
array<ThreadJob*> result;
m_file_loader->GetWorkResult(result);


+ 1
- 1
doc/samples/meshviewer/scenesetup.h 查看文件

@@ -155,7 +155,7 @@ public:
SceneSetupLuaLoader();
virtual ~SceneSetupLuaLoader();
//Virtual Store lua object ------------------------------------------------
virtual void Store(LuaObject* obj) { }
virtual void Store(LuaObject* obj);
array<SceneSetupLuaObject*>& GetInstances();

//-------------------------------------------------------------------------


+ 1
- 1
src/input/controller.h 查看文件

@@ -240,7 +240,7 @@ public:

bool IsEmpty() const
{
return !(GetKeyCount() && GetAxisCount());
return !GetKeyCount() && !GetAxisCount();
}
int GetKeyCount() const
{


+ 1
- 1
src/lol/sys/all.h 查看文件

@@ -10,9 +10,9 @@

#pragma once

#include <lol/sys/timer.h>
#include <lol/sys/thread.h>
#include <lol/sys/threadtypes.h>
#include <lol/sys/init.h>
#include <lol/sys/file.h>
#include <lol/sys/timer.h>


+ 3
- 2
src/lol/sys/thread.h 查看文件

@@ -130,7 +130,7 @@ protected:
void StopThreads(int nb);

//Work stuff
bool AddWork(ThreadJob* job);
bool AddWork(ThreadJob* job, bool force = false);

//Fetch Results
bool FetchResult(array<ThreadJob*>& results);
@@ -145,10 +145,11 @@ protected:
int m_thread_count;
int m_thread_min;
array<thread*> m_threads;
array<ThreadJob*> m_job_dispatch;
private:
queue<ThreadStatus> m_spawnqueue, m_donequeue;
queue<ThreadJob*> m_jobqueue;
queue<ThreadJob*> m_resultqueue;
array<ThreadJob*> m_job_dispatch;
};

} /* namespace lol */


+ 1
- 0
src/lol/sys/threadtypes.h 查看文件

@@ -50,6 +50,7 @@ class FileUpdateTester : public BaseThreadManager
public:
class Status
{
friend class FileUpdateTester;
protected:
mutex m_mutex;
long int m_time = 0;


+ 13
- 12
src/sys/thread.cpp 查看文件

@@ -41,7 +41,7 @@ bool BaseThreadManager::Start()
return false;

//Add minimum threads
m_threads.Resize(m_thread_count);
m_threads.reserve(m_thread_count);
AddThreads(m_thread_min);

return true;
@@ -91,11 +91,12 @@ void BaseThreadManager::StopThreads(int nb)
}

//Work stuff
bool BaseThreadManager::AddWork(ThreadJob* job)
bool BaseThreadManager::AddWork(ThreadJob* job, bool force)
{
if (m_jobqueue.try_push(job))
return true;
return false;
if (!force)
return m_jobqueue.try_push(job);
m_jobqueue.push(job);
return true;
}

//----
@@ -110,20 +111,20 @@ bool BaseThreadManager::FetchResult(array<ThreadJob*>& results)
//Base thread work function
void BaseThreadManager::BaseThreadWork()
{
#if !LOL_FEATURE_THREADS
#if LOL_FEATURE_THREADS
//Register that the thread has started
m_spawnqueue.push(ThreadStatus::THREAD_STARTED);
for ( ; ; )
#endif //!LOL_FEATURE_THREADS
#endif //LOL_FEATURE_THREADS
{
//Try to retrieve a job
ThreadJob* job = m_jobqueue.pop();
//Stop thread
if (job->GetJobType() == ThreadJobType::THREAD_STOP)
{
#if !LOL_FEATURE_THREADS
#if LOL_FEATURE_THREADS
break;
#endif //!LOL_FEATURE_THREADS
#endif //LOL_FEATURE_THREADS
}
//Or work
else if (*job == ThreadJobType::WORK_TODO)
@@ -135,10 +136,10 @@ void BaseThreadManager::BaseThreadWork()
m_resultqueue.push(job);
}
}
#if !LOL_FEATURE_THREADS
#if LOL_FEATURE_THREADS
//Register that the thread has stopped
m_donequeue.push(ThreadStatus::THREAD_STOPPED);
#endif //!LOL_FEATURE_THREADS
#endif //LOL_FEATURE_THREADS
}

//----
@@ -150,7 +151,7 @@ void BaseThreadManager::TickGame(float seconds)
Start();

//Dispatch work task
while (m_job_dispatch.Count() > 0 && AddWork(m_job_dispatch.Last()))
while (m_job_dispatch.count() > 0 && AddWork(m_job_dispatch.last()))
m_job_dispatch.pop();

//Execute one task per frame if thread are not available


+ 0
- 33
src/sys/threadbase.h 查看文件

@@ -131,39 +131,6 @@ public:

current_count = (ptrdiff_t)m_count;

#if defined HAVE_PTHREAD_H
/* If there were poppers waiting, signal the "empty" cond var. */
if (m_poppers)
pthread_cond_signal(&m_empty_cond);
pthread_mutex_unlock(&m_mutex);
#elif defined _WIN32
LeaveCriticalSection(&m_mutex);
ReleaseSemaphore(m_full_sem, 1, nullptr);
#endif
return current_count;
}

ptrdiff_t try_count()
{
ptrdiff_t current_count = 0;

#if defined HAVE_PTHREAD_H
pthread_mutex_lock(&m_mutex);
/* If queue is full, wait on the "full" cond var. */
if (m_count == CAPACITY)
{
pthread_mutex_unlock(&m_mutex);
return false;
}
#elif defined _WIN32
DWORD status = WaitForSingleObject(m_empty_sem, 0);
if (status == WAIT_TIMEOUT)
return 0;
EnterCriticalSection(&m_mutex);
#endif

current_count = (ptrdiff_t)m_count;

#if defined HAVE_PTHREAD_H
/* If there were poppers waiting, signal the "empty" cond var. */
if (m_poppers)


Loading…
取消
儲存