[teklib-general] teklib: display_sdl work in progress
Franciska Schulze
fschulze at neoscientists.org
Thu May 15 21:52:55 CEST 2008
details: http://hg.teklib.org/teklib/rev/76707ff52967
changeset: 189:76707ff52967
user: Franciska Schulze <fschulze at neoscientists.org>
date: Thu May 15 15:11:33 2008 +0000
description:
display_sdl work in progress
diffs (truncated from 121 to 100 lines):
diff -r 95885fc8eed6 -r 76707ff52967 doc/images/teklib.png
Binary file doc/images/teklib.png has changed
diff -r 95885fc8eed6 -r 76707ff52967 doc/images/teklibsmall.png
Binary file doc/images/teklibsmall.png has changed
diff -r 95885fc8eed6 -r 76707ff52967 src/display_sdl/display_sdl_api.c
--- a/src/display_sdl/display_sdl_api.c Thu May 15 15:01:03 2008 +0000
+++ b/src/display_sdl/display_sdl_api.c Thu May 15 15:11:33 2008 +0000
@@ -4,6 +4,52 @@ LOCAL void
LOCAL void
sdl_openvisual(TMOD_SDL *mod, struct TVRequest *req)
{
+ TTAGITEM *tags = req->tvr_Op.OpenVisual.Tags;
+ TAPTR exec = TGetExecBase(mod);
+ VISUAL *v;
+
+
+ v = TExecAlloc0(exec, mod->sdl_MemMgr, sizeof(VISUAL));
+ req->tvr_Op.OpenVisual.Instance = v;
+ if (v == TNULL) return;
+
+ for (;;)
+ {
+ TInitList(&v->penlist);
+
+ TInitList(&v->imsgqueue);
+ v->imsgport = req->tvr_Op.OpenVisual.IMsgPort;
+
+ v->winwidth = (TINT)
+ TGetTag(tags, TVisual_PixWidth, (TTAG) -1);
+ v->winheight = (TINT)
+ TGetTag(tags, TVisual_PixHeight, (TTAG) -1);
+
+ v->winwidth = v->winwidth >= 0 ? v->winwidth : 600;
+ v->winheight = v->winheight >= 0 ? v->winheight : 400;
+
+ v->title = (TSTRPTR)
+ TGetTag(tags, TVisual_Title, (TTAG) "TEKlib visual");
+
+ v->window = SDL_SetVideoMode(v->winwidth, v->winheight, 32, SDL_HWSURFACE | SDL_RESIZABLE);
+ if (v->window == TNULL)
+ break;
+
+ SDL_WM_SetCaption(v->title, v->title);
+
+ v->bgpen = TVPEN_UNDEFINED;
+ v->fgpen = TVPEN_UNDEFINED;
+
+ //TDBPRINTF(TDB_TRACE,("Add window: %p\n", v->window));
+ //TAddTail(&mod->sdl_vlist, &v->node);
+
+ /* success: */
+ return;
+ }
+
+ /* failure: */
+ sdl_closevisual(mod, req);
+ req->tvr_Op.OpenVisual.Instance = TNULL;
}
LOCAL void
diff -r 95885fc8eed6 -r 76707ff52967 src/display_sdl/display_sdl_mod.c
--- a/src/display_sdl/display_sdl_mod.c Thu May 15 15:01:03 2008 +0000
+++ b/src/display_sdl/display_sdl_mod.c Thu May 15 15:11:33 2008 +0000
@@ -60,6 +60,7 @@ tek_init_display_sdl(TAPTR task, struct
TTAGITEM *tags)
{
TMOD_SDL *mod = (TMOD_SDL *) vis;
+
if (mod == TNULL)
{
if (version == 0xffff)
diff -r 95885fc8eed6 -r 76707ff52967 src/display_sdl/display_sdl_mod.h
--- a/src/display_sdl/display_sdl_mod.h Thu May 15 15:01:03 2008 +0000
+++ b/src/display_sdl/display_sdl_mod.h Thu May 15 15:11:33 2008 +0000
@@ -45,16 +45,45 @@ typedef struct SDLDisplay
/* Number of module opens: */
TAPTR sdl_RefCount;
+ /* list of all visuals: */
+ struct TList sdl_vlist;
+
#if 0
/* Time module base ptr: */
TAPTR sdl_TimeBase;
/* Timerequest: */
TAPTR sdl_TimeReq;
+ #endif
+
/* Module global memory manager (thread safe): */
TAPTR sdl_MemMgr;
- #endif
} TMOD_SDL;
+
+typedef struct
+{
+ struct TNode node;
+
+ TINT winwidth, winheight;
+ TINT winleft, wintop;
More information about the teklib-general
mailing list