summaryrefslogtreecommitdiff
path: root/rtgui
diff options
context:
space:
mode:
authorbernard.xiong <[email protected]>2009-11-26 09:28:06 +0000
committerbernard.xiong <[email protected]>2009-11-26 09:28:06 +0000
commit885045ef426614e669cbed538fbf135d974c1a36 (patch)
treeb9f8e68dd5972976489e962b113346c15046236c /rtgui
parent719f923718694c48a54827cd5dc03f3621557cc7 (diff)
add semaphore to protect sdcard driver read and write; fix window keyboard event handler.
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@177 bbd45198-f89e-11dd-88c7-29a3b14d5316
Diffstat (limited to 'rtgui')
-rw-r--r--rtgui/common/asc16font.c2
-rw-r--r--rtgui/common/filerw.c16
-rw-r--r--rtgui/common/image.c2
-rw-r--r--rtgui/include/rtgui/filerw.h4
-rw-r--r--rtgui/widgets/window.c7
5 files changed, 21 insertions, 10 deletions
diff --git a/rtgui/common/asc16font.c b/rtgui/common/asc16font.c
index 4af71da2d6..81ee349551 100644
--- a/rtgui/common/asc16font.c
+++ b/rtgui/common/asc16font.c
@@ -275,7 +275,7 @@ const unsigned char asc16_font[] = {
struct rtgui_font_bitmap asc16 =
{
- asc16_font, /* bmp */
+ (const rt_uint8_t*)asc16_font, /* bmp */
8, /* width */
16, /* height */
0, /* first char */
diff --git a/rtgui/common/filerw.c b/rtgui/common/filerw.c
index 1e03dda764..3ad9e83054 100644
--- a/rtgui/common/filerw.c
+++ b/rtgui/common/filerw.c
@@ -190,12 +190,12 @@ struct rtgui_filerw_mem
/* inherit from rtgui_filerw */
struct rtgui_filerw parent;
- rt_uint8_t *mem_base, *mem_position, *mem_end;
+ const rt_uint8_t *mem_base, *mem_position, *mem_end;
};
static int mem_seek(struct rtgui_filerw *context, rt_off_t offset, int whence)
{
- rt_uint8_t* newpos;
+ const rt_uint8_t* newpos;
struct rtgui_filerw_mem* mem = (struct rtgui_filerw_mem*)context;
RT_ASSERT(mem != RT_NULL);
@@ -250,7 +250,8 @@ static int mem_read(struct rtgui_filerw *context, void *ptr, rt_size_t size, rt_
}
static int mem_write(struct rtgui_filerw *context, const void *ptr, rt_size_t size, rt_size_t num)
-{
+{
+#if 0
struct rtgui_filerw_mem* mem = (struct rtgui_filerw_mem*)context;
if ((mem->mem_position + (num * size)) > mem->mem_end)
@@ -261,7 +262,10 @@ static int mem_write(struct rtgui_filerw *context, const void *ptr, rt_size_t si
rt_memcpy(mem->mem_position, ptr, num*size);
mem->mem_position += num*size;
- return num;
+ return num;
+#else
+ return 0; /* not support memory write */
+#endif
}
static int mem_tell(struct rtgui_filerw* context)
@@ -291,7 +295,7 @@ static int mem_close(struct rtgui_filerw *context)
return -1;
}
-rt_uint8_t* rtgui_filerw_mem_getdata(struct rtgui_filerw* context)
+const rt_uint8_t* rtgui_filerw_mem_getdata(struct rtgui_filerw* context)
{
struct rtgui_filerw_mem* mem = (struct rtgui_filerw_mem*)context;
@@ -383,7 +387,7 @@ struct rtgui_filerw* rtgui_filerw_create_file(const char* filename, const char*
}
#endif
-struct rtgui_filerw* rtgui_filerw_create_mem(rt_uint8_t* mem, rt_size_t size)
+struct rtgui_filerw* rtgui_filerw_create_mem(const rt_uint8_t* mem, rt_size_t size)
{
struct rtgui_filerw_mem* rw;
RT_ASSERT(mem != RT_NULL);
diff --git a/rtgui/common/image.c b/rtgui/common/image.c
index 64e2c992e2..40c1363029 100644
--- a/rtgui/common/image.c
+++ b/rtgui/common/image.c
@@ -122,7 +122,7 @@ struct rtgui_image* rtgui_image_create_from_mem(const char* type, const rt_uint8
struct rtgui_image* image = RT_NULL;
/* create filerw context */
- filerw = rtgui_filerw_create_mem((rt_uint8_t*)data, length);
+ filerw = rtgui_filerw_create_mem(data, length);
if (filerw == RT_NULL) return RT_NULL;
/* get image engine */
diff --git a/rtgui/include/rtgui/filerw.h b/rtgui/include/rtgui/filerw.h
index 0a9395fbb6..b05ce3f8e9 100644
--- a/rtgui/include/rtgui/filerw.h
+++ b/rtgui/include/rtgui/filerw.h
@@ -32,7 +32,7 @@ struct rtgui_filerw
typedef struct rtgui_filerw rtgui_filerw_t;
struct rtgui_filerw* rtgui_filerw_create_file(const char* filename, const char* mode);
-struct rtgui_filerw* rtgui_filerw_create_mem(rt_uint8_t* mem, rt_size_t size);
+struct rtgui_filerw* rtgui_filerw_create_mem(const rt_uint8_t* mem, rt_size_t size);
int rtgui_filerw_seek (struct rtgui_filerw* context, rt_off_t offset, int whence);
int rtgui_filerw_read (struct rtgui_filerw* context, void* buffer, rt_size_t size, rt_size_t count);
@@ -42,6 +42,6 @@ int rtgui_filerw_eof (struct rtgui_filerw* context);
int rtgui_filerw_close(struct rtgui_filerw* context);
/* get memory data from filerw memory object */
-rt_uint8_t* rtgui_filerw_mem_getdata(struct rtgui_filerw* context);
+const rt_uint8_t* rtgui_filerw_mem_getdata(struct rtgui_filerw* context);
#endif
diff --git a/rtgui/widgets/window.c b/rtgui/widgets/window.c
index ae0c708b3c..b006b2e75d 100644
--- a/rtgui/widgets/window.c
+++ b/rtgui/widgets/window.c
@@ -430,6 +430,13 @@ rt_bool_t rtgui_win_event_handler(struct rtgui_widget* widget, struct rtgui_even
#endif
break;
+ case RTGUI_EVENT_KBD:
+ if (RTGUI_CONTAINER(win)->focused != widget)
+ {
+ RTGUI_CONTAINER(win)->focused->event_handler(RTGUI_CONTAINER(win)->focused, event);
+ }
+ break;
+
default:
/* call parent event handler */
return rtgui_toplevel_event_handler(widget, event);