>From d870209176bdf4b7667b356d59b3c963050bf5d2 Mon Sep 17 00:00:00 2001
From: Johann Haarhoff <[email protected]>
Date: Fri, 26 Mar 2010 23:18:42 +0200
Subject: [PATCH] Got WINGs/Tests/wtest.c to build and run

Had to change some stuff in WINGs/widgets.c to prevent a segfault
wtest now runs and displays a very basic button outline. woohoo!
---
 WINGs/Tests/Makefile.am |    7 +-
 WINGs/widgets.c         |  170 +++++++++++++++++++++++------------------------
 2 files changed, 87 insertions(+), 90 deletions(-)

diff --git a/WINGs/Tests/Makefile.am b/WINGs/Tests/Makefile.am
index ed6463e..02a4d61 100644
--- a/WINGs/Tests/Makefile.am
+++ b/WINGs/Tests/Makefile.am
@@ -2,13 +2,14 @@
 
 AUTOMAKE_OPTIONS = no-dependencies
 
-noinst_PROGRAMS = wtest wmquery wmfile testmywidget 
+#noinst_PROGRAMS = wtest wmquery wmfile testmywidget 
+noinst_PROGRAMS = wtest
 
 LDADD= $(top_builddir)/WINGs/.libs/libWINGs.a \
                $(top_builddir)/WINGs/.libs/libWUtil.a \
                @XLIBS@ @XFTLIBS@ @INTLIBS@ @CAIRO_LIBS@ @GLIB_LIBS@
 
-testmywidget_SOURCES = testmywidget.c mywidget.c mywidget.h 
+#testmywidget_SOURCES = testmywidget.c mywidget.c mywidget.h 
 
 wtest_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.la
 
@@ -17,7 +18,7 @@ EXTRA_DIST = logo.xpm upbtn.xpm wm.html wm.png
 
 INCLUDES = -I$(top_srcdir)/WINGs -I$(top_srcdir)/src \
        -DRESOURCE_PATH=\"$(datadir)/WINGs\" @XFTFLAGS@ @HEADER_SEARCH_PATH@ \
-       -DDEBUG @XCFLAGS@ @GLIB_CFLAGS@ @CAIRO_CFLAGS@
+       -DDEBUG @GLIB_CFLAGS@ @CAIRO_CFLAGS@
        
 LIBTOOL = $(QUIET) $(SHELL) $(top_srcdir)/libtool $(LIBTOOL_ARG)
 
diff --git a/WINGs/widgets.c b/WINGs/widgets.c
index 3dc3ca7..a7488b1 100644
--- a/WINGs/widgets.c
+++ b/WINGs/widgets.c
@@ -730,98 +730,94 @@ WMScreen *WMCreateScreen(Display * display, int screen)
        /* create input method stuff */
        W_InitIM(scrPtr);
 
-       scrPtr->checkButtonImageOn = makeImage(scrPtr, CHECK_BUTTON_ON,
-                       CHECK_BUTTON_ON_WIDTH,
-                       CHECK_BUTTON_ON_HEIGHT, False);
-
-       scrPtr->checkButtonImageOff = makeImage(scrPtr, CHECK_BUTTON_OFF,
-                       CHECK_BUTTON_OFF_WIDTH,
-                       CHECK_BUTTON_OFF_HEIGHT, False);
-
-       scrPtr->radioButtonImageOn = makeImage(scrPtr, RADIO_BUTTON_ON,
-                       RADIO_BUTTON_ON_WIDTH,
-                       RADIO_BUTTON_ON_HEIGHT, False);
-
-       scrPtr->radioButtonImageOff = makeImage(scrPtr, RADIO_BUTTON_OFF,
-                       RADIO_BUTTON_OFF_WIDTH,
-                       RADIO_BUTTON_OFF_HEIGHT, False);
-
-       scrPtr->buttonArrow = makeImage(scrPtr, BUTTON_ARROW,
-                       BUTTON_ARROW_WIDTH, BUTTON_ARROW_HEIGHT,
-                       False);
-
-       scrPtr->pushedButtonArrow = makeImage(scrPtr, BUTTON_ARROW2,
-                       BUTTON_ARROW2_WIDTH, BUTTON_ARROW2_HEIGHT,
-                       False);
-
-
-       scrPtr->scrollerDimple = makeImage(scrPtr, SCROLLER_DIMPLE,
-                       SCROLLER_DIMPLE_WIDTH,
-                       SCROLLER_DIMPLE_HEIGHT, False);
-
-
-       scrPtr->upArrow = makeImage(scrPtr, SCROLLER_ARROW_UP,
-                       SCROLLER_ARROW_UP_WIDTH,
-                       SCROLLER_ARROW_UP_HEIGHT, True);
-
-       scrPtr->downArrow = makeImage(scrPtr, SCROLLER_ARROW_DOWN,
-                       SCROLLER_ARROW_DOWN_WIDTH,
-                       SCROLLER_ARROW_DOWN_HEIGHT, True);
-
-       scrPtr->leftArrow = makeImage(scrPtr, SCROLLER_ARROW_LEFT,
-                       SCROLLER_ARROW_LEFT_WIDTH,
-                       SCROLLER_ARROW_LEFT_HEIGHT, True);
-
-       scrPtr->rightArrow = makeImage(scrPtr, SCROLLER_ARROW_RIGHT,
-                       SCROLLER_ARROW_RIGHT_WIDTH,
-                       SCROLLER_ARROW_RIGHT_HEIGHT, True);
-
-       scrPtr->hiUpArrow = makeImage(scrPtr, HI_SCROLLER_ARROW_UP,
-                       SCROLLER_ARROW_UP_WIDTH,
-                       SCROLLER_ARROW_UP_HEIGHT, True);
-
-       scrPtr->hiDownArrow = makeImage(scrPtr, HI_SCROLLER_ARROW_DOWN,
-                       SCROLLER_ARROW_DOWN_WIDTH,
-                       SCROLLER_ARROW_DOWN_HEIGHT, True);
-
-       scrPtr->hiLeftArrow = makeImage(scrPtr, HI_SCROLLER_ARROW_LEFT,
-                       SCROLLER_ARROW_LEFT_WIDTH,
-                       SCROLLER_ARROW_LEFT_HEIGHT, True);
-
-       scrPtr->hiRightArrow = makeImage(scrPtr, HI_SCROLLER_ARROW_RIGHT,
-                       SCROLLER_ARROW_RIGHT_WIDTH,
-                       SCROLLER_ARROW_RIGHT_HEIGHT, True);
-
-       scrPtr->popUpIndicator = makeImage(scrPtr, POPUP_INDICATOR,
-                       POPUP_INDICATOR_WIDTH,
-                       POPUP_INDICATOR_HEIGHT, True);
-
-       scrPtr->pullDownIndicator = makeImage(scrPtr, PULLDOWN_INDICATOR,
-                       PULLDOWN_INDICATOR_WIDTH,
-                       PULLDOWN_INDICATOR_HEIGHT, True);
-
-       scrPtr->checkMark = makeImage(scrPtr, CHECK_MARK,
-                       CHECK_MARK_WIDTH,
-                       CHECK_MARK_HEIGHT, True);
-
-       loadPixmaps(scrPtr);
+//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXxx
+//FIXME
+//makeImage seems to cause apps to segfault if I uncomment the lines below.
+//I think it is because the data are allocated on the stack and it gets blown
+//I have traced the segfault to cairo_image_surface_create which works when
+//stuff gets allocated on the heap
+//
+//
+//     scrPtr->checkButtonImageOn = makeImage(scrPtr, CHECK_BUTTON_ON,
+//                     CHECK_BUTTON_ON_WIDTH,
+//                     CHECK_BUTTON_ON_HEIGHT, False);
+//
+//     scrPtr->checkButtonImageOff = makeImage(scrPtr, CHECK_BUTTON_OFF,
+//                     CHECK_BUTTON_OFF_WIDTH,
+//                     CHECK_BUTTON_OFF_HEIGHT, False);
+
+//     scrPtr->radioButtonImageOn = makeImage(scrPtr, RADIO_BUTTON_ON,
+//                     RADIO_BUTTON_ON_WIDTH,
+//                     RADIO_BUTTON_ON_HEIGHT, False);
+//
+//     scrPtr->radioButtonImageOff = makeImage(scrPtr, RADIO_BUTTON_OFF,
+//                     RADIO_BUTTON_OFF_WIDTH,
+//                     RADIO_BUTTON_OFF_HEIGHT, False);
+//
+//     scrPtr->buttonArrow = makeImage(scrPtr, BUTTON_ARROW,
+//                     BUTTON_ARROW_WIDTH, BUTTON_ARROW_HEIGHT,
+//                     False);
+//
+//     scrPtr->pushedButtonArrow = makeImage(scrPtr, BUTTON_ARROW2,
+//                     BUTTON_ARROW2_WIDTH, BUTTON_ARROW2_HEIGHT,
+//                     False);
+//
+//
+//     scrPtr->scrollerDimple = makeImage(scrPtr, SCROLLER_DIMPLE,
+//                     SCROLLER_DIMPLE_WIDTH,
+//                     SCROLLER_DIMPLE_HEIGHT, False);
+//
+//
+//     scrPtr->upArrow = makeImage(scrPtr, SCROLLER_ARROW_UP,
+//                     SCROLLER_ARROW_UP_WIDTH,
+//                     SCROLLER_ARROW_UP_HEIGHT, True);
+//
+//     scrPtr->downArrow = makeImage(scrPtr, SCROLLER_ARROW_DOWN,
+//                     SCROLLER_ARROW_DOWN_WIDTH,
+//                     SCROLLER_ARROW_DOWN_HEIGHT, True);
+//
+//     scrPtr->leftArrow = makeImage(scrPtr, SCROLLER_ARROW_LEFT,
+//                     SCROLLER_ARROW_LEFT_WIDTH,
+//                     SCROLLER_ARROW_LEFT_HEIGHT, True);
+//
+//     scrPtr->rightArrow = makeImage(scrPtr, SCROLLER_ARROW_RIGHT,
+//                     SCROLLER_ARROW_RIGHT_WIDTH,
+//                     SCROLLER_ARROW_RIGHT_HEIGHT, True);
+//
+//     scrPtr->hiUpArrow = makeImage(scrPtr, HI_SCROLLER_ARROW_UP,
+//                     SCROLLER_ARROW_UP_WIDTH,
+//                     SCROLLER_ARROW_UP_HEIGHT, True);
+//
+//     scrPtr->hiDownArrow = makeImage(scrPtr, HI_SCROLLER_ARROW_DOWN,
+//                     SCROLLER_ARROW_DOWN_WIDTH,
+//                     SCROLLER_ARROW_DOWN_HEIGHT, True);
+//
+//     scrPtr->hiLeftArrow = makeImage(scrPtr, HI_SCROLLER_ARROW_LEFT,
+//                     SCROLLER_ARROW_LEFT_WIDTH,
+//                     SCROLLER_ARROW_LEFT_HEIGHT, True);
+//
+//     scrPtr->hiRightArrow = makeImage(scrPtr, HI_SCROLLER_ARROW_RIGHT,
+//                     SCROLLER_ARROW_RIGHT_WIDTH,
+//                     SCROLLER_ARROW_RIGHT_HEIGHT, True);
+//
+//     scrPtr->popUpIndicator = makeImage(scrPtr, POPUP_INDICATOR,
+//                     POPUP_INDICATOR_WIDTH,
+//                     POPUP_INDICATOR_HEIGHT, True);
+//
+//     scrPtr->pullDownIndicator = makeImage(scrPtr, PULLDOWN_INDICATOR,
+//                     PULLDOWN_INDICATOR_WIDTH,
+//                     PULLDOWN_INDICATOR_HEIGHT, True);
+//
+//     scrPtr->checkMark = makeImage(scrPtr, CHECK_MARK,
+//                     CHECK_MARK_WIDTH,
+//                     CHECK_MARK_HEIGHT, True);
+//
+//     loadPixmaps(scrPtr);
 
        scrPtr->defaultCursor = XCreateFontCursor(display, XC_left_ptr);
 
        scrPtr->textCursor = XCreateFontCursor(display, XC_xterm);
 
-       {
-               XColor bla;
-               Pixmap blank;
-
-               blank = XCreatePixmap(display, scrPtr->stipple, 1, 1, 1);
-               XSetForeground(display, scrPtr->monoGC, 0);
-               XFillRectangle(display, blank, scrPtr->monoGC, 0, 0, 1, 1);
-
-               scrPtr->invisibleCursor = XCreatePixmapCursor(display, blank, 
blank, &bla, &bla, 0, 0);
-               XFreePixmap(display, blank);
-       }
-
 #ifdef HAVE_XINTERNATOMS
        XInternAtoms(display, atomNames, sizeof(atomNames) / sizeof(char *), 
False, atoms);
 #else
-- 
1.6.0.3

Reply via email to