mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-04-15 21:57:10 +02:00
Improve full screen RTMP streams.
This commit is contained in:
parent
8678eef9e8
commit
d36315104e
4 changed files with 16 additions and 8 deletions
|
@ -92,7 +92,7 @@ Panel::Panel(not_null<GroupCall*> call)
|
|||
#ifndef Q_OS_MAC
|
||||
, _controls(Ui::Platform::SetupSeparateTitleControls(
|
||||
window(),
|
||||
st::groupCallTitle))
|
||||
st::callTitle))
|
||||
#endif // !Q_OS_MAC
|
||||
, _powerSaveBlocker(std::make_unique<base::PowerSaveBlocker>(
|
||||
base::PowerSaveBlockType::PreventDisplaySleep,
|
||||
|
@ -1163,6 +1163,7 @@ void Panel::createPinOnTop() {
|
|||
_hideControlsTimerLifetime.destroy();
|
||||
_hideControlsTimer.cancel();
|
||||
}
|
||||
updateMembersGeometry();
|
||||
}, _pinOnTop->lifetime());
|
||||
|
||||
_pinOnTop->setClickedCallback([=] {
|
||||
|
@ -2220,9 +2221,10 @@ void Panel::updateMembersGeometry() {
|
|||
_members->setVisible(!_call->rtmp());
|
||||
const auto desiredHeight = _members->desiredHeight();
|
||||
if (mode() == PanelMode::Wide) {
|
||||
const auto skip = st::groupCallNarrowSkip;
|
||||
const auto full = _fullScreenOrMaximized.current();
|
||||
const auto skip = full ? 0 : st::groupCallNarrowSkip;
|
||||
const auto membersWidth = st::groupCallNarrowMembersWidth;
|
||||
const auto top = st::groupCallWideVideoTop;
|
||||
const auto top = full ? 0 : st::groupCallWideVideoTop;
|
||||
_members->setGeometry(
|
||||
widget()->width() - skip - membersWidth,
|
||||
top,
|
||||
|
@ -2231,7 +2233,7 @@ void Panel::updateMembersGeometry() {
|
|||
const auto viewportSkip = _call->rtmp()
|
||||
? 0
|
||||
: (skip + membersWidth);
|
||||
_viewport->setGeometry({
|
||||
_viewport->setGeometry(full, {
|
||||
skip,
|
||||
top,
|
||||
widget()->width() - viewportSkip - 2 * skip,
|
||||
|
|
|
@ -104,13 +104,17 @@ void Viewport::setup() {
|
|||
}, lifetime());
|
||||
}
|
||||
|
||||
void Viewport::setGeometry(QRect geometry) {
|
||||
void Viewport::setGeometry(bool fullscreen, QRect geometry) {
|
||||
Expects(wide());
|
||||
|
||||
const auto changed = (_fullscreen != fullscreen);
|
||||
if (changed) {
|
||||
_fullscreen = fullscreen;
|
||||
}
|
||||
if (widget()->geometry() != geometry) {
|
||||
_geometryStaleAfterModeChange = false;
|
||||
widget()->setGeometry(geometry);
|
||||
} else if (_geometryStaleAfterModeChange) {
|
||||
} else if (_geometryStaleAfterModeChange || changed) {
|
||||
_geometryStaleAfterModeChange = false;
|
||||
updateTilesGeometry();
|
||||
}
|
||||
|
|
|
@ -71,7 +71,7 @@ public:
|
|||
|
||||
void setMode(PanelMode mode, not_null<QWidget*> parent);
|
||||
void setControlsShown(float64 shown);
|
||||
void setGeometry(QRect geometry);
|
||||
void setGeometry(bool fullscreen, QRect geometry);
|
||||
void resizeToWidth(int newWidth);
|
||||
void setScrollTop(int scrollTop);
|
||||
|
||||
|
@ -175,6 +175,7 @@ private:
|
|||
std::vector<not_null<VideoTile*>> _tilesForOrder;
|
||||
rpl::variable<int> _fullHeight = 0;
|
||||
bool _hasTwoOrMore = false;
|
||||
bool _fullscreen = false;
|
||||
int _scrollTop = 0;
|
||||
QImage _shadow;
|
||||
rpl::event_stream<VideoEndpoint> _clicks;
|
||||
|
|
|
@ -498,6 +498,7 @@ void Viewport::RendererGL::paintTile(
|
|||
const auto height = geometry.height();
|
||||
const auto &st = st::groupCallVideoTile;
|
||||
const auto shown = _owner->_controlsShownRatio;
|
||||
const auto fullscreen = _owner->_fullscreen;
|
||||
const auto fullNameShift = st.namePosition.y() + st::normalFont->height;
|
||||
const auto nameShift = anim::interpolate(fullNameShift, 0, shown);
|
||||
const auto row = tile->row();
|
||||
|
@ -781,7 +782,7 @@ void Viewport::RendererGL::paintTile(
|
|||
program->setUniformValue("viewport", uniformViewport);
|
||||
program->setUniformValue("frameBg", st::groupCallBg->c);
|
||||
program->setUniformValue("radiusOutline", QVector2D(
|
||||
GLfloat(st::roundRadiusLarge * _factor),
|
||||
GLfloat(st::roundRadiusLarge * _factor * (fullscreen ? 0. : 1.)),
|
||||
(outline > 0) ? (st::groupCallOutline * _factor) : 0.f));
|
||||
program->setUniformValue("roundRect", Uniform(rect));
|
||||
program->setUniformValue("roundBg", st::groupCallBg->c);
|
||||
|
|
Loading…
Add table
Reference in a new issue