[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[freetype2-demos] master 8800bc9 2/4: [graph/win32] Clean up refresh.
From: |
Alexei Podtelezhnikov |
Subject: |
[freetype2-demos] master 8800bc9 2/4: [graph/win32] Clean up refresh. |
Date: |
Thu, 25 Jun 2020 23:39:36 -0400 (EDT) |
branch: master
commit 8800bc9e1d803b08696c44d43a1ebb1dbe59f1a7
Author: Alexei Podtelezhnikov <apodtele@gmail.com>
Commit: Alexei Podtelezhnikov <apodtele@gmail.com>
[graph/win32] Clean up refresh.
* graph/win32/grwin32.c (gr_win32_surface_refresh_rectangle): Copy
only requested rectangle, remove dead code.
---
ChangeLog | 7 +++++++
graph/win32/grwin32.c | 42 ++++++++++++++++++++++--------------------
2 files changed, 29 insertions(+), 20 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 2b5422c..a994772 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
2020-06-25 Alexei Podtelezhnikov <apodtele@gmail.com>
+ [graph/win32] Clean up refresh.
+
+ * graph/win32/grwin32.c (gr_win32_surface_refresh_rectangle): Copy
+ only requested rectangle, remove dead code.
+
+2020-06-25 Alexei Podtelezhnikov <apodtele@gmail.com>
+
* graph/x11/grx11.c (gr_x11_device_init): Fix up 03707489a839.
2020-06-24 Alexei Podtelezhnikov <apodtele@gmail.com>
diff --git a/graph/win32/grwin32.c b/graph/win32/grwin32.c
index c895ed6..660b28f 100644
--- a/graph/win32/grwin32.c
+++ b/graph/win32/grwin32.c
@@ -143,10 +143,10 @@ gr_win32_surface_refresh_rectangle(
int w,
int h )
{
- int row_bytes, delta;
- LPBITMAPINFO pbmi = surface->pbmi;
- HANDLE window = surface->window;
- grBitmap* bitmap = &surface->root.bitmap;
+ int delta;
+ RECT rect;
+ HANDLE window = surface->window;
+ grBitmap* bitmap = &surface->root.bitmap;
LOG(( "gr_win32_surface_refresh_rectangle: ( %p, %d, %d, %d, %d )\n",
(long)surface, x, y, w, h ));
@@ -176,13 +176,10 @@ gr_win32_surface_refresh_rectangle(
if ( w <= 0 || h <= 0 )
return;
- /* now, perform the blit */
- row_bytes = surface->root.bitmap.pitch;
- if ( row_bytes < 0 )
- row_bytes = -row_bytes;
-
- if ( row_bytes * 8 != pbmi->bmiHeader.biWidth * pbmi->bmiHeader.biBitCount )
- pbmi->bmiHeader.biWidth = row_bytes * 8 / pbmi->bmiHeader.biBitCount;
+ rect.left = x;
+ rect.top = y;
+ rect.right = x + w;
+ rect.bottom = y + h;
#ifdef SWIZZLE
{
@@ -204,20 +201,23 @@ gr_win32_surface_refresh_rectangle(
int read_pitch = bitmap->pitch;
unsigned char* write_line = (unsigned char*)surface->bgrBitmap.buffer;
int write_pitch = surface->bgrBitmap.pitch;
- int height = bitmap->rows;
- int width = bitmap->width;
if ( read_pitch < 0 )
- read_line -= ( height - 1 ) * read_pitch;
+ read_line -= ( bitmap->rows - 1 ) * read_pitch;
if ( write_pitch < 0 )
- write_line -= ( height - 1 ) * write_pitch;
+ write_line -= ( bitmap->rows - 1 ) * write_pitch;
+
+ read_line += y * read_pitch;
+ write_line += y * write_pitch;
if ( bitmap->mode == gr_pixel_mode_gray )
{
- for ( ; height > 0; height-- )
+ read_line += x;
+ write_line += x;
+ for ( ; h > 0; h-- )
{
- memcpy( write_line, read_line, width );
+ memcpy( write_line, read_line, w );
read_line += read_pitch;
write_line += write_pitch;
@@ -225,10 +225,12 @@ gr_win32_surface_refresh_rectangle(
}
else
{
- for ( ; height > 0; height-- )
+ read_line += 3 * x;
+ write_line += 3 * x;
+ for ( ; h > 0; h-- )
{
unsigned char* read = read_line;
- unsigned char* read_limit = read + 3 * width;
+ unsigned char* read_limit = read + 3 * w;
unsigned char* write = write_line;
for ( ; read < read_limit; read += 3, write += 3 )
@@ -244,7 +246,7 @@ gr_win32_surface_refresh_rectangle(
}
}
- InvalidateRect( window, NULL, FALSE );
+ InvalidateRect( window, &rect, FALSE );
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [freetype2-demos] master 8800bc9 2/4: [graph/win32] Clean up refresh.,
Alexei Podtelezhnikov <=