2013/8/8 Carlos López González <[email protected]>: > I'm worried about point 2. Is it only in windows or does it happen in Linux > too? I don't notice it on debug build on Mac that is using non devel Cairo > libraries. I do not experience any slowdown in Linux.
> Maybe we shouldn't compile the Cairo libs? What do you mean? I don't compile Cairo libraries in Windows, I use precompiled binary, provided by Cygwin. K. > El jueves, 8 de agosto de 2013, Konstantin Dmitriev escribió: > >> Hi, Carlos! >> >> I've tested the fix and it works for me! Thank you. ^__^ >> >> Also, I have tested the Windows build (my latest master branch) and >> have some not good news: >> 1. Resize bug happened for me 5 times in a row (for empty canvas!) O_O >> I suspect that was triggered by the high load of CPU during that >> moment, but in any case that was striking. I think I would better try >> to give a shot at stabilizing the multithreading render, rather than >> keep fixing the issue... >> 2. The slowdown for cairo is confirmed. I have creted the simple >> outline with 5 vertices and yes - it's slower than regular render. >> 3. Drag'n'drop isn't working on Winows at all. Not only the in-canvas >> drop, but also if I drop sif file onto toolbar - nothing works. Quick >> investigation shows that drag_n_drop callback isn't fired at all. I >> need to dig on this further. >> >> That's it. Sorry for sad new, but that's how it is. ^__^ >> K. >> >> >> 2013/8/8 Carlos López González <[email protected]>: >> > I've made some tests with different epsilon values and the bug still >> > there. >> > But I've found the reason of the persistence of the bug. For the curious >> > I'll explain it below (I hadn't time yesterday to test the solution). >> > >> > This is the current code of the find_duck function: >> > >> > >> > https://github.com/synfig/synfig/blob/master/synfig-studio/src/gui/duckmatic.cpp#L1041 >> > >> > The interesting part is the one where the current ducks are iterated to >> > see >> > which is the one closest to the current mouse position: >> > >> > DuckMap::const_iterator iter; >> > >> > for(iter=duck_map.begin();iter!=duck_map.end();++iter) >> > { >> > const Duck::Handle& duck(iter->second); >> > >> > if(duck->get_ignore() || >> > (duck->get_type() && !(type & duck->get_type()))) >> > continue; >> > >> > Real dist((duck->get_trans_point()-point).mag_squared()); >> > >> > if(dist<=closest) >> > { >> > // if there are two ducks at the "same" position, keep >> > track of them >> > bool equal; >> > equal=fabs(dist-closest)<0.0000001?true:false; >> > if(equal) >> > { >> > // if we haven't any duck stored keep track of >> > last found >> > if(!ret_vector.size()) >> > ret_vector.push_back(ret); >> > // and also keep track of the one on the same >> > place >> > ret_vector.push_back(duck); >> > } >> > // we have another closer duck then discard the stored >> > else if (!equal && ret_vector.size()) >> > ret_vector.clear(); >> > closest=dist; >> > ret=duck; >> > } >> > } >> > >> > >> > The code considers that two dusks (the closest and one we are comparing >> > to) >> > are at the "same" place if their relative distance is small enough. >> > >> > bool equal; >> > equal=fabs(dist-closest)<0.0000001?true:false; >> > if(equal) ... >> > >> > >> > But that's biased, because that portion of code is only executed when >> > dist >> > is less or equal than closest. But what if dist is slightly greater than >> > closest? It can be considered that they are at the "same" position but >> > that >> > conclusion is never reached because there is a previous "<=" comparison >> > that >> > avoid that situation. So the code inside the if(dist<=closest) is never >> > reached because dist>closest but in fact (dist-closest) ≈ 0 >> > >> > So the solution for that bug should be move the "equal" lines before the >> > comparison and use it in replacement of the '=' part: >> > >> > bool equal; >> > equal=fabs(dist-closest)<0.0000001?true:false; >> > if(dist<closest || equal) >> > { >> > // if there are two ducks at the "same" position, keep >> > track of them >> > if(equal) >> > { >> > // if we haven't any duck stored keep track of >> > last found >> > if(!ret_vector.size()) >> > ret_vector.push_back(ret); >> > // and also keep track of the one on the same >> > place >> > ret_vector.push_back(duck); >> > } >> > // we have another closer duck then discard the stored >> > else if (!equal && ret_vector.size()) >> > ret_vector.clear(); >> > closest=dist; >> > ret=duck; >> > } >> > >> > That is :) >> > Cheers! >> > >> > >> > 2013/8/8 Konstantin Dmitriev <[email protected]> >> >> >> >> 2013/8/8 Carlos López González <[email protected]>: >> >> > I think it still has solution just increasing the "epsilon" value. >> >> > I'll >> >> > take >> >> > a look as soon as possible. >> >> >> >> Thanks! But I'm afraid the "correct" epsilon value would depend on the >> >> zoom value of parent group. Maybe I'm wrong. >> >> K. >> >> >> >> >> >> >> >> ------------------------------------------------------------------------------ >> >> Get 100% visibility into Java/.NET code with AppDynamics Lite! >> >> It's a free troubleshooting tool designed for production. >> >> Get down to code-level detail for bottlenecks, with <2% overhead. >> >> Download for free and get started troubleshooting in minutes. >> >> >> >> >> >> http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk >> >> _______________________________________________ >> >> Synfig-devl mailing list >> >> [email protected] >> >> https://lists.sourceforge.net/lists/listinfo/synfig-devl >> > >> > >> > >> > >> > -- >> > Carlos >> > http://synfig.org >> > >> > >> > ------------------------------------------------------------------------------ >> > Get 100% visibility into Java/.NET code with AppDynamics Lite! >> > It's a free troubleshooting tool designed for production. >> > Get down to code-level detail for bottlenecks, with <2% overhead. >> > Download for free and get started troubleshooting in minutes. >> > >> > http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk >> > _______________________________________________ >> > Synfig-devl mailing list >> > [email protected] >> > https://lists.sourceforge.net/lists/listinfo/synfig-devl >> > >> >> >> >> -- >> http://morevnaproject.org/ >> >> >> ------------------------------------------------------------------------------ >> Get 100% visibility into Java/.NET code with AppDynamics Lite! >> It's a free troubleshooting tool designed for production. >> Get down to code-level detail for bottlenecks, with <2% overhead. >> Download for free and get started troubleshooting in minutes. >> >> http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk >> _______________________________________________ >> Synfig-devl mailing list >> [email protected] >> https://lists.sourceforge.net/lists/listinfo/synfig-devl > > > > -- > Carlos > http://synfig.org > > > ------------------------------------------------------------------------------ > Get 100% visibility into Java/.NET code with AppDynamics Lite! > It's a free troubleshooting tool designed for production. > Get down to code-level detail for bottlenecks, with <2% overhead. > Download for free and get started troubleshooting in minutes. > http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk > _______________________________________________ > Synfig-devl mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/synfig-devl > -- http://morevnaproject.org/ ------------------------------------------------------------------------------ Get 100% visibility into Java/.NET code with AppDynamics Lite! It's a free troubleshooting tool designed for production. Get down to code-level detail for bottlenecks, with <2% overhead. Download for free and get started troubleshooting in minutes. http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk _______________________________________________ Synfig-devl mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/synfig-devl
