ppl.h only exists on Visual Studio on Windows and is used for task scheduling. But it's easy (for me) to use the task scheduler from FreeFileSync, which would be portable to all OSs. I'll see to include it when I update to ScummVm 2.0
Last edit: Zenju 2019-04-08
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I think I forgot! :D Just updated the latest source code (which is still ScummVM 2.0) to use the FFS task scheduler. The build now requires an additional file, thread.cpp, which is part of FreeFileSync.
Caveat: I haven't tested the code! I couldn't even compile it, since ScummVM apparently doesn't support Unicode on Windows. On macOS/Linux this shouldn't be a problem. You just have to make sure that thread.cpp (and its dependencies e.g. sys_error.cpp, ect.) are compiled and linked against ScummVM.
Last edit: Zenju 2020-04-23
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Thanks for updating that! :) I registered on the freefilesync board but for some reason my user account hasn't been activated. We're having a problem building freefilesync on macos, is there any docs for how to do that? These were the notes from my friend:
smp: the main issue is that the zen thread library from FreeSync is not macOS compatible
smp: it depends for example on sys/prctl.h - which is a pure linux thing
smp: also it requires error codes from cerrno - then there is a switch which includes like 30 linux specific error codes. i removed that code because it wasnt really required but then in thread.cpp things got wired
smp: i still try to understand how this thing should be compilable under macOS as it seems freesync is runnable on macos, i am still looking for the they how they did it
smp: maybe they cross compiled, but .... i need to dig deeper 😄
smp: i also dont cant find any documentation how to build the freesync program. have you seen any docs?
jim: I didnt see any, will try to find that
smp: Yeah, me neither. I didnt find anything in the forum either.
jim: It seems the guy who wrote the scummvm with xbrz is also wrote freefilesync
jim: there's a forum on freefilesync, I just registered, will ask if there's any info
jim: hmm waiting to be activated
smp: cool!
smp: i cant understand how this should work right now
smp: i dont see any platform specific parts for the posix stuff to distinguish between macOS and linux
smp: the thing is that if there is no way to build the thread.cpp for darwin the scummVM wont compile 😕
smp: i also thought that he can test the builds using GitHub + TravisCI
smp: For free / open source projects the integration usable for free
smp: https://docs.travis-ci.com/user/reference/osx/
smp: https://docs.travis-ci.com/user/multi-os/
jim: nice idea :)
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
primary-expressionbefore‘>’token168|static_assert(std::is_integral<PixTrg>::value,"PixTrg* is expected to be cast-able to char*");|^backends/graphics/opengl/../../../LIBS/xbrz/xbrz_tools.h:168:45:error:‘::value’hasnotbeendeclared168|static_assert(std::is_integral<PixTrg>::value,"PixTrg* is expected to be cast-able to char*");|^~~~~backends/graphics/opengl/../../../LIBS/xbrz/xbrz_tools.h:168:5:error:therearenoargumentsto‘static_assert’thatdependonatemplateparameter,soadeclarationof‘static_assert’mustbeavailable[-fpermissive]168|static_assert(std::is_integral<PixTrg>::value,"PixTrg* is expected to be cast-able to char*");|^~~~~~~~~~~~~backends/graphics/opengl/../../../LIBS/xbrz/xbrz_tools.h:169:24:error:‘is_same’isnotamemberof‘std’169|static_assert(std::is_same<decltype(pixCvrt(uint32_t())),PixTrg>::value,"PixConverter returning wrong pixel format");|^~~~~~~backends/graphics/opengl/../../../LIBS/xbrz/xbrz_tools.h:169:49:error:therearenoargumentsto‘uint32_t’thatdependonatemplateparameter,soadeclarationof‘uint32_t’mustbeavailable[-fpermissive]169|static_assert(std::is_same<decltype(pixCvrt(uint32_t())),PixTrg>::value,"PixConverter returning wrong pixel format");|^~~~~~~~backends/graphics/opengl/../../../LIBS/xbrz/xbrz_tools.h:169:69:error:expectedprimary-expressionbefore‘>’token169|tic_assert(std::is_same<decltype(pixCvrt(uint32_t())),PixTrg>::value,"PixConverter returning wrong pixel format");|^backends/graphics/opengl/../../../LIBS/xbrz/xbrz_tools.h:169:72:error:‘::value’hasnotbeendeclared169|_assert(std::is_same<decltype(pixCvrt(uint32_t())),PixTrg>::value,"PixConverter returning wrong pixel format");|^~~~~backends/graphics/opengl/../../../LIBS/xbrz/xbrz_tools.h:171:55:error:‘uint32_t’wasnotdeclaredinthisscope;didyoumean‘u_int32_t’?171|if(srcPitch<srcWidth*static_cast<int>(sizeof(uint32_t))|||^~~~~~~~|u_int32_tbackends/graphics/opengl/../../../LIBS/xbrz/xbrz_tools.h:190:22:warning:non-staticdatamemberinitializersonlyavailablewith‘-std=c++11’or‘-std=gnu++11’190|intx1=0;|^backends/graphics/opengl/../../../LIBS/xbrz/xbrz_tools.h:191:22:warning:non-staticdatamemberinitializersonlyavailablewith‘-std=c++11’or‘-std=gnu++11’191|intx2=0;|^backends/graphics/opengl/../../../LIBS/xbrz/xbrz_tools.h:192:22:warning:non-staticdatamemberinitializersonlyavailablewith‘-std=c++11’or‘-std=gnu++11’192|doublexx1=0;|^backends/graphics/opengl/../../../LIBS/xbrz/xbrz_tools.h:193:22:warning:non-staticdatamemberinitializersonlyavailablewith‘-std=c++11’or‘-std=gnu++11’193|doublex2x=0;|^backends/graphics/opengl/../../../LIBS/xbrz/xbrz_tools.h:205:37:warning:extendedinitializerlistsonlyavailablewith‘-std=c++11’or‘-std=gnu++11’205|buf[x]={x1,x2,xx1,x2x};|^backends/graphics/opengl/../../../LIBS/xbrz/xbrz_tools.h:217:15:error:‘uint32_t’doesnotnameatype;didyoumean‘u_int32_t’?217|constuint32_t*constsrcLine=byteAdvance(src,y1*srcPitch);|^~~~~~~~|u_int32_tbackends/graphics/opengl/../../../LIBS/xbrz/xbrz_tools.h:218:15:error:‘uint32_t’doesnotnameatype;didyoumean‘u_int32_t’?218|constuint32_t*constsrcLineNext=byteAdvance(src,y2*srcPitch);|^~~~~~~~|u_int32_tbackends/graphics/opengl/../../../LIBS/xbrz/xbrz_tools.h:234:13:warning:‘auto’changesmeaninginC++11;pleaseremoveit[-Wc++11-compat]234|autointerpolate=[=](intoffset)|^~~~|----backends/graphics/opengl/../../../LIBS/xbrz/xbrz_tools.h:234:18:error:‘interpolate’doesnotnameatype234|autointerpolate=[=](intoffset)|^~~~~~~~~~~backends/graphics/opengl/../../../LIBS/xbrz/xbrz_tools.h:248:31:error:therearenoargumentsto‘interpolate’thatdependonatemplateparameter,soadeclarationof‘interpolate’mustbeavailable[-fpermissive]248|constdoublebi=interpolate(0);|^~~~~~~~~~~backends/graphics/opengl/../../../LIBS/xbrz/xbrz_tools.h:249:31:error:therearenoargumentsto‘interpolate’thatdependonatemplateparameter,soadeclarationof‘interpolate’mustbeavailable[-fpermissive]249|constdoublegi=interpolate(1);|^~~~~~~~~~~backends/graphics/opengl/../../../LIBS/xbrz/xbrz_tools.h:250:31:error:therearenoargumentsto‘interpolate’thatdependonatemplateparameter,soadeclarationof‘interpolate’mustbeavailable[-fpermissive]250|constdoubleri=interpolate(2);|^~~~~~~~~~~backends/graphics/opengl/../../../LIBS/xbrz/xbrz_tools.h:251:31:error:therearenoargumentsto‘interpolate’thatdependonatemplateparameter,soadeclarationof‘interpolate’mustbeavailable[-fpermissive]251|constdoubleai=interpolate(3);|^~~~~~~~~~~backends/graphics/opengl/../../../LIBS/xbrz/xbrz_tools.h:253:19:warning:‘auto’changesmeaninginC++11;pleaseremoveit[-Wc++11-compat]253|constautob=static_cast<uint32_t>(bi+0.5);|^~~~|----backends/graphics/opengl/../../../LIBS/xbrz/xbrz_tools.h:253:24:error:‘b’doesnotnameatype;didyoumean‘bi’?253|constautob=static_cast<uint32_t>(bi+0.5);|^|bibackends/graphics/opengl/../../../LIBS/xbrz/xbrz_tools.h:254:19:warning:‘auto’changesmeaninginC++11;pleaseremoveit[-Wc++11-compat]254|constautog=static_cast<uint32_t>(gi+0.5);|^~~~|----backends/graphics/opengl/../../../LIBS/xbrz/xbrz_tools.h:254:24:error:‘g’doesnotnameatype;didyoumean‘gi’?254|constautog=static_cast<uint32_t>(gi+0.5);|^|gibackends/graphics/opengl/../../../LIBS/xbrz/xbrz_tools.h:255:19:warning:‘auto’changesmeaninginC++11;pleaseremoveit[-Wc++11-compat]255|constautor=static_cast<uint32_t>(ri+0.5);|^~~~|----backends/graphics/opengl/../../../LIBS/xbrz/xbrz_tools.h:255:24:error:‘r’doesnotnameatype;didyoumean‘ri’?255|constautor=static_cast<uint32_t>(ri+0.5);|^|ribackends/graphics/opengl/../../../LIBS/xbrz/xbrz_tools.h:256:19:warning:‘auto’changesmeaninginC++11;pleaseremoveit[-Wc++11-compat]256|constautoa=static_cast<uint32_t>(ai+0.5);|^~~~|----backends/graphics/opengl/../../../LIBS/xbrz/xbrz_tools.h:256:24:error:‘a’doesnotnameatype;didyoumean‘ai’?256|constautoa=static_cast<uint32_t>(ai+0.5);|^|aibackends/graphics/opengl/../../../LIBS/xbrz/xbrz_tools.h:258:19:error:‘uint32_t’doesnotnameatype;didyoumean‘u_int32_t’?258|constuint32_ttrgPix=(a<<24)|(r<<16)|(g<<8)|b;|^~~~~~~~|u_int32_tbackends/graphics/opengl/../../../LIBS/xbrz/xbrz_tools.h:260:34:error:‘trgPix’wasnotdeclaredinthisscope260|trgLine[x]=pixCvrt(trgPix);|^~~~~~C++image/pcx.oC++image/pict.oC++image/png.oC++image/tga.oInfileincludedfrombackends/graphics/opengl/texture.cpp:40:./backends/graphics/opengl/texture.h:Atglobalscope:./backends/graphics/opengl/texture.h:332:29:warning:non-staticdatamemberinitializersonlyavailablewith‘-std=c++11’or‘-std=gnu++11’332|intxbrzScaleFactor_=-1;//laterlinear-scaledtofitscreenwithopenGL|^backends/graphics/opengl/texture.cpp:Inmemberfunction‘virtualvoidOpenGL::Texture::updateGLTexture()’:backends/graphics/opengl/texture.cpp:307:28:error:‘max’wasnotdeclaredinthisscope;didyoumean‘std::max’?307|dirtyArea.top=max(0,dirtyArea.top-2);|^~~|std::maxInfileincludedfrom/usr/include/c++/9/vector:60,frombackends/graphics/opengl/texture.cpp:23:/usr/include/c++/9/bits/stl_algobase.h:268:5:note:‘std::max’declaredhere268|max(const_Tp&__a,const_Tp&__b,_Compare__comp)|^~~backends/graphics/opengl/texture.cpp:309:28:error:‘min’wasnotdeclaredinthisscope;didyoumean‘std::min’?309|dirtyArea.bottom=min(getSurface()->h,dirtyArea.bottom+2);//compareagainst"_clut8Data"|^~~|std::minInfileincludedfrom/usr/include/c++/9/vector:60,frombackends/graphics/opengl/texture.cpp:23:/usr/include/c++/9/bits/stl_algobase.h:246:5:note:‘std::min’declaredhere246|min(const_Tp&__a,const_Tp&__b,_Compare__comp)|^~~backends/graphics/opengl/texture.cpp:Atglobalscope:backends/graphics/opengl/texture.cpp:357:29:warning:non-staticdatamemberinitializersonlyavailablewith‘-std=c++11’or‘-std=gnu++11’357|inttransparentColor=-1;|^backends/graphics/opengl/texture.cpp:Inmemberfunction‘virtualvoidOpenGL::TextureCLUT8::allocate(uint,uint)’:backends/graphics/opengl/texture.cpp:384:35:error:‘max’wasnotdeclaredinthisscope;didyoumean‘std::max’?384|xbrzScaleFactor_=min(6,max(2,static_cast<int>(round(sampleMonitorHeight/height))));|^~~|std::maxInfileincludedfrom/usr/include/c++/9/vector:60,frombackends/graphics/opengl/texture.cpp:23:/usr/include/c++/9/bits/stl_algobase.h:268:5:note:‘std::max’declaredhere268|max(const_Tp&__a,const_Tp&__b,_Compare__comp)|^~~backends/graphics/opengl/texture.cpp:384:28:error:‘min’wasnotdeclaredinthisscope;didyoumean‘std::min’?384|xbrzScaleFactor_=min(6,max(2,static_cast<int>(round(sampleMonitorHeight/height))));|^~~|std::minInfileincludedfrom/usr/include/c++/9/vector:60,frombackends/graphics/opengl/texture.cpp:23:/usr/include/c++/9/bits/stl_algobase.h:246:5:note:‘std::min’declaredhere246|min(const_Tp&__a,const_Tp&__b,_Compare__comp)|^~~backends/graphics/opengl/texture.cpp:388:5:warning:this‘else’clausedoesnotguard...[-Wmisleading-indentation]388|else|^~~~backends/graphics/opengl/texture.cpp:394:2:note:...thisstatement,butthelatterismisleadinglyindentedasifitwereguardedbythe‘else’394|if(width==_clut8Data.w&&height==_clut8Data.h){|^~backends/graphics/opengl/texture.cpp:Inmemberfunction‘virtualvoidOpenGL::TextureCLUT8::setPalette(uint,uint,constbyte*)’:backends/graphics/opengl/texture.cpp:442:9:warning:‘auto’changesmeaninginC++11;pleaseremoveit[-Wc++11-compat]442|autorgbTrg=reinterpret_cast<unsignedchar*>(&xbrzPimpl_->eightBitToRgb[start]);|^~~~|----backends/graphics/opengl/texture.cpp:442:14:error:‘rgbTrg’doesnotnameatype442|autorgbTrg=reinterpret_cast<unsignedchar*>(&xbrzPimpl_->eightBitToRgb[start]);|^~~~~~backends/graphics/opengl/texture.cpp:449:14:error:‘rgbTrg’wasnotdeclaredinthisscope449|*rgbTrg++=b;//compatiblebyteorderforxBRZ|^~~~~~backends/graphics/opengl/texture.cpp:457:5:warning:this‘else’clausedoesnotguard...[-Wmisleading-indentation]457|else|^~~~backends/graphics/opengl/texture.cpp:468:2:note:...thisstatement,butthelatterismisleadinglyindentedasifitwereguardedbythe‘else’468|flagDirty();|^~~~~~~~~backends/graphics/opengl/texture.cpp:Atglobalscope:backends/graphics/opengl/texture.cpp:491:23:error:‘function’isnotamemberof‘std’491|zen::ThreadGroup<std::function<void()>>globalXbrzThreadGroup(std::max<int>(std::thread::hardware_concurrency(),1),"xBRZ Scaler");|^~~~~~~~backends/graphics/opengl/texture.cpp:491:23:note:‘std::function’isonlyavailablefromC++11onwardsbackends/graphics/opengl/texture.cpp:491:23:error:‘function’isnotamemberof‘std’backends/graphics/opengl/texture.cpp:491:23:note:‘std::function’isonlyavailablefromC++11onwardsbackends/graphics/opengl/texture.cpp:491:37:error:acalltoaconstructorcannotappearinaconstant-expression491|zen::ThreadGroup<std::function<void()>>globalXbrzThreadGroup(std::max<int>(std::thread::hardware_concurrency(),1),"xBRZ Scaler");|^backends/graphics/opengl/texture.cpp:491:68:error:‘max<int>’cannotappearinaconstant-expression491|hreadGroup<std::function<void()>>globalXbrzThreadGroup(std::max<int>(std::thread::hardware_concurrency(),1),"xBRZ Scaler");|^~~~~~~~backends/graphics/opengl/texture.cpp:491:82:error:‘thread’isnotamemberof‘std’491|::function<void()>>globalXbrzThreadGroup(std::max<int>(std::thread::hardware_concurrency(),1),"xBRZ Scaler");|^~~~~~backends/graphics/opengl/texture.cpp:491:82:note:‘std::thread’isonlyavailablefromC++11onwardsbackends/graphics/opengl/texture.cpp:491:115:error:afunctioncallcannotappearinaconstant-expression491|eadGroup(std::max<int>(std::thread::hardware_concurrency(),1),"xBRZ Scaler");|^backends/graphics/opengl/texture.cpp:491:131:error:afunctioncallcannotappearinaconstant-expression491|x<int>(std::thread::hardware_concurrency(),1),"xBRZ Scaler");|^backends/graphics/opengl/texture.cpp:491:131:error:templateargument1isinvalidbackends/graphics/opengl/texture.cpp:Infunction‘voidOpenGL::{anonymous}::copyDirtyArea(constuint32_t*,int,PixelType*,int,constCommon::Rect&,constGraphics::PixelFormat&)’:backends/graphics/opengl/texture.cpp:500:5:warning:‘auto’changesmeaninginC++11;pleaseremoveit[-Wc++11-compat]500|autosrcLoc=reinterpret_cast<constuint32_t*>(reinterpret_cast<constchar*>(src)+dirtyArea.top*srcPitch+dirtyArea.left*sizeof(uint32_t));|^~~~|----backends/graphics/opengl/texture.cpp:500:10:error:‘srcLoc’doesnotnameatype500|autosrcLoc=reinterpret_cast<constuint32_t*>(reinterpret_cast<constchar*>(src)+dirtyArea.top*srcPitch+dirtyArea.left*sizeof(uint32_t));|^~~~~~backends/graphics/opengl/texture.cpp:501:5:warning:‘auto’changesmeaninginC++11;pleaseremoveit[-Wc++11-compat]501|autotrgLoc=reinterpret_cast<PixelType*>(reinterpret_cast<char*>(trg)+dirtyArea.top*trgPitch+dirtyArea.left*sizeof(PixelType));|^~~~|----backends/graphics/opengl/texture.cpp:501:10:error:‘trgLoc’doesnotnameatype501|autotrgLoc=reinterpret_cast<PixelType*>(reinterpret_cast<char*>(trg)+dirtyArea.top*trgPitch+dirtyArea.left*sizeof(PixelType));|^~~~~~backends/graphics/opengl/texture.cpp:506:3:warning:‘auto’changesmeaninginC++11;pleaseremoveit[-Wc++11-compat]506|auto&tg=globalXbrzThreadGroup;|^~~~|----backends/graphics/opengl/texture.cpp:506:9:error:ISOC++forbidsdeclarationof‘tg’withnotype[-fpermissive]506|auto&tg=globalXbrzThreadGroup;|^~backends/graphics/opengl/texture.cpp:506:14:error:‘globalXbrzThreadGroup’wasnotdeclaredinthisscope506|auto&tg=globalXbrzThreadGroup;|^~~~~~~~~~~~~~~~~~~~~backends/graphics/opengl/texture.cpp:509:12:error:requestformember‘run’in‘tg’,whichisofnon-classtype‘int’509|tg.run([=]|^~~backends/graphics/opengl/texture.cpp:Inlambdafunction:backends/graphics/opengl/texture.cpp:511:34:error:‘srcLoc’wasnotdeclaredinthisscope511|nearestNeighborScale(srcLoc,dirtyArea.width(),dirtyArea.height(),srcPitch,|^~~~~~backends/graphics/opengl/texture.cpp:512:34:error:‘trgLoc’wasnotdeclaredinthisscope512|trgLoc,dirtyArea.width(),dirtyArea.height(),trgPitch,|^~~~~~backends/graphics/opengl/texture.cpp:513:13:error:therearenoargumentsto‘min’thatdependonatemplateparameter,soadeclarationof‘min’mustbeavailable[-fpermissive]513|y,min(y+TASK_GRANULARITY_XBRZ,dirtyArea.height()),|^~~backends/graphics/opengl/texture.cpp:Inlambdafunction:backends/graphics/opengl/texture.cpp:514:97:error:‘xbrz::getAlpha’cannotbeusedasafunction514|static_cast<PixelType>(targetFormat.ARGBToColor(getAlpha(pix),getRed(pix),getGreen(pix),getBlue(pix)));});|^backends/graphics/opengl/texture.cpp:514:110:error:‘xbrz::getRed’cannotbeusedasafunction514|PixelType>(targetFormat.ARGBToColor(getAlpha(pix),getRed(pix),getGreen(pix),getBlue(pix)));});|^backends/graphics/opengl/texture.cpp:514:125:error:‘xbrz::getGreen’cannotbeusedasafunction514|etFormat.ARGBToColor(getAlpha(pix),getRed(pix),getGreen(pix),getBlue(pix)));});|^backends/graphics/opengl/texture.cpp:514:139:error:‘xbrz::getBlue’cannotbeusedasafunction514|rmat.ARGBToColor(getAlpha(pix),getRed(pix),getGreen(pix),getBlue(pix)));});|^backends/graphics/opengl/texture.cpp:Inlambdafunction:backends/graphics/opengl/texture.cpp:514:144:warning:lambdaexpressionsonlyavailablewith‘-std=c++11’or‘-std=gnu++11’514|r(getAlpha(pix),getRed(pix),getGreen(pix),getBlue(pix)));});|^backends/graphics/opengl/texture.cpp:Infunction‘voidOpenGL::{anonymous}::copyDirtyArea(constuint32_t*,int,PixelType*,int,constCommon::Rect&,constGraphics::PixelFormat&)’:backends/graphics/opengl/texture.cpp:515:9:warning:lambdaexpressionsonlyavailablewith‘-std=c++11’or‘-std=gnu++11’515|});|^backends/graphics/opengl/texture.cpp:516:8:error:requestformember‘wait’in‘tg’,whichisofnon-classtype‘int’516|tg.wait();|^~~~backends/graphics/opengl/texture.cpp:Inmemberfunction‘virtualvoidOpenGL::TextureCLUT8::updateGLTexture()’:backends/graphics/opengl/texture.cpp:539:9:warning:‘auto’changesmeaninginC++11;pleaseremoveit[-Wc++11-compat]539|autoraw8bitIn=static_cast<constunsignedchar*>(_clut8Data.getBasePtr(dirtyArea.left,dirtyArea.top));|^~~~|----backends/graphics/opengl/texture.cpp:539:14:error:‘raw8bitIn’doesnotnameatype539|autoraw8bitIn=static_cast<constunsignedchar*>(_clut8Data.getBasePtr(dirtyArea.left,dirtyArea.top));|^~~~~~~~~backends/graphics/opengl/texture.cpp:540:9:warning:‘auto’changesmeaninginC++11;pleaseremoveit[-Wc++11-compat]540|autoxbrzBufIn=&xbrzPimpl_->xbrzBufIn[dirtyArea.top * _clut8Data.w + dirtyArea.left];|^~~~|----backends/graphics/opengl/texture.cpp:540:14:error:‘xbrzBufIn’doesnotnameatype540|autoxbrzBufIn=&xbrzPimpl_->xbrzBufIn[dirtyArea.top * _clut8Data.w + dirtyArea.left];|^~~~~~~~~backends/graphics/opengl/texture.cpp:541:15:warning:‘auto’changesmeaninginC++11;pleaseremoveit[-Wc++11-compat]541|constauto&eightBitToRgb=xbrzPimpl_->eightBitToRgb;|^~~~|----backends/graphics/opengl/texture.cpp:541:21:error:ISOC++forbidsdeclarationof‘eightBitToRgb’withnotype[-fpermissive]541|constauto&eightBitToRgb=xbrzPimpl_->eightBitToRgb;|^~~~~~~~~~~~~backends/graphics/opengl/texture.cpp:541:49:error:invalidinitializationofreferenceoftype‘constint&’fromexpressionoftype‘std::vector<unsignedint>’541|constauto&eightBitToRgb=xbrzPimpl_->eightBitToRgb;|~~~~~~~~~~~~^~~~~~~~~~~~~backends/graphics/opengl/texture.cpp:546:17:error:‘xbrzBufIn’wasnotdeclaredinthisscope546|xbrzBufIn[x]=eightBitToRgb[raw8bitIn[x]];|^~~~~~~~~C++image/codecs/bmp_raw.obackends/graphics/opengl/texture.cpp:546:46:error:‘raw8bitIn’wasnotdeclaredinthisscope546|xbrzBufIn[x]=eightBitToRgb[raw8bitIn[x]];|^~~~~~~~~backends/graphics/opengl/texture.cpp:548:13:error:‘raw8bitIn’wasnotdeclaredinthisscope548|raw8bitIn+=_clut8Data.pitch;|^~~~~~~~~backends/graphics/opengl/texture.cpp:549:13:error:‘xbrzBufIn’wasnotdeclaredinthisscope549|xbrzBufIn+=_clut8Data.w;|^~~~~~~~~backends/graphics/opengl/texture.cpp:559:28:error:‘max’wasnotdeclaredinthisscope;didyoumean‘std::max’?559|dirtyArea.top=max(0,dirtyArea.top-2);|^~~|std::maxInfileincludedfrom/usr/include/c++/9/vector:60,frombackends/graphics/opengl/texture.cpp:23:/usr/include/c++/9/bits/stl_algobase.h:268:5:note:‘std::max’declaredhere268|max(const_Tp&__a,const_Tp&__b,_Compare__comp)|^~~backends/graphics/opengl/texture.cpp:561:28:error:‘min’wasnotdeclaredinthisscope;didyoumean‘std::min’?561|dirtyArea.bottom=min(_clut8Data.h,dirtyArea.bottom+2);|^~~|std::minInfileincludedfrom/usr/include/c++/9/vector:60,frombackends/graphics/opengl/texture.cpp:23:/usr/include/c++/9/bits/stl_algobase.h:246:5:note:‘std::min’declaredhere246|min(const_Tp&__a,const_Tp&__b,_Compare__comp)|^~~backends/graphics/opengl/texture.cpp:568:4:warning:‘auto’changesmeaninginC++11;pleaseremoveit[-Wc++11-compat]568|auto&tg=globalXbrzThreadGroup;|^~~~|----backends/graphics/opengl/texture.cpp:568:10:error:ISOC++forbidsdeclarationof‘tg’withnotype[-fpermissive]568|auto&tg=globalXbrzThreadGroup;|^~C++image/codecs/cdtoons.obackends/graphics/opengl/texture.cpp:568:15:error:‘globalXbrzThreadGroup’wasnotdeclaredinthisscope568|auto&tg=globalXbrzThreadGroup;|^~~~~~~~~~~~~~~~~~~~~backends/graphics/opengl/texture.cpp:571:20:error:requestformember‘run’in‘tg’,whichisofnon-classtype‘int’571|tg.run([=]{xbrz::scale(xbrzScaleFactor_,|^~~backends/graphics/opengl/texture.cpp:Inlambdafunction:backends/graphics/opengl/texture.cpp:576:18:error:‘xbrz::ColorFormat’isnotaclassornamespace576|xbrz::ColorFormat::ARGB,|^~~~~~~~~~~backends/graphics/opengl/texture.cpp:Inmemberfunction‘virtualvoidOpenGL::TextureCLUT8::updateGLTexture()’:backends/graphics/opengl/texture.cpp:578:66:warning:lambdaexpressionsonlyavailablewith‘-std=c++11’or‘-std=gnu++11’578|i,min(i+TASK_GRANULARITY_XBRZ,dirtyArea.bottom));});|^backends/graphics/opengl/texture.cpp:579:16:error:requestformember‘wait’in‘tg’,whichisofnon-classtype‘int’579|tg.wait();|^~~~backends/graphics/opengl/texture.cpp:592:5:warning:this‘else’clausedoesnotguard...[-Wmisleading-indentation]592|else|^~~~backends/graphics/opengl/texture.cpp:610:2:note:...thisstatement,butthelatterismisleadinglyindentedasifitwereguardedbythe‘else’610|Texture::updateGLTexture();|^~~~~~~make:***[Makefile.common:104: backends/graphics/opengl/texture.o]Error1make:***Waitingforunfinishedjobs....pi@RK3399:~/Desktop/ScummVM_2.0.0+xBRZ_Sources$
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I can't be much more descriptive than the title sadly. How can I fix this?
Image:
Image:
ppl.h only exists on Visual Studio on Windows and is used for task scheduling. But it's easy (for me) to use the task scheduler from FreeFileSync, which would be portable to all OSs. I'll see to include it when I update to ScummVm 2.0
Last edit: Zenju 2019-04-08
I can find ppl.h in FreeFileSync source then?
please do that!! ive need this sooo much!!
I've tried compiling on Macos and ran into the same issue, hoping you can switch to FreeFileSync :)
I think I forgot! :D Just updated the latest source code (which is still ScummVM 2.0) to use the FFS task scheduler. The build now requires an additional file, thread.cpp, which is part of FreeFileSync.
Caveat: I haven't tested the code! I couldn't even compile it, since ScummVM apparently doesn't support Unicode on Windows. On macOS/Linux this shouldn't be a problem. You just have to make sure that thread.cpp (and its dependencies e.g. sys_error.cpp, ect.) are compiled and linked against ScummVM.
Last edit: Zenju 2020-04-23
Thanks for updating that! :) I registered on the freefilesync board but for some reason my user account hasn't been activated. We're having a problem building freefilesync on macos, is there any docs for how to do that? These were the notes from my friend:
smp: the main issue is that the zen thread library from FreeSync is not macOS compatible
smp: it depends for example on sys/prctl.h - which is a pure linux thing
smp: also it requires error codes from cerrno - then there is a switch which includes like 30 linux specific error codes. i removed that code because it wasnt really required but then in thread.cpp things got wired
smp: i still try to understand how this thing should be compilable under macOS as it seems freesync is runnable on macos, i am still looking for the they how they did it
smp: maybe they cross compiled, but .... i need to dig deeper 😄
smp: i also dont cant find any documentation how to build the freesync program. have you seen any docs?
jim: I didnt see any, will try to find that
smp: Yeah, me neither. I didnt find anything in the forum either.
jim: It seems the guy who wrote the scummvm with xbrz is also wrote freefilesync
jim: there's a forum on freefilesync, I just registered, will ask if there's any info
jim: hmm waiting to be activated
smp: cool!
smp: i cant understand how this should work right now
smp: i dont see any platform specific parts for the posix stuff to distinguish between macOS and linux
smp: the thing is that if there is no way to build the thread.cpp for darwin the scummVM wont compile 😕
smp: i also thought that he can test the builds using GitHub + TravisCI
smp: For free / open source projects the integration usable for free
smp: https://docs.travis-ci.com/user/reference/osx/
smp: https://docs.travis-ci.com/user/multi-os/
jim: nice idea :)