diff options
-rw-r--r-- | GdiRadarLib/GdiRadar.cpp | 41 | ||||
-rw-r--r-- | GdiRadarLib/GdiRadar.h | 1 |
2 files changed, 34 insertions, 8 deletions
diff --git a/GdiRadarLib/GdiRadar.cpp b/GdiRadarLib/GdiRadar.cpp index 89e6912..4c5ad6b 100644 --- a/GdiRadarLib/GdiRadar.cpp +++ b/GdiRadarLib/GdiRadar.cpp @@ -165,7 +165,9 @@ static LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM l case WM_PAINT: { +#ifdef _DEBUG DBG("%s\n", "WM_PAINT"); +#endif PAINTSTRUCT ps; BeginPaint(hwnd, &ps); @@ -196,10 +198,14 @@ static LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM l DBG("%s\n", "WM_CHAR"); break; case WM_MOVE: +#ifdef _DEBUG DBG("%s\n", "WM_MOVE"); +#endif break; case WM_SIZE: +#ifdef _DEBUG DBG("%s\n", "WM_SIZE"); +#endif GetClientRect(hwnd, &drawing->DC_Dimensions); CalcGameToWindowDimensions(wnd_ctx); break; @@ -344,9 +350,18 @@ void gdi_radar_clear_entities(struct gdi_radar_context * const ctx) ctx->entities.clear(); } -bool gdi_radar_redraw_if_necessary(struct gdi_radar_context * const ctx) +static bool gdi_radar_is_redraw_necessary(struct gdi_radar_context * const ctx, + double * cpu_time_used) +{ + clock_t end = clock(); + + *cpu_time_used = ((double)(end - ctx->lastTimeUpdated)) / CLOCKS_PER_SEC; + + return *cpu_time_used > ctx->minimumUpdateTime; +} + +bool gdi_radar_check_if_redraw_necessary(struct gdi_radar_context * const ctx) { - clock_t end; double cpu_time_used; if (!ctx) @@ -354,13 +369,19 @@ bool gdi_radar_redraw_if_necessary(struct gdi_radar_context * const ctx) return false; } - end = clock(); - cpu_time_used = ((double)(end - ctx->lastTimeUpdated)) / CLOCKS_PER_SEC; -#ifdef _DEBUG - DBG("Time past after last update: %lf\n", cpu_time_used); -#endif + return gdi_radar_is_redraw_necessary(ctx, &cpu_time_used); +} + +bool gdi_radar_redraw_if_necessary(struct gdi_radar_context * const ctx) +{ + double cpu_time_used; + + if (!ctx) + { + return false; + } - if (cpu_time_used > ctx->minimumUpdateTime) { + if (gdi_radar_is_redraw_necessary(ctx, &cpu_time_used)) { if (cpu_time_used > ctx->minimumUpdateTime * ctx->maximumRedrawFails) { DBG("ERROR: Redraw failed for the last %llu times!\n", ctx->maximumRedrawFails); @@ -369,6 +390,10 @@ bool gdi_radar_redraw_if_necessary(struct gdi_radar_context * const ctx) RedrawWindow(ctx->myDrawWnd, NULL, NULL, RDW_ERASE | RDW_INVALIDATE | RDW_ALLCHILDREN); } +#ifdef _DEBUG + DBG("Time past after last update: %lf\n", cpu_time_used); +#endif + return true; } diff --git a/GdiRadarLib/GdiRadar.h b/GdiRadarLib/GdiRadar.h index 9190174..63a2da3 100644 --- a/GdiRadarLib/GdiRadar.h +++ b/GdiRadarLib/GdiRadar.h @@ -47,6 +47,7 @@ void gdi_radar_add_entity(struct gdi_radar_context * const ctx, void gdi_radar_set_entity(struct gdi_radar_context * const ctx, size_t i, struct entity * const ent); void gdi_radar_clear_entities(struct gdi_radar_context * const ctx); +bool gdi_radar_check_if_redraw_necessary(struct gdi_radar_context * const ctx); bool gdi_radar_redraw_if_necessary(struct gdi_radar_context * const ctx); void gdi_radar_set_game_dimensions(struct gdi_radar_context * const ctx, UINT64 GameMapWidth, UINT64 GameMapHeight, bool StickToBottom = true); |