From 3ba03eab45e3d0bb4ae06a7a728ca6f8408ba48a Mon Sep 17 00:00:00 2001 From: doursse Date: Sun, 30 Mar 2008 16:06:21 +0000 Subject: [PATCH] remove the explicit use of the DirectDraw interface by using the c++ API SVN revision: 34153 --- .../engines/software_16_ddraw/Makefile.am | 8 ++-- ...s_ddraw_buffer.c => evas_ddraw_buffer.cpp} | 37 +++++++++---------- ...{evas_ddraw_main.c => evas_ddraw_main.cpp} | 36 ++++++------------ .../engines/software_16_ddraw/evas_engine.h | 11 ++++++ 4 files changed, 45 insertions(+), 47 deletions(-) rename legacy/evas/src/modules/engines/software_16_ddraw/{evas_ddraw_buffer.c => evas_ddraw_buffer.cpp} (61%) rename legacy/evas/src/modules/engines/software_16_ddraw/{evas_ddraw_main.c => evas_ddraw_main.cpp} (60%) diff --git a/legacy/evas/src/modules/engines/software_16_ddraw/Makefile.am b/legacy/evas/src/modules/engines/software_16_ddraw/Makefile.am index 1a8c398eb1..8ff3c248f9 100644 --- a/legacy/evas/src/modules/engines/software_16_ddraw/Makefile.am +++ b/legacy/evas/src/modules/engines/software_16_ddraw/Makefile.am @@ -18,8 +18,8 @@ pkg_LTLIBRARIES = module.la module_la_SOURCES = \ evas_engine.h \ evas_engine.c \ -evas_ddraw_buffer.c \ -evas_ddraw_main.c +evas_ddraw_buffer.cpp \ +evas_ddraw_main.cpp module_la_LIBADD = @ddraw_16_libs@ $(top_builddir)/src/lib/libevas.la module_la_LDFLAGS = @create_shared_lib@ -module -avoid-version @@ -33,6 +33,6 @@ endif EXTRA_DIST = \ evas_engine.h \ evas_engine.c \ -evas_ddraw_buffer.c \ -evas_ddraw_main.c \ +evas_ddraw_buffer.cpp \ +evas_ddraw_main.cpp \ Evas_Engine_Software_16_DDraw.h diff --git a/legacy/evas/src/modules/engines/software_16_ddraw/evas_ddraw_buffer.c b/legacy/evas/src/modules/engines/software_16_ddraw/evas_ddraw_buffer.cpp similarity index 61% rename from legacy/evas/src/modules/engines/software_16_ddraw/evas_ddraw_buffer.c rename to legacy/evas/src/modules/engines/software_16_ddraw/evas_ddraw_buffer.cpp index 0c4cf4b428..a78507a13b 100644 --- a/legacy/evas/src/modules/engines/software_16_ddraw/evas_ddraw_buffer.c +++ b/legacy/evas/src/modules/engines/software_16_ddraw/evas_ddraw_buffer.cpp @@ -11,10 +11,10 @@ evas_software_ddraw_output_buffer_new(HWND window, int width, int height) { - DDSURFACEDESC2 surface_desc; + DDSURFACEDESC surface_desc; DDraw_Output_Buffer *ddob; - ddob = calloc(1, sizeof(DDraw_Output_Buffer)); + ddob = (DDraw_Output_Buffer *)calloc(1, sizeof(DDraw_Output_Buffer)); if (!ddob) return NULL; ddob->dd.window = window; @@ -29,22 +29,22 @@ evas_software_ddraw_output_buffer_new(HWND window, ZeroMemory(&surface_desc, sizeof(surface_desc)); surface_desc.dwSize = sizeof(surface_desc); - if (FAILED(IDirectDrawSurface7_Lock(ddob->dd.surface_source, NULL, - &surface_desc, - DDLOCK_WAIT | DDLOCK_SURFACEMEMORYPTR, - NULL))) + if (FAILED(ddob->dd.surface_source->Lock(NULL, + &surface_desc, + DDLOCK_WAIT | DDLOCK_SURFACEMEMORYPTR, + NULL))) { free(ddob); return NULL; } - ddob->im.pixels = surface_desc.lpSurface; + ddob->im.pixels = (DATA16 *)surface_desc.lpSurface; ddob->im.w = width; ddob->im.h = height; ddob->im.stride = width; ddob->im.references = 1; - if (FAILED(IDirectDrawSurface7_Unlock(ddob->dd.surface_source, NULL))) + if (FAILED(ddob->dd.surface_source->Unlock(NULL))) { free(ddob); return NULL; @@ -62,17 +62,16 @@ evas_software_ddraw_output_buffer_free(DDraw_Output_Buffer *ddob, int sync) void evas_software_ddraw_output_buffer_paste(DDraw_Output_Buffer *ddob) { - RECT dst_rect; - RECT src_rect; - POINT p; + RECT dst_rect; + RECT src_rect; + POINT p; SetRect(&src_rect, 0, 0, ddob->width, ddob->height); - if (FAILED(IDirectDrawSurface7_BltFast(ddob->dd.surface_back, - 0, 0, - ddob->dd.surface_source, - &src_rect, - DDBLTFAST_NOCOLORKEY | DDBLTFAST_WAIT))) + if (FAILED(ddob->dd.surface_back->BltFast(0, 0, + ddob->dd.surface_source, + &src_rect, + DDBLTFAST_NOCOLORKEY | DDBLTFAST_WAIT))) return; p.x = 0; @@ -80,7 +79,7 @@ evas_software_ddraw_output_buffer_paste(DDraw_Output_Buffer *ddob) ClientToScreen(ddob->dd.window, &p); GetClientRect(ddob->dd.window, &dst_rect); OffsetRect(&dst_rect, p.x, p.y); - IDirectDrawSurface7_Blt(ddob->dd.surface_primary, &dst_rect, - ddob->dd.surface_back, &src_rect, - DDBLT_WAIT, NULL); + ddob->dd.surface_primary->Blt(&dst_rect, + ddob->dd.surface_back, &src_rect, + DDBLT_WAIT, NULL); } diff --git a/legacy/evas/src/modules/engines/software_16_ddraw/evas_ddraw_main.c b/legacy/evas/src/modules/engines/software_16_ddraw/evas_ddraw_main.cpp similarity index 60% rename from legacy/evas/src/modules/engines/software_16_ddraw/evas_ddraw_main.c rename to legacy/evas/src/modules/engines/software_16_ddraw/evas_ddraw_main.cpp index 9bcc0f7041..7a2eb7f367 100644 --- a/legacy/evas/src/modules/engines/software_16_ddraw/evas_ddraw_main.c +++ b/legacy/evas/src/modules/engines/software_16_ddraw/evas_ddraw_main.cpp @@ -4,17 +4,15 @@ void * evas_software_ddraw_lock(DDraw_Output_Buffer *ddob, int *ddraw_width, int *ddraw_height, int *ddraw_pitch, int *ddraw_depth) { - DDSURFACEDESC2 surface_desc; - DDSURFACEDESC *sd; + DDSURFACEDESC surface_desc; ZeroMemory(&surface_desc, sizeof(surface_desc)); surface_desc.dwSize = sizeof(surface_desc); - sd = (DDSURFACEDESC *)&surface_desc; - if (FAILED(IDirectDrawSurface7_Lock(ddob->dd.surface_back, NULL, - sd, - DDLOCK_WAIT | DDLOCK_SURFACEMEMORYPTR, - NULL))) + if (FAILED(ddob->dd.surface_back->Lock(NULL, + &surface_desc, + DDLOCK_WAIT | DDLOCK_SURFACEMEMORYPTR | DDLOCK_WRITEONLY, + NULL))) return NULL; *ddraw_width = surface_desc.dwWidth; @@ -32,7 +30,7 @@ evas_software_ddraw_unlock_and_flip(DDraw_Output_Buffer *ddob) RECT src_rect; POINT p; - if (FAILED(IDirectDrawSurface7_Unlock(ddob->dd.surface_back, NULL))) + if (FAILED(ddob->dd.surface_back->Unlock(NULL))) return; /* we figure out where on the primary surface our window lives */ @@ -44,22 +42,17 @@ evas_software_ddraw_unlock_and_flip(DDraw_Output_Buffer *ddob) SetRect(&src_rect, 0, 0, ddob->width, ddob->height); /* nothing to do if the function fails, so we don't check the result */ - IDirectDrawSurface7_BltFast(ddob->dd.surface_primary, 0, 0, - ddob->dd.surface_back, &dst_rect, - DDBLTFAST_WAIT || DDBLTFAST_NOCOLORKEY); + ddob->dd.surface_primary->BltFast(0, 0, + ddob->dd.surface_back, &dst_rect, + DDBLTFAST_WAIT || DDBLTFAST_NOCOLORKEY); } void evas_software_ddraw_surface_resize(DDraw_Output_Buffer *ddob) { - DDSURFACEDESC2 surface_desc; - DDSURFACEDESC2 *sd; + DDSURFACEDESC surface_desc; - if (!ddob) - printf (" AIE AIE pas de ddob\n"); - if (!ddob->dd.surface_back) - printf (" AIE AIE pas de surface_back\n"); - IDirectDrawSurface7_Release(ddob->dd.surface_back); + ddob->dd.surface_back->Release(); memset (&surface_desc, 0, sizeof (surface_desc)); surface_desc.dwSize = sizeof (surface_desc); /* FIXME: that code does not compile. Must know why */ @@ -73,11 +66,6 @@ evas_software_ddraw_surface_resize(DDraw_Output_Buffer *ddob) surface_desc.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN; surface_desc.dwWidth = ddob->width; surface_desc.dwHeight = ddob->height; - /* Hack to cleanly remove a warning */ - sd = &surface_desc; - IDirectDraw7_CreateSurface(ddob->dd.object, - (DDSURFACEDESC *)sd, - &ddob->dd.surface_back, - NULL); + ddob->dd.object->CreateSurface(&surface_desc, &ddob->dd.surface_back, NULL); #endif } diff --git a/legacy/evas/src/modules/engines/software_16_ddraw/evas_engine.h b/legacy/evas/src/modules/engines/software_16_ddraw/evas_engine.h index db1656cd5e..5d94af214b 100644 --- a/legacy/evas/src/modules/engines/software_16_ddraw/evas_engine.h +++ b/legacy/evas/src/modules/engines/software_16_ddraw/evas_engine.h @@ -28,6 +28,12 @@ struct _DDraw_Output_Buffer }; /****/ + +#ifdef __cplusplus +extern "C" { +#endif + + DDraw_Output_Buffer *evas_software_ddraw_output_buffer_new (HWND window, LPDIRECTDRAW object, LPDIRECTDRAWSURFACE surface_primary, @@ -45,4 +51,9 @@ void evas_software_ddraw_unlock_and_flip(DDraw_Output_Buffer *ddob); void evas_software_ddraw_surface_resize(DDraw_Output_Buffer *ddob); + +#ifdef __cplusplus +} +#endif + #endif /* __EVAS_ENGINE_H__ */