[teklib-general] teklib: switch to directfb window mode in progress

Franciska Schulze fschulze at neoscientists.org
Sun Sep 7 15:31:01 CEST 2008


details:   http://hg.teklib.org/teklib/rev/f70a78d33a8e
changeset: 195:f70a78d33a8e
user:      Franciska Schulze <fschulze at neoscientists.org>
date:      Sun May 18 16:55:53 2008 +0000
description:
switch to directfb window mode in progress

diffs (truncated from 500 to 100 lines):

diff -r 91c68b6dee31 -r f70a78d33a8e src/display_dfb/display_dfb_api.c
--- a/src/display_dfb/display_dfb_api.c	Thu May 15 19:08:14 2008 +0200
+++ b/src/display_dfb/display_dfb_api.c	Sun May 18 16:55:53 2008 +0000
@@ -11,6 +11,8 @@ static TBOOL
 static TBOOL
 check_backup(VISUAL *v, TINT tvcmd, TINT x, TINT y, TINT a, TINT b)
 {
+
+#if 0
 	if (v->backup_valid != -1)
 	{
 		switch (tvcmd)
@@ -40,11 +42,14 @@ check_backup(VISUAL *v, TINT tvcmd, TINT
 		}
 	}
 	return v->backup_valid;
+#endif
+	return TTRUE;
 }
 
 static TVOID
 update_backup(TMOD_DFB *mod, VISUAL *v)
 {
+#if 0
 	if (v->backup_valid == TFALSE || v->backup_valid == -1)
 	{
 		DFBRectangle rect = { v->mousex, v->mousey, mod->dfb_CursorWidth,
@@ -53,6 +58,9 @@ update_backup(TMOD_DFB *mod, VISUAL *v)
 		v->backup_valid = TTRUE;
 		v->cursor_valid = TFALSE;
 	}
+#endif
+	//v->winsurface->Flip(v->winsurface, NULL, 0);
+
 }
 
 /*****************************************************************************/
@@ -63,7 +71,9 @@ dfb_openvisual(TMOD_DFB *mod, struct TVR
 	TTAGITEM *tags = req->tvr_Op.OpenVisual.Tags;
 	TAPTR exec = TGetExecBase(mod);
 	VISUAL *v;
-	DFBSurfaceDescription dsc;
+	//DFBSurfaceDescription dsc;
+	DFBWindowDescription wdsc;
+
 	struct FontNode *fn;
 
 	if (!TISLISTEMPTY(&mod->dfb_vlist))
@@ -92,6 +102,45 @@ dfb_openvisual(TMOD_DFB *mod, struct TVR
 	v->title = (TSTRPTR)
 		TGetTag(tags, TVisual_Title, (TTAG) "TEKlib visual");
 
+	wdsc.flags = (DWDESC_POSX | DWDESC_POSY | DWDESC_WIDTH | DWDESC_HEIGHT);
+	wdsc.posx   = 0;
+	wdsc.posy   = 0;
+	wdsc.width  = v->winwidth;
+	wdsc.height = v->winheight;
+
+	if (mod->dfb_Layer->CreateWindow(mod->dfb_Layer, &wdsc, &v->window) == DFB_OK)
+	{
+		v->window->GetSurface(v->window, &v->winsurface);
+		v->window->SetOpacity(v->window, 0xFF);
+		v->window->GetID(v->window, &v->winid);
+		v->window->AttachEventBuffer(v->window, mod->dfb_Events);
+
+		v->winsurface->SetColor(v->winsurface, 0x00, 0x00, 0xff, 0xff);
+		v->winsurface->DrawRectangle(v->winsurface, 0, 0, wdsc.width, wdsc.height);
+		v->winsurface->SetColor(v->winsurface, 0x80, 0x80, 0x80, 0xff);
+		v->winsurface->FillRectangle(v->winsurface, 1, 1, wdsc.width-2, wdsc.height-2);
+		v->winsurface->Flip(v->winsurface, NULL, 0);
+
+		/* init default font */
+		fn = mod->dfb_fm.deffont;
+		v->curfont = fn;
+		mod->dfb_fm.defref++;
+
+		if (v->winsurface->SetFont(v->winsurface, fn->font) == DFB_OK)
+		{
+			if (v->winsurface->SetFont(v->winsurface, fn->font) == DFB_OK)
+			{
+				TDBPRINTF(TDB_ERROR,("Open success\n"));
+				TAddTail(&mod->dfb_vlist, &v->node);
+
+				/* success: */
+				return;
+			}
+		}
+     }
+
+
+#if 0
 	dsc.flags = DSDESC_CAPS;
 	dsc.caps  = DSCAPS_PRIMARY; /*| DSCAPS_FLIPPING; */
 
@@ -130,6 +179,7 @@ dfb_openvisual(TMOD_DFB *mod, struct TVR
 			}
   		}
 	}
+#endif
 


More information about the teklib-general mailing list