Enlightenment CVS committal Author : doursse Project : e17 Module : libs/evas
Dir : e17/libs/evas/src/modules/engines/software_16_wince Modified Files: Evas_Engine_Software_16_WinCE.h evas_engine.c evas_wince_fb_buffer.c evas_wince_gapi_buffer.c Log Message: * put key management outside the engine. It's not its place in it * make Ipaq H38xx and H39xx work with the framebuffer =================================================================== RCS file: /cvs/e/e17/libs/evas/src/modules/engines/software_16_wince/Evas_Engine_Software_16_WinCE.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- Evas_Engine_Software_16_WinCE.h 23 Apr 2008 19:17:59 -0000 1.1 +++ Evas_Engine_Software_16_WinCE.h 23 May 2008 18:26:41 -0000 1.2 @@ -22,7 +22,6 @@ struct { int (*suspend) (int backend); int (*resume) (int backend); - void *(*default_keys) (int backend); } func; }; =================================================================== RCS file: /cvs/e/e17/libs/evas/src/modules/engines/software_16_wince/evas_engine.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- evas_engine.c 24 Apr 2008 06:18:09 -0000 1.2 +++ evas_engine.c 23 May 2008 18:26:41 -0000 1.3 @@ -83,18 +83,6 @@ } } -static void * -_default_keys(int backend) -{ - switch (backend) - { - case 2: /* gapi */ - return evas_software_wince_gapi_default_keys(); - default: /* other engines do not need it */ - return NULL; - } -} - /* engine api this module provides */ static void * eng_info(Evas *e) @@ -106,7 +94,6 @@ info->magic.magic = rand(); info->func.suspend = _suspend; info->func.resume = _resume; - info->func.default_keys = _default_keys; return info; e = NULL; } =================================================================== RCS file: /cvs/e/e17/libs/evas/src/modules/engines/software_16_wince/evas_wince_fb_buffer.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- evas_wince_fb_buffer.c 23 Apr 2008 19:17:59 -0000 1.1 +++ evas_wince_fb_buffer.c 23 May 2008 18:26:41 -0000 1.2 @@ -2,6 +2,21 @@ #include "evas_engine.h" +#define GETGXINFO 0x00020000 + +typedef struct GXDeviceInfo +{ + long Version; //00 (should filled with 100 before calling ExtEscape) + void *pvFrameBuffer; //04 + unsigned long cbStride; //08 + unsigned long cxWidth; //0c + unsigned long cyHeight; //10 + unsigned long cBPP; //14 + unsigned long ffFormat; //18 + char Unused[0x84 - 7 * 4]; +} GXDeviceInfo; + + #define GETRAWFRAMEBUFFER 0x00020001 typedef struct _RawFrameBufferInfo @@ -25,10 +40,10 @@ void *buffer; }; - void * evas_software_wince_fb_init (HWND window) { + WCHAR oemstr[100]; RawFrameBufferInfo rfbi; HDC dc; Evas_Engine_WinCE_FB_Priv *priv; @@ -42,6 +57,36 @@ { free(priv); return NULL; + } + + SystemParametersInfo (SPI_GETOEMINFO, sizeof (oemstr), oemstr, 0); + if (((oemstr[12] == 'H') && + (oemstr[13] == '3') && + (oemstr[14] == '8')) || + ((oemstr[12] == 'H') && + (oemstr[13] == '3') && + (oemstr[14] == '9'))) + { + GXDeviceInfo gxInfo = { 0 }; + int result; + + gxInfo.Version = 100; + result = ExtEscape(dc, GETGXINFO, 0, NULL, sizeof(gxInfo), + (char *) &gxInfo); + if (result <= 0) + { + ReleaseDC(window, dc); + free(priv); + return NULL; + } + + priv->width = gxInfo.cyHeight; + priv->height = gxInfo.cxWidth; + priv->buffer = gxInfo.pvFrameBuffer; + + ReleaseDC(window, dc); + + return priv; } if (!ExtEscape(dc, GETRAWFRAMEBUFFER, 0, 0, sizeof(rfbi), (char *) &rfbi)|| =================================================================== RCS file: /cvs/e/e17/libs/evas/src/modules/engines/software_16_wince/evas_wince_gapi_buffer.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -3 -r1.6 -r1.7 --- evas_wince_gapi_buffer.c 22 May 2008 11:00:01 -0000 1.6 +++ evas_wince_gapi_buffer.c 23 May 2008 18:26:41 -0000 1.7 @@ -3,7 +3,6 @@ typedef int (*evas_engine_wince_close_display)(); -typedef int (*evas_engine_wince_close_input)(); typedef struct Evas_Engine_WinCE_GAPI_Priv Evas_Engine_WinCE_GAPI_Priv; @@ -43,41 +42,16 @@ DWORD ffFormat; } _GAPI_Display_Properties; -typedef struct -{ - short vkUp; // key for up - POINT ptUp; // x,y position of key/button. Not on screen but in screen coordinates. - short vkDown; - POINT ptDown; - short vkLeft; - POINT ptLeft; - short vkRight; - POINT ptRight; - short vkA; - POINT ptA; - short vkB; - POINT ptB; - short vkC; - POINT ptC; - short vkStart; - POINT ptStart; -} _GAPI_Key_List; - typedef int (*gapi_display_open)(HWND hWnd, DWORD dwFlags); typedef int (*gapi_display_close)(); typedef _GAPI_Display_Properties (*gapi_display_properties_get)(void); typedef void* (*gapi_draw_begin)(void); typedef int (*gapi_draw_end)(void); -typedef int (*gapi_input_open)(void); -typedef int (*gapi_input_close)(void); -typedef _GAPI_Key_List (*gapi_default_keys_get)(int iOptions); typedef int (*gapi_suspend)(void); typedef int (*gapi_resume)(void); -gapi_default_keys_get default_keys_get = NULL; gapi_suspend suspend = NULL; gapi_resume resume = NULL; -_GAPI_Key_List *default_keys = NULL; int evas_software_wince_gapi_suspend(void) @@ -97,18 +71,11 @@ return 0; } -void * -evas_software_wince_gapi_default_keys(void) -{ - return default_keys; -} - struct Evas_Engine_WinCE_GAPI_Priv { HMODULE lib; gapi_display_close close_display; - gapi_input_close close_input; gapi_draw_begin draw_begin; gapi_draw_end draw_end; void *buffer; @@ -122,7 +89,6 @@ { WCHAR oemstr[100]; _GAPI_Display_Properties prop; - _GAPI_Key_List key_list; HMODULE gapi_lib; Evas_Engine_WinCE_GAPI_Priv *priv; @@ -131,8 +97,6 @@ gapi_display_properties_get display_properties_get = NULL; gapi_draw_begin draw_begin = NULL; gapi_draw_end draw_end = NULL; - gapi_input_open input_open = NULL; - gapi_input_close input_close = NULL; priv = (Evas_Engine_WinCE_GAPI_Priv *)malloc(sizeof(Evas_Engine_WinCE_GAPI_Priv)); if (!priv) @@ -153,9 +117,6 @@ LINK(display_properties_get, display_properties_get, L"?GXGetDisplayProperties@@YA?AUGXDisplayProperties@@XZ"); LINK(draw_begin, draw_begin, L"?GXBeginDraw@@YAPAXXZ"); LINK(draw_end, draw_end, L"?GXEndDraw@@YAHXZ"); - LINK(input_open, input_open, L"?GXOpenInput@@YAHXZ" ); - LINK(input_close, input_close, L"?GXCloseInput@@YAHXZ" ); - LINK(default_keys_get, default_keys_get, L"?GXGetDefaultKeys@@YA?AUGXKeyList@@[EMAIL PROTECTED]"); LINK(suspend, suspend, L"?GXSuspend@@YAHXZ" ); LINK(resume, resume, L"?GXResume@@YAHXZ" ); @@ -164,9 +125,6 @@ !display_properties_get || !draw_begin || !draw_end || - !input_open || - !input_close || - !default_keys_get || !suspend || !resume) { @@ -197,27 +155,11 @@ goto close_display; } - if (!input_open()) - { - printf ("error : GXOpenInput\n"); - goto close_display; - } - priv->lib = gapi_lib; priv->close_display = display_close; - priv->close_input = input_close; priv->draw_begin = draw_begin; priv->draw_end = draw_end; - key_list = default_keys_get(GX_NORMALKEYS); - default_keys = (_GAPI_Key_List *)malloc(sizeof(_GAPI_Key_List)); - if (!default_keys) - { - printf ("error : GXOpenInput\n"); - goto close_input; - } - memcpy(default_keys, &key_list, sizeof(_GAPI_Key_List)); - /* GAPI on Ipaq H38** and H39** is completely buggy */ /* They are detected as portrait device (width = 240 and height = 320) */ /* but the framebuffer is managed like a landscape device : */ @@ -272,14 +214,10 @@ priv->width = prop.cyHeight; priv->height = prop.cxWidth; priv->stride = prop.cbxPitch; - default_keys->vkA = 193; - default_keys->vkB = 194; - default_keys->vkC = 195; - default_keys->vkStart = 196; dc = GetDC (window); if (!dc) - goto free_keys; + goto close_display; gxInfo.Version = 100; result = ExtEscape(dc, GETGXINFO, 0, NULL, sizeof(gxInfo), @@ -287,7 +225,7 @@ if (result <= 0) { ReleaseDC(window, dc); - goto free_keys; + goto close_display; } priv->buffer = gxInfo.pvFrameBuffer; @@ -303,10 +241,6 @@ return priv; - free_keys: - free(default_keys); - close_input: - input_close(); close_display: display_close(); free_lib: @@ -322,7 +256,6 @@ Evas_Engine_WinCE_GAPI_Priv *p; p = (Evas_Engine_WinCE_GAPI_Priv *)priv; - p->close_input(); p->close_display(); suspend = NULL; resume = NULL; ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs