* ecore/ecore_pipe.c:

fix doc

 * ecore_file/Makefile.am:
     add Windows cflags

 * ecore_file/ecore_file_private.h:
     move Evil.h so that EAPI is correctly defined

 * ecore_wince:
     make window_new windowed by default. other backend that gdi might have problems.
     add title_set and fullscreen_set functions.
     do not use aygshell features anymore for fullscreen (it's not free and not always available)
     include missing config.h

 * ecore_evas:
     move Evas.h and Ecore_Getopt.h so that EAPI is correctly defined
     add title_set and fullscreen_set functions.



SVN revision: 38540
This commit is contained in:
Vincent Torri 2009-01-10 17:57:25 +00:00
parent a5695ae333
commit 6a337b0c4e
12 changed files with 209 additions and 53 deletions

View File

@ -89,12 +89,12 @@ case "$host_os" in
AC_DEFINE(EFL_ECORE_WINCE_BUILD, 1, [Define to mention that ecore WinCE is built.]) AC_DEFINE(EFL_ECORE_WINCE_BUILD, 1, [Define to mention that ecore WinCE is built.])
WIN32_CPPFLAGS="-D_WIN32_WCE=0x0420" WIN32_CPPFLAGS="-D_WIN32_WCE=0x0420"
WIN32_CFLAGS="-mwin32" WIN32_CFLAGS="-mwin32"
WIN32_LIBS="-lws2 -laygshell" WIN32_LIBS="-lws2"
else else
if test "$host_os" = "mingw32ce" ; then if test "$host_os" = "mingw32ce" ; then
AC_DEFINE(EFL_ECORE_WINCE_BUILD, 1, [Define to mention that ecore WinCE is built.]) AC_DEFINE(EFL_ECORE_WINCE_BUILD, 1, [Define to mention that ecore WinCE is built.])
WIN32_CPPFLAGS="-D_WIN32_WCE=0x0420" WIN32_CPPFLAGS="-D_WIN32_WCE=0x0420"
WIN32_LIBS="-lws2 -laygshell" WIN32_LIBS="-lws2"
else else
WIN32_LIBS="-lws2_32" WIN32_LIBS="-lws2_32"
fi fi

View File

@ -148,7 +148,7 @@ static int _ecore_pipe_read(void *data,
* pipeline = _buid_pipeline (filename, pipe); * pipeline = _buid_pipeline (filename, pipe);
* if (!pipeline) { * if (!pipeline) {
* g_print ("Error during the pipeline building\n"); * g_print ("Error during the pipeline building\n");
* ecore_pipe_free (pipe); * ecore_pipe_del (pipe);
* ecore_shutdown (); * ecore_shutdown ();
* gst_deinit (); * gst_deinit ();
* return -1; * return -1;
@ -158,7 +158,7 @@ static int _ecore_pipe_read(void *data,
* *
* ecore_main_loop_begin(); * ecore_main_loop_begin();
* *
* ecore_pipe_free (pipe); * ecore_pipe_del (pipe);
* ecore_shutdown (); * ecore_shutdown ();
* gst_deinit (); * gst_deinit ();
* *

View File

@ -5,6 +5,9 @@
#ifndef _ECORE_EVAS_H #ifndef _ECORE_EVAS_H
#define _ECORE_EVAS_H #define _ECORE_EVAS_H
#include <Evas.h>
#include <Ecore_Getopt.h>
#ifdef EAPI #ifdef EAPI
# undef EAPI # undef EAPI
#endif #endif
@ -48,9 +51,6 @@
* - dfb back-end ??? (dfb's threads make this REALLY HARD) * - dfb back-end ??? (dfb's threads make this REALLY HARD)
*/ */
#include <Evas.h>
#include <Ecore_Getopt.h>
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif

View File

@ -212,6 +212,9 @@ struct _Ecore_Evas_Engine
#ifdef BUILD_ECORE_EVAS_SOFTWARE_16_WINCE #ifdef BUILD_ECORE_EVAS_SOFTWARE_16_WINCE
struct { struct {
Ecore_WinCE_Window *window; Ecore_WinCE_Window *window;
struct {
unsigned char fullscreen : 1;
} state;
} wince; } wince;
#endif #endif

View File

@ -705,14 +705,14 @@ _ecore_evas_wince_hide(Ecore_Evas *ee)
/* ecore_wince_window_lower(ee->engine.wince.window); */ /* ecore_wince_window_lower(ee->engine.wince.window); */
/* } */ /* } */
/* static void */ static void
/* _ecore_evas_wince_title_set(Ecore_Evas *ee, const char *title) */ _ecore_evas_wince_title_set(Ecore_Evas *ee, const char *title)
/* { */ {
/* if (ee->prop.title) free(ee->prop.title); */ if (ee->prop.title) free(ee->prop.title);
/* ee->prop.title = NULL; */ ee->prop.title = NULL;
/* if (title) ee->prop.title = strdup(title); */ if (title) ee->prop.title = strdup(title);
/* ecore_wince_window_title_set(ee->engine.wince.window, ee->prop.title); */ ecore_wince_window_title_set(ee->engine.wince.window, ee->prop.title);
/* } */ }
/* static void */ /* static void */
/* _ecore_evas_wince_size_min_set(Ecore_Evas *ee, int width, int height) */ /* _ecore_evas_wince_size_min_set(Ecore_Evas *ee, int width, int height) */
@ -821,17 +821,52 @@ _ecore_evas_wince_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int layer, int ho
static void static void
_ecore_evas_wince_fullscreen_set(Ecore_Evas *ee, int on) _ecore_evas_wince_fullscreen_set(Ecore_Evas *ee, int on)
{ {
/* if ((ee->prop.fullscreen && on) || */ Evas_Engine_Info_Software_16_WinCE *einfo;
/* (!ee->prop.fullscreen && !on)) return; */ struct _Ecore_WinCE_Window *window;
/* ee->engine.wince.state.fullscreen = on; */ if ((ee->engine.wince.state.fullscreen && on) ||
/* ecore_wince_window_fullscreen_set(ee->engine.wince.window, ee->prop.borderless); */ (!ee->engine.wince.state.fullscreen && !on))
/* FIXME: what to do with that code ?? */ return;
/* if (ee->should_be_visible) */
/* ecore_x_netwm_state_request_send(ee->engine.x.win, ee->engine.x.win_root, */ ee->engine.wince.state.fullscreen = on;
/* ECORE_X_WINDOW_STATE_FULLSCREEN, -1, on); */ ee->prop.fullscreen = on;
/* else */
/* _ecore_evas_wince_state_update(ee); */ window = (struct _Ecore_WinCE_Window *)ee->engine.wince.window;
if (on != 0)
{
/* ecore_win32_window_shape_set(ee->engine.win32.window, 0, 0, NULL); */
ecore_wince_window_fullscreen_set(ee->engine.wince.window, on);
ee->w = GetSystemMetrics(SM_CXSCREEN);
ee->h = GetSystemMetrics(SM_CYSCREEN);
evas_output_size_set(ee->evas, ee->w, ee->h);
evas_output_viewport_set(ee->evas, 0, 0, ee->w, ee->h);
}
else
{
int w;
int h;
ecore_wince_window_fullscreen_set(ee->engine.wince.window, on);
ecore_wince_window_size_get(ee->engine.wince.window, &w, &h);
ee->w = w;
ee->h = h;
evas_output_size_set(ee->evas, ee->w, ee->h);
evas_output_viewport_set(ee->evas, 0, 0, ee->w, ee->h);
/* ecore_win32_window_shape_set(window, */
/* window->shape.width, */
/* window->shape.height, */
/* window->shape.mask); */
}
einfo = (Evas_Engine_Info_Software_16_WinCE *)evas_engine_info_get(ecore_evas_get(ee));
if (einfo != NULL)
{
einfo->info.fullscreen = !!on;
/* einfo->info.layered = window->shape.layered; */
printf ("_ecore_evas_wince_fullscreen_set : %d\n", einfo->info.fullscreen);
evas_engine_info_set(ecore_evas_get(ee), (Evas_Engine_Info *)einfo);
}
} }
static void * static void *
@ -868,7 +903,7 @@ static const Ecore_Evas_Engine_Func _ecore_wince_engine_func =
NULL, //_ecore_evas_wince_raise, NULL, //_ecore_evas_wince_raise,
NULL, //_ecore_evas_wince_lower, NULL, //_ecore_evas_wince_lower,
NULL, //_ecore_evas_wince_activate, NULL, //_ecore_evas_wince_activate,
NULL, //_ecore_evas_wince_title_set, _ecore_evas_wince_title_set,
NULL, /* _ecore_evas_x_name_class_set */ NULL, /* _ecore_evas_x_name_class_set */
NULL, //_ecore_evas_wince_size_min_set, NULL, //_ecore_evas_wince_size_min_set,
NULL, //_ecore_evas_wince_size_max_set, NULL, //_ecore_evas_wince_size_max_set,

View File

@ -6,7 +6,8 @@ AM_CPPFLAGS = \
-I$(top_builddir)/src/lib/ecore \ -I$(top_builddir)/src/lib/ecore \
@CURL_CFLAGS@ \ @CURL_CFLAGS@ \
@EVIL_CFLAGS@ \ @EVIL_CFLAGS@ \
@EINA_CFLAGS@ @EINA_CFLAGS@ \
@WIN32_CPPFLAGS@
AM_CFLAGS = @WIN32_CFLAGS@ AM_CFLAGS = @WIN32_CFLAGS@

View File

@ -6,13 +6,13 @@
# include <features.h> # include <features.h>
#endif #endif
#include "Ecore.h"
#include "ecore_private.h"
#ifdef HAVE_EVIL #ifdef HAVE_EVIL
# include <Evil.h> # include <Evil.h>
#endif #endif
#include "Ecore.h"
#include "ecore_private.h"
#include "Ecore_File.h" #include "Ecore_File.h"
/* ecore_file_monitor */ /* ecore_file_monitor */

View File

@ -37,7 +37,9 @@ extern "C" {
#endif #endif
#ifndef _ECORE_EVAS_H
typedef void Ecore_WinCE_Window; typedef void Ecore_WinCE_Window;
#endif
/* Events */ /* Events */
@ -213,6 +215,9 @@ EAPI void ecore_wince_window_show(Ecore_WinCE_Window *window);
EAPI void ecore_wince_window_hide(Ecore_WinCE_Window *window); EAPI void ecore_wince_window_hide(Ecore_WinCE_Window *window);
EAPI void ecore_wince_window_title_set(Ecore_WinCE_Window *window,
const char *title);
EAPI void ecore_wince_window_backend_set(Ecore_WinCE_Window *window, int backend); EAPI void ecore_wince_window_backend_set(Ecore_WinCE_Window *window, int backend);
EAPI void ecore_wince_window_suspend_set(Ecore_WinCE_Window *window, int (*suspend)(int)); EAPI void ecore_wince_window_suspend_set(Ecore_WinCE_Window *window, int (*suspend)(int));
@ -231,6 +236,9 @@ EAPI void ecore_wince_window_size_get(Ecore_WinCE_Window *window,
EAPI void *ecore_wince_window_window_get(Ecore_WinCE_Window *window); EAPI void *ecore_wince_window_window_get(Ecore_WinCE_Window *window);
EAPI void ecore_wince_window_fullscreen_set(Ecore_WinCE_Window *window,
int on);
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@ -2,6 +2,10 @@
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2 * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
*/ */
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <stdlib.h> #include <stdlib.h>
#include <stdio.h> /* for printf */ #include <stdio.h> /* for printf */
@ -105,8 +109,6 @@ ecore_wince_init()
_ecore_wince_init_count++; _ecore_wince_init_count++;
printf ("ecore_wince : instance + class bon\n");
return _ecore_wince_init_count; return _ecore_wince_init_count;
} }
@ -276,7 +278,7 @@ _ecore_wince_window_procedure(HWND window,
_ecore_wince_event_handle_create_notify(data); _ecore_wince_event_handle_create_notify(data);
return 0; return 0;
case WM_DESTROY: case WM_DESTROY:
printf (" * ecore message : destroy\n"); printf (" *** ecore message : destroy\n");
_ecore_wince_event_handle_destroy_notify(data); _ecore_wince_event_handle_destroy_notify(data);
return 0; return 0;
case WM_SHOWWINDOW: case WM_SHOWWINDOW:
@ -297,7 +299,7 @@ _ecore_wince_window_procedure(HWND window,
return 0; return 0;
case WM_CLOSE: case WM_CLOSE:
printf (" * ecore message : close\n"); printf (" *** ecore message : close\n");
_ecore_wince_event_handle_delete_request(data); _ecore_wince_event_handle_delete_request(data);
return 0; return 0;
/* GDI notifications */ /* GDI notifications */
@ -306,10 +308,10 @@ _ecore_wince_window_procedure(HWND window,
RECT rect; RECT rect;
PAINTSTRUCT paint; PAINTSTRUCT paint;
printf (" * ecore message : paint\n"); /* printf (" * ecore message : paint\n"); */
if (BeginPaint(window, &paint)) if (BeginPaint(window, &paint))
{ {
printf (" * ecore message : painting...\n"); /* printf (" * ecore message : painting...\n"); */
data->update = paint.rcPaint; data->update = paint.rcPaint;
_ecore_wince_event_handle_expose(data); _ecore_wince_event_handle_expose(data);
EndPaint(window, &paint); EndPaint(window, &paint);

View File

@ -2,6 +2,10 @@
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2 * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
*/ */
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <stdlib.h> #include <stdlib.h>
#include <stdio.h> /* for printf */ #include <stdio.h> /* for printf */
@ -263,7 +267,7 @@ _ecore_wince_event_handle_enter_notify(Ecore_WinCE_Callback_Data *msg)
Ecore_WinCE_Window *window; Ecore_WinCE_Window *window;
window = (void *)GetWindowLong(msg->window, GWL_USERDATA); window = (void *)GetWindowLong(msg->window, GWL_USERDATA);
printf (" * ecore event enter notify 0\n"); /* printf (" * ecore event enter notify 0\n"); */
{ {
Ecore_WinCE_Event_Mouse_Move *e; Ecore_WinCE_Event_Mouse_Move *e;
@ -297,7 +301,7 @@ _ecore_wince_event_handle_enter_notify(Ecore_WinCE_Callback_Data *msg)
ecore_event_add(ECORE_WINCE_EVENT_MOUSE_IN, e, NULL, NULL); ecore_event_add(ECORE_WINCE_EVENT_MOUSE_IN, e, NULL, NULL);
} }
printf (" * ecore event enter notify 1\n"); /* printf (" * ecore event enter notify 1\n"); */
} }
void void

View File

@ -36,7 +36,10 @@ struct _Ecore_WinCE_Window
ecore_wince_suspend suspend; ecore_wince_suspend suspend;
ecore_wince_resume resume; ecore_wince_resume resume;
RECT rect; /* used to go fullscreen to normal */
unsigned int pointer_is_in : 1; unsigned int pointer_is_in : 1;
unsigned int fullscreen : 1;
}; };
extern double _ecore_wince_double_click_time; extern double _ecore_wince_double_click_time;

View File

@ -2,13 +2,15 @@
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2 * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
*/ */
#include <stdlib.h> #ifdef HAVE_CONFIG_H
#include <stdio.h> /* for printf */ # include <config.h>
#endif
#define WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN
#include <windows.h> #include <windows.h>
#undef WIN32_LEAN_AND_MEAN #undef WIN32_LEAN_AND_MEAN
#include <aygshell.h>
#include <Evil.h>
#include "Ecore_WinCE.h" #include "Ecore_WinCE.h"
#include "ecore_wince_private.h" #include "ecore_wince_private.h"
@ -38,18 +40,23 @@ ecore_wince_window_new(Ecore_WinCE_Window *parent,
if (!w) if (!w)
return NULL; return NULL;
SetRect(&rect, 0, 0, rect.left = 0;
GetSystemMetrics(SM_CXSCREEN), rect.top = 0;
GetSystemMetrics(SM_CYSCREEN)); rect.right = width;
rect.bottom = height;
if (!AdjustWindowRectEx(&rect, WS_CAPTION | WS_SYSMENU | WS_VISIBLE, FALSE, WS_EX_TOPMOST))
{
free(w);
return NULL;
}
window = CreateWindowEx(WS_EX_TOPMOST, window = CreateWindowEx(WS_EX_TOPMOST,
ECORE_WINCE_WINDOW_CLASS, ECORE_WINCE_WINDOW_CLASS,
L"", L"",
WS_VISIBLE | WS_POPUP, WS_CAPTION | WS_SYSMENU | WS_VISIBLE,
rect.left, rect.top, x, y,
rect.right - rect.left, rect.right - rect.left, rect.bottom - rect.top,
rect.bottom - rect.top, parent ? ((struct _Ecore_WinCE_Window *)parent)->window : NULL,
parent ? ((struct _Ecore_WinCE_Window *)parent)->window : NULL,
NULL, _ecore_wince_instance, NULL); NULL, _ecore_wince_instance, NULL);
if (!window) if (!window)
{ {
@ -57,9 +64,6 @@ ecore_wince_window_new(Ecore_WinCE_Window *parent,
return NULL; return NULL;
} }
SHFullScreen(window,
SHFS_HIDETASKBAR | SHFS_HIDESTARTICON | SHFS_HIDESIPBUTTON);
if (!_ecore_wince_hardware_keys_register(window)) if (!_ecore_wince_hardware_keys_register(window))
{ {
DestroyWindow(window); DestroyWindow(window);
@ -115,6 +119,23 @@ ecore_wince_window_hide(Ecore_WinCE_Window *window)
SendMessage(((struct _Ecore_WinCE_Window *)window)->window, WM_SHOWWINDOW, 0, 0); SendMessage(((struct _Ecore_WinCE_Window *)window)->window, WM_SHOWWINDOW, 0, 0);
} }
void
ecore_wince_window_title_set(Ecore_WinCE_Window *window,
const char *title)
{
wchar_t *wtitle;
if (!window) return;
if (!title || !title[0]) return;
wtitle = evil_char_to_wchar(title);
if (!wtitle) return;
SetWindowText(((struct _Ecore_WinCE_Window *)window)->window, wtitle);
free(wtitle);
}
void void
ecore_wince_window_backend_set(Ecore_WinCE_Window *window, int backend) ecore_wince_window_backend_set(Ecore_WinCE_Window *window, int backend)
{ {
@ -211,7 +232,6 @@ ecore_wince_window_size_get(Ecore_WinCE_Window *window,
{ {
RECT rect; RECT rect;
printf ("ecore_wince_window_size_get %p\n", window);
if (!window) if (!window)
{ {
if (width) *width = GetSystemMetrics(SM_CXSCREEN); if (width) *width = GetSystemMetrics(SM_CXSCREEN);
@ -242,6 +262,86 @@ ecore_wince_window_window_get(Ecore_WinCE_Window *window)
return ((struct _Ecore_WinCE_Window *)window)->window; return ((struct _Ecore_WinCE_Window *)window)->window;
} }
void
ecore_wince_window_fullscreen_set(Ecore_WinCE_Window *window,
int on)
{
struct _Ecore_WinCE_Window *ew;
HWND w;
HWND task_bar;
int width;
int height;
if (!window) return;
ew = (struct _Ecore_WinCE_Window *)window;
if (((ew->fullscreen) && (on)) ||
((!ew->fullscreen) && (!on)))
return;
ew->fullscreen = !!on;
w = ew->window;
if (on)
{
/* save the position and size of the window */
if (!GetWindowRect(w, &ew->rect)) return;
/* hide task bar */
task_bar = FindWindow(L"HHTaskBar", NULL);
if (!task_bar) return;
ShowWindow(task_bar, SW_HIDE);
EnableWindow(task_bar, FALSE);
/* style: visible + popup */
if (!SetWindowLong(w, GWL_STYLE, WS_POPUP | WS_VISIBLE)) return;
/* resize window to fit the entire screen */
SetWindowPos(w, HWND_TOPMOST,
0, 0,
GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN),
SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);
/*
* It seems that SetWindowPos is not sufficient.
* Call MoveWindow with the correct size and force painting.
* Note that UpdateWindow (forcing repainting) is not sufficient
*/
MoveWindow(w,
0, 0,
GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN),
TRUE);
}
else
{
/* show task bar */
task_bar = FindWindow(L"HHTaskBar", NULL);
if (!task_bar) return;
ShowWindow(task_bar, SW_SHOW);
EnableWindow(task_bar, TRUE);
/* style: visible + caption + sysmenu */
if (!SetWindowLong(w, GWL_STYLE, WS_CAPTION | WS_SYSMENU | WS_VISIBLE)) return;
/* restaure the position and size of the window */
SetWindowPos(w, HWND_TOPMOST,
ew->rect.left,
ew->rect.top,
ew->rect.right - ew->rect.left,
ew->rect.bottom - ew->rect.top,
SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);
/*
* It seems that SetWindowPos is not sufficient.
* Call MoveWindow with the correct size and force painting.
* Note that UpdateWindow (forcing repainting) is not sufficient
*/
MoveWindow(w,
ew->rect.left,
ew->rect.top,
ew->rect.right - ew->rect.left,
ew->rect.bottom - ew->rect.top,
TRUE);
}
}
/***** Private functions definitions *****/ /***** Private functions definitions *****/