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