patch-renderthread-and-main-loop.patch 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. diff --git a/src/renderer/renderer.c b/src/renderer/renderer.c
  2. index 835d99b..aa06055 100644
  3. --- a/src/renderer/renderer.c
  4. +++ b/src/renderer/renderer.c
  5. @@ -20,8 +20,8 @@
  6. #include "../utils/loaders/textureloader.h"
  7. //Main thread loop speeds
  8. -#define paused_msec 100
  9. -#define active_msec 16
  10. +#define paused_msec 800
  11. +#define active_msec 400
  12. /// @todo Use defaultSettings state struct for this.
  13. /// @todo Clean this up, it's ugly.
  14. @@ -47,7 +47,6 @@ void render(struct renderer *r) {
  15. //Main loop (input)
  16. bool threadsHaveStarted = false;
  17. float avgRayTime = 0.0f;
  18. - int pauser = 0;
  19. float finalAvg = 0.0f;
  20. int ctr = 1;
  21. while (r->state.isRendering) {
  22. @@ -66,25 +65,6 @@ void render(struct renderer *r) {
  23. sleepMSec(paused_msec);
  24. }
  25. - //Run the sample printing about 4x/s
  26. - if (pauser == 280 / active_msec) {
  27. - long remainingSampleCount = ((r->state.tileCount - r->state.finishedTileCount) * r->prefs.tileWidth * r->prefs.tileHeight * r->prefs.sampleCount);
  28. - double sps = (1000000.0f/finalAvg) * r->prefs.threadCount;
  29. - long usecTillFinished = remainingSampleCount * finalAvg;
  30. - char rem[32];
  31. - smartTime((0.001 * usecTillFinished) / r->prefs.threadCount, rem);
  32. - float completion = ((float)r->state.finishedTileCount / r->state.tileCount) * 100;
  33. - logr(info, "[%s%.0f%%%s] μs/ray: %.02f, etf: %s, %.02lfMs/s %s \r",
  34. - KBLU,
  35. - KNRM,
  36. - completion,
  37. - finalAvg,
  38. - rem,
  39. - 0.000001*sps,
  40. - r->state.threadStates[0].paused ? "[PAUSED]" : "");
  41. - pauser = 0;
  42. - }
  43. - pauser++;
  44. if (!threadsHaveStarted) {
  45. threadsHaveStarted = true;
  46. @@ -286,7 +266,7 @@ void *renderThread(void *arg) {
  47. //No more tiles to render, exit thread. (render done)
  48. tinfo->threadComplete = true;
  49. tinfo->currentTileNum = -1;
  50. - return 0;
  51. + pthread_exit((void*) arg); //for Serenity, return 0 didn't work
  52. }
  53. struct renderer *newRenderer() {