Page 1 of 2

Same code, new PC, CEGUI Stopped working?

Posted: Tue Nov 10, 2015 17:15
by Illiander
Symptoms:

On my old computer, I had a project that used CEGUI, and CEGUI was working just fine.
On my new computer (same hardware, OS updated with clean reinstall) all I get is a small square in the window colour in the middle of my opengl window.

Code hasn't changed. CEGUI version may have increased.

OS is Gentoo, and CEGUI isn't throwing me error messages (at least, none that I can see).

Relevent bits of code (a lot of the initialisation stuff for TaharezLook came direct from a tutorial):

Code: Select all

#include <CEGUI/CEGUI.h>
#include <CEGUI/RendererModules/OpenGL/GL3Renderer.h>

class CEGUIHandler
{
public:
    CEGUIHandler();
    ~CEGUIHandler();

    CEGUI::Window* init(std::string base);
    CEGUI::Window* get_base(std::string base);

    CEGUI::Editbox* getActiveEditbox();

    void set_mode(std::string base);

    void hello_window(std::string base);

    void menu(std::string base);

    void model_viewer(std::string base);

private:
    std::map<std::string, CEGUI::Window*> roots;
};

//****************** header/implementation file split *******************

#include <CEGUI/System.h>

CEGUIHandler::CEGUIHandler()
{
    /*CEGUI::OpenGL3Renderer& myRenderer =*/ CEGUI::OpenGL3Renderer::bootstrapSystem();
    //CEGUI::WindowManager& wmgr = CEGUI::WindowManager::getSingleton();

    // initialise the required dirs for the DefaultResourceProvider
    CEGUI::DefaultResourceProvider* rp = static_cast<CEGUI::DefaultResourceProvider*>
    (CEGUI::System::getSingleton().getResourceProvider());
    rp->setResourceGroupDirectory("schemes", "/usr/share/cegui-0/schemes/");
    rp->setResourceGroupDirectory("imagesets", "/usr/share/cegui-0/imagesets/");
    rp->setResourceGroupDirectory("fonts", "/usr/share/cegui-0/fonts/");
    rp->setResourceGroupDirectory("layouts", "/usr/share/cegui-0/layouts/");
    rp->setResourceGroupDirectory("looknfeels", "/usr/share/cegui-0/looknfeel/");
    rp->setResourceGroupDirectory("lua_scripts", "/usr/share/cegui-0/lua_scripts/");
    // This is only really needed if you are using Xerces and need to
    // specify the schemas location
    rp->setResourceGroupDirectory("schemas", "/usr/share/cegui-0/xml_schemas/");


    // set the default resource groups to be used
    CEGUI::ImageManager::setImagesetDefaultResourceGroup("imagesets");
    CEGUI::Font::setDefaultResourceGroup("fonts");
    CEGUI::Scheme::setDefaultResourceGroup("schemes");
    CEGUI::WidgetLookManager::setDefaultResourceGroup("looknfeels");
    CEGUI::WindowManager::setDefaultResourceGroup("layouts");
    CEGUI::ScriptModule::setDefaultResourceGroup("lua_scripts");
    // setup default group for validation schemas
    CEGUI::XMLParser* parser = CEGUI::System::getSingleton().getXMLParser();
    if (parser->isPropertyPresent("SchemaDefaultResourceGroup"))
        parser->setProperty("SchemaDefaultResourceGroup", "schemas");
    // create (load) the TaharezLook scheme file
    // (this auto-loads the TaharezLook looknfeel and imageset files)
    CEGUI::SchemeManager::getSingleton().createFromFile( "TaharezLook.scheme" );
    // create (load) a font.
    // The first font loaded automatically becomes the default font, but note
    // that the scheme might have already loaded a font, so there may already
    // be a default set - if we want the "DejaVuSans-10" font to definitely
    // be the default, we should set the default explicitly afterwards.
    CEGUI::FontManager::getSingleton().createFromFile( "DejaVuSans-10.font" );

    CEGUI::System::getSingleton().getDefaultGUIContext().getMouseCursor().setDefaultImage( "TaharezLook/MouseArrow" );
    CEGUI::System::getSingleton().getDefaultGUIContext().setDefaultTooltipType( "TaharezLook/Tooltip" );
}

CEGUI::Window* CEGUIHandler::init(std::string base)
{
    CEGUI::WindowManager& wmgr = CEGUI::WindowManager::getSingleton();

    CEGUI::Window* myRoot = wmgr.createWindow( "DefaultWindow", "root" );
    myRoot->setMousePassThroughEnabled(true);
    CEGUI::System::getSingleton().getDefaultGUIContext().setRootWindow( myRoot );
    myRoot->setPosition( CEGUI::UVector2( CEGUI::UDim( 0.0f, 0.0f ), CEGUI::UDim( 0.0f, 0.0f ) ) );
    myRoot->setSize( CEGUI::USize( CEGUI::UDim( 1.0f, 0.0f ), CEGUI::UDim( 1.0f, 0.0f ) ) );

    roots[base] = myRoot;

    return myRoot;
}

void CEGUIHandler::set_mode(std::string base)
{
    CEGUI::System::getSingleton().getDefaultGUIContext().setRootWindow( roots[base] );
}

CEGUI::Window* CEGUIHandler::get_base(std::string base)
{
    if (roots.find(base) != roots.end())
        return roots[base];
    else
        return 0;
}

void CEGUIHandler::menu(std::string base)
{
    CEGUI::Window* myRoot = roots[base];
    CEGUI::WindowManager& wmgr = CEGUI::WindowManager::getSingleton();

    CEGUI::FrameWindow* fWnd = static_cast<CEGUI::FrameWindow*>(wmgr.createWindow( "TaharezLook/FrameWindow", "MenuWindow" ));
    myRoot->addChild( fWnd );
    fWnd->setPosition( CEGUI::UVector2( CEGUI::UDim( 0.25f, 0.0f ), CEGUI::UDim( 0.25f, 0.0f ) ) );
    fWnd->setSize( CEGUI::USize( CEGUI::UDim( 0.5f, 0.0f ), CEGUI::UDim( 0.5f, 0.0f ) ) );
    fWnd->setText( "Main Menu" );

    CEGUI::Window* viewer_button = CEGUI::WindowManager::getSingleton().createWindow("TaharezLook/Button","ViewerButton");
    viewer_button->setPosition(CEGUI::UVector2(CEGUI::UDim(0.25,0),CEGUI::UDim(0.25,0)));
    viewer_button->setSize(CEGUI::USize(CEGUI::UDim(0,100),CEGUI::UDim(0,25)));
    viewer_button->setText("Model Viewer");
    fWnd->addChild(viewer_button);

    CEGUI::Window* demo_button = CEGUI::WindowManager::getSingleton().createWindow("TaharezLook/Button","DemoButton");
    demo_button->setPosition(CEGUI::UVector2(CEGUI::UDim(0.25,0),CEGUI::UDim(0.50,0)));
    demo_button->setSize(CEGUI::USize(CEGUI::UDim(0,50),CEGUI::UDim(0,25)));
    demo_button->setText("Demo");
    fWnd->addChild(demo_button);

    CEGUI::Window* exit_button = CEGUI::WindowManager::getSingleton().createWindow("TaharezLook/Button","ExitButton");
    exit_button->setPosition(CEGUI::UVector2(CEGUI::UDim(0.25,0),CEGUI::UDim(0.75,0)));
    exit_button->setSize(CEGUI::USize(CEGUI::UDim(0,50),CEGUI::UDim(0,25)));
    exit_button->setText("Exit");
    fWnd->addChild(exit_button);
}


I've got this all sequestered away in one class because it doesn't/didn't play nicely with the XWindows initialisation stuff, which is also sequestered away in it's own class. I'll probably split out the "make a new set of CEGUI bits" code at some point, into a selection of classes, but that's not really important if I can't get CEGUI windows to show up properly at all.

What's changed?/what have I messed up?/What other information do I need to fix this?

Re: Same code, new PC, CEGUI Stopped working?

Posted: Thu Nov 12, 2015 20:07
by Ident
Use v0-8, you probably have an updated version of glm that causes this, it is fixed in latest v0-8 branch. Tell me if this fixed it. I am pushing our 0.8.5 release forward, it needs to be released asap because it fixes breaking issues like this one.

Re: Same code, new PC, CEGUI Stopped working?

Posted: Fri Nov 13, 2015 12:44
by Illiander
Yup, I'm using cegui 0.8.4 (and glm 0.9.6.1, in case that's a useful datapoint)

What's the download url for v0-8? (mirror://sourceforge/crayzedsgui/cegui-0.8.3.tar.bz2 and mirror://sourceforge/crayzedsgui/cegui-0.8.2.tar.bz2 didn't work, and they're the only two post 0.8 ebuilds I could find)

I don't really want to wait for the gentoo devs to get a 0.8.5 ebuild together, as not having the gui work is a pretty big stumbling block for development, but I also want to keep cegui handled by my package manager, because not doing that will lead to madness.


It *is* reassuring to know it wasn't something I broke though. :-/

Re: Same code, new PC, CEGUI Stopped working?

Posted: Fri Nov 13, 2015 12:49
by Ident

Re: Same code, new PC, CEGUI Stopped working?

Posted: Fri Nov 13, 2015 18:56
by Illiander
Thanks, got that installed, but now it's not playing nicely with something else and refusing to even compile.

First error is:

Code: Select all

/usr/lib/gcc/x86_64-pc-linux-gnu/4.8.5/include/g++-v4/functional: In instantiation of '_Result std::_Bind<_Functor(_Bound_args ...)>::__call(std::tuple<_Args2 ...>&&, std::_Index_tuple<_Indexes ...>) [with _Result = bool; _Args = {}; long unsigned int ..._Indexes = {0ul}; _Functor = std::_Mem_fn<void (ModelViewer::*)()>; _Bound_args = {ModelViewer*}]':
/usr/lib/gcc/x86_64-pc-linux-gnu/4.8.5/include/g++-v4/functional:1355:24:   required from '_Result std::_Bind<_Functor(_Bound_args ...)>::operator()(_Args&& ...) [with _Args = {}; _Result = bool; _Functor = std::_Mem_fn<void (ModelViewer::*)()>; _Bound_args = {ModelViewer*}]'
/usr/include/cegui-0/CEGUI/FunctorCopySlot.h:91:41:   required by substitution of 'template<class U> static CEGUI::FunctorCopySlot_detail::Yes CEGUI::FunctorCopySlot_detail::HasBoolNoArgsOp<T>::Test(CEGUI::FunctorCopySlot_detail::HasBoolNoArgsOp<T>::SFINAE<U, (& U:: operator())>*) [with U = U; T = std::_Bind<std::_Mem_fn<void (ModelViewer::*)()>(ModelViewer*)>] [with U = std::_Bind<std::_Mem_fn<void (ModelViewer::*)()>(ModelViewer*)>]'


The stack of includes that throws that error expands out to this (I think) (I removed duplicates for clarity, and including something a second time "should" be a no-op):

Code: Select all

#include <functional>
#include <boost/date_time.hpp>
#include <vector>
#include <string>
#include <event2/bufferevent.h>
#include <boost/serialization/base_object.hpp>
#include <boost/serialization/array.hpp>
#include <boost/serialization/vector.hpp>
#include <boost/serialization/map.hpp>
#include <boost/serialization/string.hpp>
#include <boost/serialization/list.hpp>
#include <boost/serialization/version.hpp>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#define GLEW_STATIC
#include <GL/glew.h>
#include <GL/glu.h>
#define GLM_FORCE_RADIANS
#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp>
#include <glm/gtc/type_ptr.hpp>
#include <map>
#include <list>
#include <boost/thread.hpp>
#include <CEGUI/CEGUI.h>
#include <CEGUI/RendererModules/OpenGL/GL3Renderer.h>


Anything there jump out as a know issue? I am using boost function pointers in my code, but it seems that the error is getting thrown before the compiler even gets there.

Re: Same code, new PC, CEGUI Stopped working?

Posted: Fri Nov 13, 2015 19:08
by Ident
Martin changed something about bindings which caused problems with boost binding, I thought this was fixed. I just informed Martin of your problem.

Re: Same code, new PC, CEGUI Stopped working?

Posted: Sat Nov 14, 2015 17:09
by Kulik
Paste the full error message please, the main part of it is missing.

Re: Same code, new PC, CEGUI Stopped working?

Posted: Sat Nov 14, 2015 21:04
by Illiander
This is my entire compiler output, hopefully I won't have missed anything this time, but it will include several copies of the error messages I'm getting.

Sorry about that, but better too much than too little, right?

Code: Select all

-------------- Build: Debug in Engine (compiler: GNU GCC Compiler)---------------

g++ -Wall -fexceptions -std=gnu++0x -g -I../../include -I../../src -I../../geom/include -I../../geom/src -I../../4x/include -I../../4x/src -I/usr/include/freetype2 -I/usr/include -I/usr/include/cegui-0 -I/usr/include/assimp -I/usr/include/ImageMagick-6 -Iinclude -c /home/illy/Documents/Game_Concepts/Engine/4x/src/model_viewer.cpp -o obj/Debug/4x/src/model_viewer.o
In file included from ../../include/game_event.h:4:0,
                 from ../../include/../4x/include/model_viewer.h:4,
                 from /home/illy/Documents/Game_Concepts/Engine/4x/src/model_viewer.cpp:1:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.8.5/include/g++-v4/functional: In instantiation of '_Result std::_Bind<_Functor(_Bound_args ...)>::__call(std::tuple<_Args2 ...>&&, std::_Index_tuple<_Indexes ...>) [with _Result = bool; _Args = {}; long unsigned int ..._Indexes = {0ul}; _Functor = std::_Mem_fn<void (ModelViewer::*)()>; _Bound_args = {ModelViewer*}]':
/usr/lib/gcc/x86_64-pc-linux-gnu/4.8.5/include/g++-v4/functional:1355:24:   required from '_Result std::_Bind<_Functor(_Bound_args ...)>::operator()(_Args&& ...) [with _Args = {}; _Result = bool; _Functor = std::_Mem_fn<void (ModelViewer::*)()>; _Bound_args = {ModelViewer*}]'
/usr/include/cegui-0/CEGUI/FunctorCopySlot.h:91:41:   required by substitution of 'template<class U> static CEGUI::FunctorCopySlot_detail::Yes CEGUI::FunctorCopySlot_detail::HasBoolNoArgsOp<T>::Test(CEGUI::FunctorCopySlot_detail::HasBoolNoArgsOp<T>::SFINAE<U, (& U:: operator())>*) [with U = U; T = std::_Bind<std::_Mem_fn<void (ModelViewer::*)()>(ModelViewer*)>] [with U = std::_Bind<std::_Mem_fn<void (ModelViewer::*)()>(ModelViewer*)>]'
/usr/include/cegui-0/CEGUI/FunctorCopySlot.h:93:46:   required from 'const bool CEGUI::FunctorCopySlot_detail::HasBoolNoArgsOp<std::_Bind<std::_Mem_fn<void (ModelViewer::*)()>(ModelViewer*)> >::Value'
/usr/include/cegui-0/CEGUI/FunctorCopySlot.h:117:12:   required from 'struct CEGUI::FunctorCopySlot_detail::DisableIf<CEGUI::FunctorCopySlot_detail::HasBoolNoArgsOp<std::_Bind<std::_Mem_fn<void (ModelViewer::*)()>(ModelViewer*)> >, void>'
/usr/include/cegui-0/CEGUI/FunctorCopySlot.h:223:17:   required by substitution of 'template<class T> bool CEGUI::FunctorCopySlot_detail::call(const T&, void (T::*)()const, const CEGUI::EventArgs&, typename CEGUI::FunctorCopySlot_detail::DisableIf<CEGUI::FunctorCopySlot_detail::HasBoolEventArgsConstOp<T> >::Type*, typename CEGUI::FunctorCopySlot_detail::DisableIf<CEGUI::FunctorCopySlot_detail::HasBoolEventArgsOp<T> >::Type*, typename CEGUI::FunctorCopySlot_detail::DisableIf<CEGUI::FunctorCopySlot_detail::HasVoidEventArgsConstOp<T> >::Type*, typename CEGUI::FunctorCopySlot_detail::DisableIf<CEGUI::FunctorCopySlot_detail::HasVoidEventArgsOp<T> >::Type*, typename CEGUI::FunctorCopySlot_detail::DisableIf<CEGUI::FunctorCopySlot_detail::HasBoolNoArgsConstOp<T> >::Type*, typename CEGUI::FunctorCopySlot_detail::DisableIf<CEGUI::FunctorCopySlot_detail::HasBoolNoArgsOp<T> >::Type*, void*) [with T = std::_Bind<std::_Mem_fn<void (ModelViewer::*)()>(ModelViewer*)>]'
/usr/include/cegui-0/CEGUI/FunctorCopySlot.h:268:79:   required from 'bool CEGUI::FunctorCopySlot<T>::operator()(const CEGUI::EventArgs&) [with T = std::_Bind<std::_Mem_fn<void (ModelViewer::*)()>(ModelViewer*)>]'
/home/illy/Documents/Game_Concepts/Engine/4x/src/model_viewer.cpp:232:1:   required from here
/usr/lib/gcc/x86_64-pc-linux-gnu/4.8.5/include/g++-v4/functional:1296:50: error: void value not ignored as it ought to be
         (get<_Indexes>(_M_bound_args), __args)...);
                                                  ^
/usr/lib/gcc/x86_64-pc-linux-gnu/4.8.5/include/g++-v4/functional: In instantiation of '_Result std::_Bind<_Functor(_Bound_args ...)>::__call_c(std::tuple<_Args2 ...>&&, std::_Index_tuple<_Indexes ...>) const [with _Result = bool; _Args = {}; long unsigned int ..._Indexes = {0ul}; _Functor = std::_Mem_fn<void (ModelViewer::*)()>; _Bound_args = {ModelViewer*}]':
/usr/lib/gcc/x86_64-pc-linux-gnu/4.8.5/include/g++-v4/functional:1369:24:   required from '_Result std::_Bind<_Functor(_Bound_args ...)>::operator()(_Args&& ...) const [with _Args = {}; _Result = bool; _Functor = std::_Mem_fn<void (ModelViewer::*)()>; _Bound_args = {ModelViewer*}]'
/usr/include/cegui-0/CEGUI/FunctorCopySlot.h:82:41:   required by substitution of 'template<class U> static CEGUI::FunctorCopySlot_detail::Yes CEGUI::FunctorCopySlot_detail::HasBoolNoArgsConstOp<T>::Test(CEGUI::FunctorCopySlot_detail::HasBoolNoArgsConstOp<T>::SFINAE<U, (& U:: operator())>*) [with U = U; T = std::_Bind<std::_Mem_fn<void (ModelViewer::*)()>(ModelViewer*)>] [with U = std::_Bind<std::_Mem_fn<void (ModelViewer::*)()>(ModelViewer*)>]'
/usr/include/cegui-0/CEGUI/FunctorCopySlot.h:84:46:   required from 'const bool CEGUI::FunctorCopySlot_detail::HasBoolNoArgsConstOp<std::_Bind<std::_Mem_fn<void (ModelViewer::*)()>(ModelViewer*)> >::Value'
/usr/include/cegui-0/CEGUI/FunctorCopySlot.h:117:12:   required from 'struct CEGUI::FunctorCopySlot_detail::DisableIf<CEGUI::FunctorCopySlot_detail::HasBoolNoArgsConstOp<std::_Bind<std::_Mem_fn<void (ModelViewer::*)()>(ModelViewer*)> >, void>'
/usr/include/cegui-0/CEGUI/FunctorCopySlot.h:209:17:   required by substitution of 'template<class T> bool CEGUI::FunctorCopySlot_detail::call(T&, bool (T::*)(), const CEGUI::EventArgs&, typename CEGUI::FunctorCopySlot_detail::DisableIf<CEGUI::FunctorCopySlot_detail::HasBoolEventArgsConstOp<T> >::Type*, typename CEGUI::FunctorCopySlot_detail::DisableIf<CEGUI::FunctorCopySlot_detail::HasBoolEventArgsOp<T> >::Type*, typename CEGUI::FunctorCopySlot_detail::DisableIf<CEGUI::FunctorCopySlot_detail::HasVoidEventArgsConstOp<T> >::Type*, typename CEGUI::FunctorCopySlot_detail::DisableIf<CEGUI::FunctorCopySlot_detail::HasVoidEventArgsOp<T> >::Type*, typename CEGUI::FunctorCopySlot_detail::DisableIf<CEGUI::FunctorCopySlot_detail::HasBoolNoArgsConstOp<T> >::Type*, void*, void*) [with T = std::_Bind<std::_Mem_fn<void (ModelViewer::*)()>(ModelViewer*)>]'
/usr/include/cegui-0/CEGUI/FunctorCopySlot.h:268:79:   required from 'bool CEGUI::FunctorCopySlot<T>::operator()(const CEGUI::EventArgs&) [with T = std::_Bind<std::_Mem_fn<void (ModelViewer::*)()>(ModelViewer*)>]'
/home/illy/Documents/Game_Concepts/Engine/4x/src/model_viewer.cpp:232:1:   required from here
/usr/lib/gcc/x86_64-pc-linux-gnu/4.8.5/include/g++-v4/functional:1305:50: error: void value not ignored as it ought to be
         (get<_Indexes>(_M_bound_args), __args)...);
                                                  ^
/usr/lib/gcc/x86_64-pc-linux-gnu/4.8.5/include/g++-v4/functional: In instantiation of '_Result std::_Bind<_Functor(_Bound_args ...)>::__call(std::tuple<_Args2 ...>&&, std::_Index_tuple<_Indexes ...>) [with _Result = bool; _Args = {const CEGUI::EventArgs&}; long unsigned int ..._Indexes = {0ul}; _Functor = std::_Mem_fn<void (ModelViewer::*)()>; _Bound_args = {ModelViewer*}]':
/usr/lib/gcc/x86_64-pc-linux-gnu/4.8.5/include/g++-v4/functional:1355:24:   required from '_Result std::_Bind<_Functor(_Bound_args ...)>::operator()(_Args&& ...) [with _Args = {const CEGUI::EventArgs&}; _Result = bool; _Functor = std::_Mem_fn<void (ModelViewer::*)()>; _Bound_args = {ModelViewer*}]'
/usr/include/cegui-0/CEGUI/FunctorCopySlot.h:55:41:   required by substitution of 'template<class U> static CEGUI::FunctorCopySlot_detail::Yes CEGUI::FunctorCopySlot_detail::HasBoolEventArgsOp<T>::Test(CEGUI::FunctorCopySlot_detail::HasBoolEventArgsOp<T>::SFINAE<U, (& U:: operator())>*) [with U = U; T = std::_Bind<std::_Mem_fn<void (ModelViewer::*)()>(ModelViewer*)>] [with U = std::_Bind<std::_Mem_fn<void (ModelViewer::*)()>(ModelViewer*)>]'
/usr/include/cegui-0/CEGUI/FunctorCopySlot.h:57:46:   required from 'const bool CEGUI::FunctorCopySlot_detail::HasBoolEventArgsOp<std::_Bind<std::_Mem_fn<void (ModelViewer::*)()>(ModelViewer*)> >::Value'
/usr/include/cegui-0/CEGUI/FunctorCopySlot.h:117:12:   required from 'struct CEGUI::FunctorCopySlot_detail::DisableIf<CEGUI::FunctorCopySlot_detail::HasBoolEventArgsOp<std::_Bind<std::_Mem_fn<void (ModelViewer::*)()>(ModelViewer*)> >, void>'
/usr/include/cegui-0/CEGUI/FunctorCopySlot.h:165:17:   required by substitution of 'template<class T> bool CEGUI::FunctorCopySlot_detail::call(const T&, void (T::*)(const CEGUI::EventArgs&)const, const CEGUI::EventArgs&, typename CEGUI::FunctorCopySlot_detail::DisableIf<CEGUI::FunctorCopySlot_detail::HasBoolEventArgsConstOp<T> >::Type*, typename CEGUI::FunctorCopySlot_detail::DisableIf<CEGUI::FunctorCopySlot_detail::HasBoolEventArgsOp<T> >::Type*, void*, void*, void*, void*, void*) [with T = std::_Bind<std::_Mem_fn<void (ModelViewer::*)()>(ModelViewer*)>]'
/usr/include/cegui-0/CEGUI/FunctorCopySlot.h:268:79:   required from 'bool CEGUI::FunctorCopySlot<T>::operator()(const CEGUI::EventArgs&) [with T = std::_Bind<std::_Mem_fn<void (ModelViewer::*)()>(ModelViewer*)>]'
/home/illy/Documents/Game_Concepts/Engine/4x/src/model_viewer.cpp:232:1:   required from here
/usr/lib/gcc/x86_64-pc-linux-gnu/4.8.5/include/g++-v4/functional:1296:50: error: void value not ignored as it ought to be
         (get<_Indexes>(_M_bound_args), __args)...);
                                                  ^
/usr/lib/gcc/x86_64-pc-linux-gnu/4.8.5/include/g++-v4/functional: In instantiation of '_Result std::_Bind<_Functor(_Bound_args ...)>::__call_c(std::tuple<_Args2 ...>&&, std::_Index_tuple<_Indexes ...>) const [with _Result = bool; _Args = {const CEGUI::EventArgs&}; long unsigned int ..._Indexes = {0ul}; _Functor = std::_Mem_fn<void (ModelViewer::*)()>; _Bound_args = {ModelViewer*}]':
/usr/lib/gcc/x86_64-pc-linux-gnu/4.8.5/include/g++-v4/functional:1369:24:   required from '_Result std::_Bind<_Functor(_Bound_args ...)>::operator()(_Args&& ...) const [with _Args = {const CEGUI::EventArgs&}; _Result = bool; _Functor = std::_Mem_fn<void (ModelViewer::*)()>; _Bound_args = {ModelViewer*}]'
/usr/include/cegui-0/CEGUI/FunctorCopySlot.h:46:41:   required by substitution of 'template<class U> static CEGUI::FunctorCopySlot_detail::Yes CEGUI::FunctorCopySlot_detail::HasBoolEventArgsConstOp<T>::Test(CEGUI::FunctorCopySlot_detail::HasBoolEventArgsConstOp<T>::SFINAE<U, (& U:: operator())>*) [with U = U; T = std::_Bind<std::_Mem_fn<void (ModelViewer::*)()>(ModelViewer*)>] [with U = std::_Bind<std::_Mem_fn<void (ModelViewer::*)()>(ModelViewer*)>]'
/usr/include/cegui-0/CEGUI/FunctorCopySlot.h:48:46:   required from 'const bool CEGUI::FunctorCopySlot_detail::HasBoolEventArgsConstOp<std::_Bind<std::_Mem_fn<void (ModelViewer::*)()>(ModelViewer*)> >::Value'
/usr/include/cegui-0/CEGUI/FunctorCopySlot.h:117:12:   required from 'struct CEGUI::FunctorCopySlot_detail::DisableIf<CEGUI::FunctorCopySlot_detail::HasBoolEventArgsConstOp<std::_Bind<std::_Mem_fn<void (ModelViewer::*)()>(ModelViewer*)> >, void>'
/usr/include/cegui-0/CEGUI/FunctorCopySlot.h:151:17:   required by substitution of 'template<class T> bool CEGUI::FunctorCopySlot_detail::call(T&, bool (T::*)(const CEGUI::EventArgs&), const CEGUI::EventArgs&, typename CEGUI::FunctorCopySlot_detail::DisableIf<CEGUI::FunctorCopySlot_detail::HasBoolEventArgsConstOp<T> >::Type*, void*, void*, void*, void*, void*, void*) [with T = std::_Bind<std::_Mem_fn<void (ModelViewer::*)()>(ModelViewer*)>]'
/usr/include/cegui-0/CEGUI/FunctorCopySlot.h:268:79:   required from 'bool CEGUI::FunctorCopySlot<T>::operator()(const CEGUI::EventArgs&) [with T = std::_Bind<std::_Mem_fn<void (ModelViewer::*)()>(ModelViewer*)>]'
/home/illy/Documents/Game_Concepts/Engine/4x/src/model_viewer.cpp:232:1:   required from here
/usr/lib/gcc/x86_64-pc-linux-gnu/4.8.5/include/g++-v4/functional:1305:50: error: void value not ignored as it ought to be
         (get<_Indexes>(_M_bound_args), __args)...);
                                                  ^
Process terminated with status 1 (0 minute(s), 3 second(s))
12 error(s), 24 warning(s) (0 minute(s), 3 second(s))

Re: Same code, new PC, CEGUI Stopped working?

Posted: Wed Nov 25, 2015 09:43
by Illiander
Well, I tried pulling the <functional> includes away from the CEGUI includes, but I'm using them too intertwined for that to be possible.

Any news on fixing this at the CEGUI end?

Re: Same code, new PC, CEGUI Stopped working?

Posted: Wed Nov 25, 2015 19:10
by Ident
Martin is looking into it, things are complicated and he is scheduling very little time on CEGUI currently so we have to wait until he gets to looking at it. I have no clue about it so I cant do anything here and I dont wanna look into this since I have other tasks for CEGUI open.

The issue is also the reason we didn't release 0.8.5 yet

Re: Same code, new PC, CEGUI Stopped working?

Posted: Fri Dec 04, 2015 17:02
by Illiander
Ok, this is looking like it will take longer than I have to fix, so I guess I'll downgrade for now.

What's the last known version of glm that works?

Re: Same code, new PC, CEGUI Stopped working?

Posted: Fri Dec 04, 2015 18:59
by Ident
0.9.4

Afterwards the warning for removal of GLM_FORCE_RADIANS was introduced.

Sorry for the inconvenience!

Re: Same code, new PC, CEGUI Stopped working?

Posted: Sat Dec 05, 2015 13:05
by Illiander
I rolled back to glm 0.9.3.2 (latest pre0.9.4 that's easily accessible on Gentoo), and am still getting similar issues.

Those ones seemed to be from my boost version. (Errors were popping up on the boost/date_time include)

So I rolled back to boost 1.52 and cegui 0.8.4 (both the earliest still on the main Gentoo tree (other than a cegui 0.6.2, which I think is pre-falagard skinning?)) and am only getting one error:

Code: Select all

g++ -Wall -fexceptions -std=gnu++0x -g -I../../include -I../../src -I../../geom/include -I../../geom/src -I../../4x/include -I../../4x/src -I/usr/include/freetype2 -I/usr/include -I/usr/include/cegui-0 -I/usr/include/assimp -I/usr/include/ImageMagick-6 -Iinclude -c /home/illy/Documents/Game_Concepts/Engine/4x/src/model_viewer.cpp -o obj/Debug/4x/src/model_viewer.o
In file included from /usr/include/cegui-0/CEGUI/SubscriberSlot.h:32:0,
                 from /usr/include/cegui-0/CEGUI/BoundSlot.h:31,
                 from /usr/include/cegui-0/CEGUI/Event.h:31,
                 from /usr/include/cegui-0/CEGUI/AnimationInstance.h:33,
                 from /usr/include/cegui-0/CEGUI/CEGUI.h:35,
                 from ../../include/CEGUIHandler.h:4,
                 from /home/illy/Documents/Game_Concepts/Engine/4x/src/model_viewer.cpp:3:
/usr/include/cegui-0/CEGUI/FunctorCopySlot.h: In instantiation of 'bool CEGUI::FunctorCopySlot<T>::operator()(const CEGUI::EventArgs&) [with T = std::_Bind<std::_Mem_fn<void (ModelViewer::*)()>(ModelViewer*)>]':
/home/illy/Documents/Game_Concepts/Engine/4x/src/model_viewer.cpp:241:1:   required from here
/usr/include/cegui-0/CEGUI/FunctorCopySlot.h:50:30: error: void value not ignored as it ought to be
         return d_functor(args);
                              ^
/usr/include/cegui-0/CEGUI/FunctorCopySlot.h: In member function 'bool CEGUI::FunctorCopySlot<T>::operator()(const CEGUI::EventArgs&) [with T = std::_Bind<std::_Mem_fn<void (ModelViewer::*)()>(ModelViewer*)>]':
/usr/include/cegui-0/CEGUI/FunctorCopySlot.h:51:5: warning: control reaches end of non-void function [-Wreturn-type]
     }
     ^


Now, I remember having some issues with <functional> and void returns before, so it might just be I need to swap something back to returning a dummy int, but given the location of the bug, I'm not so sure.

I'll take another look through my own code next week and see if I can fix it at my end, otherwise I guess I'll have to go dig up a cegui 0.8.3 or something.

Re: Same code, new PC, CEGUI Stopped working?

Posted: Sat Dec 05, 2015 13:15
by Ident
0.8.4 doesnt have the boost::function issues. Or at least that would be news to me. What are you using now?

Re: Same code, new PC, CEGUI Stopped working?

Posted: Sat Dec 05, 2015 16:39
by Illiander
Cegui 0.8.4

Boost 1.52.0

glm 0.9.3.2

edit: And I just went through and swapped out all my void returning functors with dummy int returns, just to be sure, that last compile error is still there.