Compare commits

...

3 Commits

Author SHA1 Message Date
John Preston
a6fb0e372e Beta version 2.9.11.
- Resolve (again) a video playback crash in 32 bit Windows version.
2021-08-24 18:12:26 +03:00
John Preston
7948fc509e Remove (incorrect) checks for double casts. 2021-08-24 18:11:47 +03:00
John Preston
2d6155fc85 Throw fp exceptions in Windows 32 bit build. 2021-08-24 17:43:31 +03:00
12 changed files with 29 additions and 104 deletions

View File

@@ -9,7 +9,7 @@
<Identity Name="TelegramMessengerLLP.TelegramDesktop"
ProcessorArchitecture="ARCHITECTURE"
Publisher="CN=536BC709-8EE1-4478-AF22-F0F0F26FF64A"
Version="2.9.10.0" />
Version="2.9.11.0" />
<Properties>
<DisplayName>Telegram Desktop</DisplayName>
<PublisherDisplayName>Telegram Messenger LLP</PublisherDisplayName>

View File

@@ -44,8 +44,8 @@ IDI_ICON1 ICON "..\\art\\icon256.ico"
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 2,9,10,0
PRODUCTVERSION 2,9,10,0
FILEVERSION 2,9,11,0
PRODUCTVERSION 2,9,11,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@@ -62,10 +62,10 @@ BEGIN
BEGIN
VALUE "CompanyName", "Telegram FZ-LLC"
VALUE "FileDescription", "Telegram Desktop"
VALUE "FileVersion", "2.9.10.0"
VALUE "FileVersion", "2.9.11.0"
VALUE "LegalCopyright", "Copyright (C) 2014-2021"
VALUE "ProductName", "Telegram Desktop"
VALUE "ProductVersion", "2.9.10.0"
VALUE "ProductVersion", "2.9.11.0"
END
END
BLOCK "VarFileInfo"

View File

@@ -35,8 +35,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 2,9,10,0
PRODUCTVERSION 2,9,10,0
FILEVERSION 2,9,11,0
PRODUCTVERSION 2,9,11,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@@ -53,10 +53,10 @@ BEGIN
BEGIN
VALUE "CompanyName", "Telegram FZ-LLC"
VALUE "FileDescription", "Telegram Desktop Updater"
VALUE "FileVersion", "2.9.10.0"
VALUE "FileVersion", "2.9.11.0"
VALUE "LegalCopyright", "Copyright (C) 2014-2021"
VALUE "ProductName", "Telegram Desktop"
VALUE "ProductVersion", "2.9.10.0"
VALUE "ProductVersion", "2.9.11.0"
END
END
BLOCK "VarFileInfo"

View File

@@ -270,12 +270,12 @@ std::unique_ptr<Launcher> Launcher::Create(int argc, char *argv[]) {
return std::make_unique<Platform::Launcher>(argc, argv);
}
Launcher::Launcher(
int argc,
char *argv[])
Launcher::Launcher(int argc, char *argv[])
: _argc(argc)
, _argv(argv)
, _baseIntegration(_argc, _argv) {
crl::toggle_fp_exceptions(true);
base::Integration::Set(&_baseIntegration);
}

View File

@@ -13,9 +13,7 @@ namespace Core {
class Launcher {
public:
Launcher(
int argc,
char *argv[]);
Launcher(int argc, char *argv[]);
static std::unique_ptr<Launcher> Create(int argc, char *argv[]);

View File

@@ -22,7 +22,7 @@ constexpr auto AppId = "{53F49750-6209-4FBF-9CA8-7A333C87D1ED}"_cs;
constexpr auto AppNameOld = "Telegram Win (Unofficial)"_cs;
constexpr auto AppName = "Telegram Desktop"_cs;
constexpr auto AppFile = "Telegram"_cs;
constexpr auto AppVersion = 2009010;
constexpr auto AppVersionStr = "2.9.10";
constexpr auto AppVersion = 2009011;
constexpr auto AppVersionStr = "2.9.11";
constexpr auto AppBetaVersion = true;
constexpr auto AppAlphaVersion = TDESKTOP_ALPHA_VERSION;

View File

@@ -412,7 +412,9 @@ void File::start(not_null<FileDelegate*> delegate, crl::time position) {
_reader->startStreaming();
_context.emplace(delegate, _reader.get());
_thread = std::thread([=, context = &*_context] {
crl::toggle_fp_exceptions(true);
context->start(position);
while (!context->finished()) {
context->readNextPacket();

View File

@@ -880,86 +880,7 @@ TimePoint VideoTrackObject::trackTime() const {
const auto adjust = (result.worldTime - _syncTimePoint.worldTime);
const auto adjustSpeed = adjust * _options.speed;
const auto roundAdjustSpeed = SafeRound(adjustSpeed);
auto timeRoundAdjustSpeed = crl::time(roundAdjustSpeed);
const auto fpuErrorHappened = [](crl::time value) {
return uint64(value) == 0x8000'0000'0000'0000ULL
|| uint64(value) == 0x8000'0000ULL
|| uint64(value) == 0xFFFF'FFFF'FFFF'FFFFULL
|| uint64(value) == 0xFFFF'FFFFULL;
};
if (roundAdjustSpeed > -1000'000'000.
&& roundAdjustSpeed < 1000'000'000.
&& fpuErrorHappened(timeRoundAdjustSpeed)) {
TO_LOG(("BAD1,round:%1").arg(roundAdjustSpeed));
timeRoundAdjustSpeed = crl::time(roundAdjustSpeed);
if (!fpuErrorHappened(timeRoundAdjustSpeed)) {
TO_LOG(("GOOD2,round:%1,result:%2").arg(roundAdjustSpeed).arg(timeRoundAdjustSpeed));
debugAssertKnownTime(-1, kTimeUnknown);
} else {
TO_LOG(("BAD2,round:%1").arg(roundAdjustSpeed));
}
const auto floatRoundAdjustSpeed = float(roundAdjustSpeed);
timeRoundAdjustSpeed = crl::time(floatRoundAdjustSpeed);
if (!fpuErrorHappened(timeRoundAdjustSpeed)) {
TO_LOG(("GOOD3,round:%1,result:%2").arg(floatRoundAdjustSpeed).arg(timeRoundAdjustSpeed));
debugAssertKnownTime(-2, kTimeUnknown);
} else {
TO_LOG(("BAD3,round:%1").arg(floatRoundAdjustSpeed));
}
const auto intRoundAdjustSpeet = int(roundAdjustSpeed);
timeRoundAdjustSpeed = crl::time(intRoundAdjustSpeet);
if (!fpuErrorHappened(timeRoundAdjustSpeed)) {
TO_LOG(("GOOD4,int:%1,result:%2").arg(intRoundAdjustSpeet).arg(timeRoundAdjustSpeed));
debugAssertKnownTime(-3, kTimeUnknown);
} else {
TO_LOG(("BAD4,int:%1").arg(intRoundAdjustSpeet));
}
const auto intFloatRoundAdjustSpeed = int(floatRoundAdjustSpeed);
timeRoundAdjustSpeed = crl::time(intFloatRoundAdjustSpeed);
if (!fpuErrorHappened(timeRoundAdjustSpeed)) {
TO_LOG(("GOOD5,int:%1,result:%2").arg(intFloatRoundAdjustSpeed).arg(timeRoundAdjustSpeed));
debugAssertKnownTime(-4, kTimeUnknown);
} else {
TO_LOG(("BAD5,int:%1").arg(intFloatRoundAdjustSpeed));
}
const auto uint64RoundAdjustSpeed = uint64((roundAdjustSpeed >= 0.)
? roundAdjustSpeed
: -roundAdjustSpeed);
if (!fpuErrorHappened(uint64RoundAdjustSpeed)) {
TO_LOG(("GOOD6,round:%1,uint:%2").arg(roundAdjustSpeed).arg(uint64RoundAdjustSpeed));
debugAssertKnownTime(-5, kTimeUnknown);
} else {
TO_LOG(("BAD6,uint:%1").arg(uint64RoundAdjustSpeed));
}
const auto uint64FloatRoundAdjustSpeed = uint64((floatRoundAdjustSpeed >= 0.)
? floatRoundAdjustSpeed
: -floatRoundAdjustSpeed);
if (!fpuErrorHappened(uint64FloatRoundAdjustSpeed)) {
TO_LOG(("GOOD7,round:%1,uint:%2").arg(floatRoundAdjustSpeed).arg(uint64FloatRoundAdjustSpeed));
debugAssertKnownTime(-6, kTimeUnknown);
} else {
TO_LOG(("BAD7,uint:%1").arg(uint64FloatRoundAdjustSpeed));
}
const auto uint32RoundAdjustSpeed = uint32((roundAdjustSpeed >= 0.)
? roundAdjustSpeed
: -roundAdjustSpeed);
if (!fpuErrorHappened(uint32RoundAdjustSpeed)) {
TO_LOG(("GOOD8,round:%1,uint:%2").arg(roundAdjustSpeed).arg(uint32RoundAdjustSpeed));
debugAssertKnownTime(-7, kTimeUnknown);
} else {
TO_LOG(("BAD8,uint:%1").arg(uint32RoundAdjustSpeed));
}
const auto uint32FloatRoundAdjustSpeed = uint32((floatRoundAdjustSpeed >= 0.)
? floatRoundAdjustSpeed
: -floatRoundAdjustSpeed);
if (!fpuErrorHappened(uint32FloatRoundAdjustSpeed)) {
TO_LOG(("GOOD9,round:%1,uint:%2").arg(floatRoundAdjustSpeed).arg(uint32FloatRoundAdjustSpeed));
debugAssertKnownTime(-8, kTimeUnknown);
} else {
TO_LOG(("BAD9,uint:%1").arg(uint32FloatRoundAdjustSpeed));
}
debugAssertKnownTime(-9, kTimeUnknown);
}
const auto timeRoundAdjustSpeed = crl::time(roundAdjustSpeed);
const auto trackTime = _syncTimePoint.trackTime + timeRoundAdjustSpeed;
TO_LOG(("track_time_adjusted,world:%1,adjust:%2,speed:%3,delta:%4,rounded:%5,casted:%6,final:%7"
).arg(result.worldTime
@@ -968,7 +889,7 @@ TimePoint VideoTrackObject::trackTime() const {
).arg(adjustSpeed
).arg(roundAdjustSpeed
).arg(timeRoundAdjustSpeed
).arg(result.trackTime));
).arg(trackTime));
result.trackTime = trackTime;
debugAssertKnownTime(11, result.trackTime);
return result;

View File

@@ -1,7 +1,7 @@
AppVersion 2009010
AppVersion 2009011
AppVersionStrMajor 2.9
AppVersionStrSmall 2.9.10
AppVersionStr 2.9.10
AppVersionStrSmall 2.9.11
AppVersionStr 2.9.11
BetaChannel 1
AlphaVersion 0
AppVersionOriginal 2.9.10.beta
AppVersionOriginal 2.9.11.beta

View File

@@ -1,3 +1,7 @@
2.9.11 beta (24.08.21)
- Resolve (again) a video playback crash in 32 bit Windows version.
2.9.10 beta (24.08.21)
- Resolve (hopefully) a video playback crash in 32 bit Windows version.

2
cmake

Submodule cmake updated: 7260711ec5...76ece84e77