Updating tk +quartz failed on Snow Leopard
Mojca Miklavec
mojca at macports.org
Wed Aug 24 02:26:59 PDT 2016
On 24 August 2016 at 04:37, Ryan Schmidt wrote:
>> On Aug 23, 2016, at 9:10 PM, Kevin Walzer wrote:
>> On 8/23/16 10:04 PM, Ryan Schmidt wrote:
>>>
>>> This is weird because the backingScaleFactor method is supposed to return a double, not an id, and is part of the Retina display API introduced in Mac OS X 10.7. It is not in 10.6. The window should not be responding to the backingScaleFactor selector on 10.6, so that if statement should never have returned true and that code should never have been run.
Ryan, thank you very much for the analysis of the code.
>> While I'm not the author of that code, I did commit it, and you're right, it should not have run. What compiler is this error being triggered on?
>
> Apple gcc-4.2.1, the default compiler on Snow Leopard with Xcode 3.2.6.
It's more likely to happen with any compiler. (It's certainly
reproducible with clang 3.4.)
I might be wrong, but I suspect that
if (win && [win respondsToSelector:@selector(backingScaleFactor)]) {
scalefactor = ([win backingScaleFactor] == 2.0) ? 2 : 1;
}
fails for the same reason as
int a=0;
if(a) {
doSomethingCompilerDoesntWantYouToDo();
}
does.
Sure, when executing the code, that "if" would resolve to false and
the loop wouldn't be entered. But the compiler doesn't know that in
advance. The compiler probably has to compile whatever is inside the
loop and complains about the type mismatch.
According to
http://stackoverflow.com/questions/307128/how-do-i-cast-id-to-a-float
I guess that
scalefactor = ([[win backingScaleFactor] floatValue] == 2.0) ? 2 : 1;
instead of
scalefactor = ([win backingScaleFactor] == 2.0) ? 2 : 1;
should wok.
That compiles on 10.6 at least (I didn't check the actual
functionality, I don't even have GUI access to that 10.6 VM).
While it still throws
tkMacOSXXStubs.c:901:23: warning: instance
method '-backingScaleFactor' not found (return type defaults to
'id') [-Wobjc-method-access]
I guess that the warning is expected.
Mojca
(I guess that's beyond the scope of the users' mailing list, but well ...)
More information about the macports-users
mailing list