Hi, I was trying to replace the SDL_Surface from my code by using
AG_Surface but when I run it, it segfault (the compilation went fine)
with this:

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7b489ed in SizeRequest () from /usr/local/lib/libag_gui.so.1
(gdb) bt
#0  0x00007ffff7b489ed in SizeRequest () from /usr/local/lib/libag_gui.so.1
#1  0x00007ffff7af3d09 in AG_WidgetSizeReq () from /usr/local/lib/libag_gui.so.1
#2  0x00007ffff7af8d03 in SizeAllocate () from /usr/local/lib/libag_gui.so.1
#3  0x00007ffff7af3e06 in AG_WidgetSizeAlloc () from
/usr/local/lib/libag_gui.so.1
#4  0x00007ffff7af7c16 in AG_WindowSetGeometryRect () from
/usr/local/lib/libag_gui.so.1
#5  0x00007ffff7af8230 in AG_WindowMaximize () from
/usr/local/lib/libag_gui.so.1
#6  0x00000000004018bc in main (argc=1, argv=0x7fffffffe3a8) at gui.c:145

I send you the code with the commented lines that works in the main
function by using SDL_Surface with SDL_Image library for SDL.

Thanks.
Ernesto
/* Minimal application using Agar-GUI */

#include <agar/core.h>
#include <agar/gui.h>
//#include "SDL_image.h"

AG_Window *teg;
int puerto = 2000;

static void Quit(AG_Event *event)
{
  /*
  SDL_Event nev;

  nev.type = SDL_USEREVENT;
  SDL_PushEvent(&nev);
  */

  AG_QuitGUI();
}

static void Ok(AG_Event *event)
{
  printf("El puerto es %i\n", puerto);
}

static void Connect()
{
  AG_Window *connect;

  //connect = AG_WindowNew(AG_WINDOW_MODAL);
  connect = AG_WindowNewNamed(0, "connect");
  if (connect != NULL) {
    AG_WindowSetCaption(connect, "Connect to server");

    AG_Notebook *nb;
    AG_NotebookTab *ntab;

    nb = AG_NotebookNew(connect, 0);
    AG_Expand(nb);

    ntab = AG_NotebookAddTab(nb, "TEG Server Selection", AG_BOX_VERT);
    AG_LabelNewString(ntab, 0, "Server Options");
    AG_NumericalNewInt(ntab, 0, NULL, "Server port: ", &puerto);
    AG_TextboxNew(ntab, 0, "Server name: ");
    AG_TextboxNew(ntab, 0, "Name: ");
    AG_LabelNewString(ntab, 0, "                                                                ");

    ntab = AG_NotebookAddTab(nb, "Metaserver", AG_BOX_VERT);
    
    ntab = AG_NotebookAddTab(nb, "Another tab", AG_BOX_VERT);

    AG_HBox *hbox;
    hbox = AG_HBoxNew(connect, 0);
    AG_ExpandHoriz(hbox);
    AG_HBoxSetHomogenous(hbox, 1);
    AG_ButtonNewFn(hbox, 0, "Ok", Ok, NULL);
    AG_ButtonNew(hbox, 0, "Cancel");

    //AG_WindowSetGeometry(connect, 50, 50, 210, 180);
    //AG_WindowSetMinSize(connect, 210, 180);

    AG_WindowShow(connect);
  }
}

void mainMenu()
{
  AG_Menu *tegMenu;
  AG_MenuItem *m;

  tegMenu = AG_MenuNew(teg, 0);
  m = AG_MenuNode(tegMenu->root, "Game", NULL);
  {
    AG_MenuAction(m, "Connect", NULL, Connect, NULL);
    AG_MenuNode(m, "Disconnect", NULL);
    AG_MenuSeparator(m);
    AG_MenuNode(m, "Launch robot", NULL);
    AG_MenuSeparator(m);
    AG_MenuNode(m, "Scores...", NULL);
    AG_MenuSeparator(m);
    AG_MenuAction(m, "Quit", agIconClose.s, Quit, NULL);
  }
  m = AG_MenuNode(tegMenu->root, "Actions", NULL);
  {
    AG_MenuNode(m, "Start", NULL);
    AG_MenuNode(m, "Send armies", NULL);
    AG_MenuNode(m, "Update map", NULL);
    AG_MenuNode(m, "Reattack", NULL);
    AG_MenuNode(m, "Reset the attack", NULL);
    AG_MenuNode(m, "Regroup armies", NULL);
    AG_MenuNode(m, "Get card", NULL);
    AG_MenuNode(m, "End turn", NULL);
    AG_MenuSeparator(m);
    AG_MenuNode(m, "Surrender", NULL);
  }
  m = AG_MenuNode(tegMenu->root, "View", NULL);
  {
    AG_MenuNode(m, "View players", NULL);
    AG_MenuNode(m, "View mission", NULL);
    AG_MenuNode(m, "View cards", NULL);
    AG_MenuSeparator(m);
    AG_MenuNode(m, "Zoom In", NULL);
    AG_MenuNode(m, "Zoom Out", NULL);
    AG_MenuNode(m, "Zoom 1:1", NULL);
  }
  m = AG_MenuNode(tegMenu->root, "Settings", NULL);
  {
    AG_MenuNode(m, "Preferences", NULL);
  }
  m = AG_MenuNode(tegMenu->root, "Help", NULL);
  {
    AG_MenuNode(m, "Contents", NULL);
    AG_MenuNode(m, "About", NULL);
  }
}

int
main(int argc, char *argv[])
{
  //SDL_Surface *board;
  AG_Surface *board;

	if (AG_InitCore("teg", 0) == -1 ||
	    AG_InitVideo(640, 480, 8, 0) == -1) {
    fprintf(stderr, "%s\n", AG_GetError());
		return (1);
  }

  AG_BindGlobalKey(AG_KEY_ESCAPE, AG_KEYMOD_ANY, AG_QuitGUI);

	teg = AG_WindowNew(AG_WINDOW_PLAIN);
  AG_WindowSetPadding(teg, 0, 0, 0, 0);

  mainMenu();

  //board = IMG_Load("board.jpg");
  board = AG_SurfaceFromJPEG("board.jpg");
  //AG_PixmapFromSurface(teg, 0, AG_SurfaceFromSDL(board));
  AG_PixmapFromSurface(teg, 0, board);

  AG_WindowMaximize(teg);
  AG_WindowShow(teg);

  //SDL_FreeSurface(board);

  Connect();

	AG_EventLoop();
	return (0);
}
_______________________________________________
Agar mailing list
[email protected]
http://libagar.org/lists.html

Reply via email to