Hello community, here is the log from the commit of package vokoscreenNG for openSUSE:Factory checked in at 2020-02-11 22:25:12 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/vokoscreenNG (Old) and /work/SRC/openSUSE:Factory/.vokoscreenNG.new.26092 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "vokoscreenNG" Tue Feb 11 22:25:12 2020 rev:3 rq:773404 version:3.0.2 Changes: -------- --- /work/SRC/openSUSE:Factory/vokoscreenNG/vokoscreenNG.changes 2020-02-03 11:15:14.145903081 +0100 +++ /work/SRC/openSUSE:Factory/.vokoscreenNG.new.26092/vokoscreenNG.changes 2020-02-11 22:25:57.335585659 +0100 @@ -1,0 +2,8 @@ +Tue Feb 11 08:34:48 UTC 2020 - Marcel Kuehlhorn <tu...@opensuse.org> + +- Update to 3.0.2 + * x264: Codec requires resolution with even values + * Audio: fix recording with only one channel + * Webcam: fix image flipped horizontally + +------------------------------------------------------------------- @@ -4,0 +13,3 @@ + * Player: Notification if codec or service is missing + * x264enc: add profile=baseline + * Select the language for the online help via a combobox Old: ---- 3.0.1.tar.gz New: ---- 3.0.2.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ vokoscreenNG.spec ++++++ --- /var/tmp/diff_new_pack.fQ3j6q/_old 2020-02-11 22:25:58.035586043 +0100 +++ /var/tmp/diff_new_pack.fQ3j6q/_new 2020-02-11 22:25:58.039586045 +0100 @@ -17,7 +17,7 @@ Name: vokoscreenNG -Version: 3.0.1 +Version: 3.0.2 Release: 0 Summary: Screencast creator License: GPL-2.0-only ++++++ 3.0.1.tar.gz -> 3.0.2.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vokoscreenNG-3.0.1/ToDo.txt new/vokoscreenNG-3.0.2/ToDo.txt --- old/vokoscreenNG-3.0.1/ToDo.txt 2020-01-31 21:31:33.000000000 +0100 +++ new/vokoscreenNG-3.0.2/ToDo.txt 2020-02-11 08:14:48.000000000 +0100 @@ -5,6 +5,18 @@ --Eine oder zwei Wochen nach dem Release die https Weiterleitung aktivieren --Nach der https Weiterleitung wird die 3.0.0 nicht mehr auf die Onlinehilfe zugreifen können. +Windows Installer: +--Installationsordner sollte unter "Programme" abgelegt werden. Erledigt aber nochmal gründlich testen. + +Windows: +--Player: Schrift in Tooltip kann man nicht lesen, Weise Schrift auf Weißem Grund. + +Player: +--Im Player sollten ebenfalls die tango icons benutzt werden. + +Windows Systray: +--Icon für "Weiter" ist sehr schlecht zu erkennen. + Linux: --Bei dunklen Themes ist das Icon auf Tab Timer schlecht sichtbar @@ -95,7 +107,3 @@ Spezialslider: --Mauscursor nicht stimmig mit Handle. - -Hilfe: ---https - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vokoscreenNG-3.0.1/place-to-keep/statistik.sh new/vokoscreenNG-3.0.2/place-to-keep/statistik.sh --- old/vokoscreenNG-3.0.1/place-to-keep/statistik.sh 2020-01-31 21:31:33.000000000 +0100 +++ new/vokoscreenNG-3.0.2/place-to-keep/statistik.sh 2020-02-11 08:14:48.000000000 +0100 @@ -1,6 +1,6 @@ #!/bin/bash -begintime="2018-08-20" +begintime="2020-02-05" echo "Commits seit dem: "$begintime diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vokoscreenNG-3.0.1/src/camera/QvkCameraController.cpp new/vokoscreenNG-3.0.2/src/camera/QvkCameraController.cpp --- old/vokoscreenNG-3.0.1/src/camera/QvkCameraController.cpp 2020-01-31 21:31:33.000000000 +0100 +++ new/vokoscreenNG-3.0.2/src/camera/QvkCameraController.cpp 2020-02-11 08:14:48.000000000 +0100 @@ -102,18 +102,28 @@ if ( value == 3 ) { - cameraWindow->resize( 640, 480 ); + cameraWindow->resize( 639, 479 ); } } void QvkCameraController::slot_setNewImage( QImage image ) { +#ifdef Q_OS_LINUX if ( ui_formMainWindow->checkBoxCameraMirrorHorizontal->isChecked() == true ) image = image.mirrored( true, false ); - if ( ui_formMainWindow->checkBoxCameraMirrorVertical->isChecked() == true ) + if ( ui_formMainWindow->checkBoxCameraMirrorVertical->isChecked() == true ) image = image.mirrored( false, true ); +#endif + +#ifdef Q_OS_WIN + if ( ui_formMainWindow->checkBoxCameraMirrorHorizontal->isChecked() == true ) + image = image.mirrored( true, false ); + + if ( ui_formMainWindow->checkBoxCameraMirrorVertical->isChecked() == false ) + image = image.mirrored( false, true ); +#endif if ( ui_formMainWindow->checkBoxCameraInvert->isChecked() == true ) image.invertPixels( QImage::InvertRgb ); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vokoscreenNG-3.0.1/src/formMainWindow.ui new/vokoscreenNG-3.0.2/src/formMainWindow.ui --- old/vokoscreenNG-3.0.1/src/formMainWindow.ui 2020-01-31 21:31:33.000000000 +0100 +++ new/vokoscreenNG-3.0.2/src/formMainWindow.ui 2020-02-11 08:14:48.000000000 +0100 @@ -89,7 +89,7 @@ <string notr="true"/> </property> <property name="currentIndex"> - <number>6</number> + <number>0</number> </property> <property name="iconSize"> <size> @@ -126,16 +126,6 @@ </property> </widget> </item> - <item row="4" column="4"> - <widget class="QToolButton" name="help_screencast_scale"> - <property name="toolTip"> - <string notr="true"/> - </property> - <property name="text"> - <string notr="true">Help</string> - </property> - </widget> - </item> <item row="2" column="4"> <widget class="QToolButton" name="help_screencast_area"> <property name="text"> @@ -192,23 +182,6 @@ <property name="bottomMargin"> <number>0</number> </property> - <item> - <widget class="QCheckBox" name="checkBoxScale"> - <property name="text"> - <string>Scale</string> - </property> - </widget> - </item> - <item> - <widget class="QComboBox" name="comboBoxScale"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="sizeAdjustPolicy"> - <enum>QComboBox::AdjustToContents</enum> - </property> - </widget> - </item> </layout> </widget> </item> @@ -2532,8 +2505,6 @@ <tabstop>scrollAreaAudioDevice</tabstop> <tabstop>comboBoxx264Preset</tabstop> <tabstop>help_screencast_videocodec</tabstop> - <tabstop>checkBoxScale</tabstop> - <tabstop>comboBoxScale</tabstop> <tabstop>checkBoxStartTime</tabstop> <tabstop>help_screencast_starttimer</tabstop> <tabstop>checkBoxStopRecordingAfter</tabstop> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vokoscreenNG-3.0.1/src/global.cpp new/vokoscreenNG-3.0.2/src/global.cpp --- old/vokoscreenNG-3.0.1/src/global.cpp 2020-01-31 21:31:33.000000000 +0100 +++ new/vokoscreenNG-3.0.2/src/global.cpp 2020-02-11 08:14:48.000000000 +0100 @@ -32,10 +32,10 @@ QLineEdit *lineEditAudioPlug; #ifdef Q_OS_LINUX - QString version = "3.0.1"; + QString version = "3.0.2"; #endif #ifdef Q_OS_WIN - QString version = "3.0.1"; + QString version = "3.0.2"; #endif } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vokoscreenNG-3.0.1/src/main.cpp new/vokoscreenNG-3.0.2/src/main.cpp --- old/vokoscreenNG-3.0.1/src/main.cpp 2020-01-31 21:31:33.000000000 +0100 +++ new/vokoscreenNG-3.0.2/src/main.cpp 2020-02-11 08:14:48.000000000 +0100 @@ -69,6 +69,13 @@ } // Initialize GStreamer +#ifdef Q_OS_WIN + QString pathString = QDir::currentPath(); + QByteArray pathByteArray; + pathByteArray.append( pathString ); + qputenv( "GSTREAMER_1_0_ROOT_X86", pathByteArray ); + qputenv( "GST_PLUGIN_PATH", pathByteArray ); +#endif gst_init (&argc, &argv); QTranslator * qtTranslator = new QTranslator(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vokoscreenNG-3.0.1/src/mainwindow.cpp new/vokoscreenNG-3.0.2/src/mainwindow.cpp --- old/vokoscreenNG-3.0.1/src/mainwindow.cpp 2020-01-31 21:31:33.000000000 +0100 +++ new/vokoscreenNG-3.0.2/src/mainwindow.cpp 2020-02-11 08:14:48.000000000 +0100 @@ -238,14 +238,13 @@ #endif qDebug(); + // only values with modulo 4 == 0 resolutionStringList << "320 x 200 CGA 16 : 10" << "320 x 240 QCGA 4 : 3" << "640 x 480 VGA 4 : 3" << "720 x 480 NTSC 3 : 2" << "800 x 480 WVGA 5 : 3" << "800 x 600 SVGA 4 : 3" - << "854 x 450 WVGA 16 : 9" - << "768 x 567 PAL 4 : 3" << "1024 x 768 XVGA 4 : 3" << "1152 x 768 N/A 3 : 2" << "1280 x 720 HD-720 16 : 9" @@ -263,7 +262,9 @@ connect( ui->pushButtonStart, SIGNAL( clicked( bool ) ), ui->pushButtonContinue, SLOT( setEnabled( bool ) ) ); connect( ui->pushButtonStart, SIGNAL( clicked( bool ) ), ui->pushButtonPlay, SLOT( setEnabled( bool ) ) ); connect( ui->pushButtonStart, SIGNAL( clicked( bool ) ), ui->radioButtonScreencastFullscreen, SLOT( setEnabled( bool ) ) ); +#ifdef Q_OS_LINUX connect( ui->pushButtonStart, SIGNAL( clicked( bool ) ), ui->radioButtonScreencastWindow, SLOT( setEnabled( bool ) ) ); +#endif connect( ui->pushButtonStart, SIGNAL( clicked( bool ) ), ui->radioButtonScreencastArea, SLOT( setEnabled( bool ) ) ); connect( ui->pushButtonStart, SIGNAL( clicked( bool ) ), ui->comboBoxScreencastScreen, SLOT( setEnabled( bool ) ) ); connect( ui->pushButtonStart, SIGNAL( clicked( bool ) ), ui->labelScreencastCountdownText, SLOT( setEnabled( bool ) ) ); @@ -292,7 +293,9 @@ connect( ui->pushButtonStop, SIGNAL( clicked( bool ) ), ui->pushButtonPause, SLOT( setEnabled( bool ) ) ); connect( ui->pushButtonStop, SIGNAL( clicked( bool ) ), ui->pushButtonPlay, SLOT( setDisabled( bool ) ) ); connect( ui->pushButtonStop, SIGNAL( clicked( bool ) ), ui->radioButtonScreencastFullscreen, SLOT( setDisabled( bool ) ) ); +#ifdef Q_OS_LINUX connect( ui->pushButtonStop, SIGNAL( clicked( bool ) ), ui->radioButtonScreencastWindow, SLOT( setDisabled( bool ) ) ); +#endif connect( ui->pushButtonStop, SIGNAL( clicked( bool ) ), ui->radioButtonScreencastArea, SLOT( setDisabled( bool ) ) ); connect( ui->pushButtonStop, SIGNAL( clicked( bool ) ), ui->comboBoxScreencastScreen, SLOT( setDisabled( bool ) ) ); connect( ui->pushButtonStop, SIGNAL( clicked( bool ) ), ui->labelScreencastCountdownText, SLOT( setDisabled( bool ) ) ); @@ -337,6 +340,8 @@ // Tab 1 Screen #ifdef Q_OS_WIN ui->radioButtonScreencastWindow->setEnabled( false ); + ui->radioButtonScreencastWindow->setVisible( false ); + ui->help_screencast_window->setVisible( false ); #endif ui->radioButtonScreencastFullscreen->setText( tr("Fullscreen") ); // QT Creator sets an ampersand, translation now here @@ -409,8 +414,6 @@ connect( videoFileSystemWatcher, SIGNAL( directoryChanged( const QString& ) ), this, SLOT( slot_videoFileSystemWatcherSetButtons() ) ); ui->lineEditVideoPath->setText( QStandardPaths::writableLocation( QStandardPaths::MoviesLocation ) ); - ui->comboBoxScale->addItems( resolutionStringList ); - connect( ui->checkBoxScale, SIGNAL( toggled( bool ) ), ui->comboBoxScale, SLOT( setEnabled( bool ) ) ); connect( ui->pushButtonStart, SIGNAL( clicked( bool ) ), ui->frameScale, SLOT( setEnabled( bool ) ) ); connect( ui->pushButtonStop, SIGNAL( clicked( bool ) ), ui->frameScale, SLOT( setDisabled( bool ) ) ); @@ -932,24 +935,15 @@ #ifdef Q_OS_LINUX QString QvkMainWindow::VK_getXimagesrc() { + QString value = ""; + QString showPointer = "true"; if( ui->checkBoxMouseCursorOnOff->checkState() == Qt::Checked ) { showPointer = "false"; } - if( ( ui->radioButtonScreencastFullscreen->isChecked() == true ) and ( ui->comboBoxScreencastScreen->currentData().toInt() == -1 ) ) - { - QStringList stringList; - stringList << "ximagesrc" - << "display-name=" + qgetenv( "DISPLAY" ) - << "use-damage=false" - << "show-pointer=" + showPointer; - QString value = stringList.join( " " ); - return value; - } - - if ( ( ui->radioButtonScreencastFullscreen->isChecked() == true ) and ( ui->comboBoxScreencastScreen->currentIndex() <= ui->comboBoxScreencastScreen->count()-1 ) ) + if ( ui->radioButtonScreencastFullscreen->isChecked() == true ) { QStringList stringList; stringList << "ximagesrc" @@ -960,8 +954,7 @@ << "starty=" + get_y_From_Screen() << "endx=" + QString::number( get_x_From_Screen().toInt() + get_width_From_Screen().toInt()-1 ) << "endy=" + QString::number( get_y_From_Screen().toInt() + get_height_From_Screen().toInt()-1 ); - QString value = stringList.join( " " ); - return value; + value = stringList.join( " " ); } if( ui->radioButtonScreencastWindow->isChecked() == true ) @@ -982,30 +975,11 @@ << "use-damage=false" << "show-pointer=" + showPointer << "xid=" + xid; - - QString value = stringList.join( " " ); - return value; + value = stringList.join( " " ); } if ( ui->radioButtonScreencastArea->isChecked() == true ) { - int compensation_x = 0; - int compensation_y = 0; - - // Number of pixels must be divisible by two - int width = vkRegionChoise->getWidth(); - if ( ( width % 2 ) == 1 ) - { - compensation_x = 1; - } - - // Number of pixels must be divisible by two - int height = vkRegionChoise->getHeight(); - if ( ( height % 2 ) == 1 ) - { - compensation_y = 1; - } - qreal gnomehack = 0; if ( qgetenv( "XDG_CURRENT_DESKTOP" ).toLower() == "gnome" ) { @@ -1020,13 +994,12 @@ << "show-pointer=" + showPointer << "startx=" + QString::number( vkRegionChoise->getXRecordArea() ) << "starty=" + QString::number( vkRegionChoise->getYRecordArea() + gnomehack ) - << "endx=" + QString::number( vkRegionChoise->getXRecordArea() + vkRegionChoise->getWidth() - 1 - compensation_x) - << "endy=" + QString::number( vkRegionChoise->getYRecordArea() + gnomehack + vkRegionChoise->getHeight() - 1 - compensation_y); - QString value = stringList.join( " " ); - return value; + << "endx=" + QString::number( vkRegionChoise->getXRecordArea() + vkRegionChoise->getWidth() - 1 ) + << "endy=" + QString::number( vkRegionChoise->getYRecordArea() + gnomehack + vkRegionChoise->getHeight() - 1 ); + value = stringList.join( " " ); } - return ""; // prophylactic no error at compiletime + return value; } #endif @@ -1071,18 +1044,77 @@ QString QvkMainWindow::VK_getCapsFilter() { QStringList stringList; - stringList << "capsfilter caps=video/x-raw,framerate=" + stringList << "video/x-raw, framerate=" << QString::number( sliderFrames->value() ) << "/1"; return QString( stringList.join( "" ) ); } -QString QvkMainWindow::VK_getVideoScale() +QString QvkMainWindow::VK_scale() { - QString value = ui->comboBoxScale->currentText(); - QStringList valuList = value.split( " " ); - value = "videoscale ! capsfilter caps=video/x-raw,width=" + valuList.at(0) + ",height=" + valuList.at(2); + QString value = ""; + int modulo = 4; + + if ( ui->radioButtonScreencastFullscreen->isChecked() == true ) + { + int width = get_width_From_Screen().toInt(); + int height = get_height_From_Screen().toInt(); + + if ( ( get_width_From_Screen().toInt() % modulo ) > 0 ) + { + width = get_width_From_Screen().toInt() - ( get_width_From_Screen().toInt() % modulo ) + modulo; + } + + if ( ( get_height_From_Screen().toInt() % modulo ) > 0 ) + { + height = get_height_From_Screen().toInt() - ( get_height_From_Screen().toInt() % modulo ) + modulo; + } + + value = "videoscale ! video/x-raw, width=" + QString::number( width ) + ", height=" + QString::number( height ) + " !"; + } + + if ( ui->radioButtonScreencastArea->isChecked() == true ) + { + int width = (int)vkRegionChoise->getWidth(); + int height = (int)vkRegionChoise->getHeight(); + + if ( ( (int)vkRegionChoise->getWidth() % modulo ) > 0 ) + { + width = (int)vkRegionChoise->getWidth() - ( (int)vkRegionChoise->getWidth() % modulo ) + modulo; + } + + if ( ( (int)vkRegionChoise->getHeight() % modulo ) > 0 ) + { + height = (int)vkRegionChoise->getHeight() - ( (int)vkRegionChoise->getHeight() % modulo ) + modulo; + } + + value = "videoscale ! video/x-raw, width=" + QString::number( width ) + ", height=" + QString::number( height ) + " !"; + } + +#ifdef Q_OS_LINUX + if ( ui->radioButtonScreencastWindow->isChecked() == true ) + { + int modulo = 2; + QRectF rect = vkWinInfo->windowGeometryWithoutFrame( vkWinInfo->getWinID() ); + + int width = (int)rect.width(); + int height = (int)rect.height(); + + if ( ( width % modulo ) > 0 ) + { + width = width - ( width % modulo ); + } + + if ( ( height % modulo ) > 0 ) + { + height = height - ( height % modulo ); + } + + value = "videoscale ! video/x-raw, width=" + QString::number( width ) + ", height=" + QString::number( height ) + " !"; + } +#endif + return value; } @@ -1439,11 +1471,13 @@ if ( encoder == "x264enc" ) { QStringList list; + list << VK_scale(); list << ui->comboBoxVideoCodec->currentData().toString(); list << "qp-min=" + QString::number( sliderX264->value() ); list << "qp-max=" + QString::number( sliderX264->value() ); list << "speed-preset=" + ui->comboBoxx264Preset->currentText(); list << "threads=" + vk_idealThreadCount; + list.removeAll( "" ); value = list.join( " " ); value.append( " ! video/x-h264, profile=baseline" ); } @@ -1706,10 +1740,6 @@ VK_PipelineList << VK_getXimagesrc(); VK_PipelineList << VK_getCapsFilter(); VK_PipelineList << "videoconvert"; - if ( ui->checkBoxScale->isChecked() ) - { - VK_PipelineList << VK_getVideoScale(); - } VK_PipelineList << "videorate"; VK_PipelineList << Vk_get_Videocodec_Encoder(); @@ -1731,7 +1761,7 @@ #ifdef Q_OS_WIN VK_PipelineList << VK_get_AudioSystem().append( " device-name=" ).append( "'" + VK_getSelectedAudioDevice().at(0) +"'" ); #endif - + VK_PipelineList << "audio/x-raw, channels=2"; VK_PipelineList << "audioconvert"; VK_PipelineList << "audiorate"; VK_PipelineList << ui->comboBoxAudioCodec->currentData().toString(); @@ -1746,12 +1776,14 @@ { #ifdef Q_OS_LINUX VK_PipelineList << VK_get_AudioSystem().append( " device=" ).append( VK_getSelectedAudioDevice().at(x) ); + VK_PipelineList << "audio/x-raw, channels=2"; VK_PipelineList << "queue"; VK_PipelineList << "mix."; #endif #ifdef Q_OS_WIN VK_PipelineList << VK_get_AudioSystem().append( " device-name=" ).append( "'" + VK_getSelectedAudioDevice().at(x) +"'" ); + VK_PipelineList << "audio/x-raw, channels=2"; VK_PipelineList << "queue"; VK_PipelineList << "mix."; #endif @@ -1765,6 +1797,7 @@ } VK_PipelineList << VK_getMuxer(); + VK_PipelineList.removeAll( "" ); QString newVideoFilename = global::name + "-" + QDateTime::currentDateTime().toString( "yyyy-MM-dd_hh-mm-ss" ) + "." + ui->comboBoxFormat->currentText(); VK_PipelineList << "filesink location=" + ui->lineEditVideoPath->text() + "/" + newVideoFilename; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vokoscreenNG-3.0.1/src/mainwindow.h new/vokoscreenNG-3.0.2/src/mainwindow.h --- old/vokoscreenNG-3.0.1/src/mainwindow.h 2020-01-31 21:31:33.000000000 +0100 +++ new/vokoscreenNG-3.0.2/src/mainwindow.h 2020-02-11 08:14:48.000000000 +0100 @@ -92,7 +92,7 @@ QString VK_getCapsFilter(); QString VK_getMuxer(); QString Vk_get_Videocodec_Encoder(); - QString VK_getVideoScale(); + QString VK_scale(); QFileSystemWatcher *videoFileSystemWatcher; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vokoscreenNG-3.0.1/src/player/QvkPlayer.cpp new/vokoscreenNG-3.0.2/src/player/QvkPlayer.cpp --- old/vokoscreenNG-3.0.1/src/player/QvkPlayer.cpp 2020-01-31 21:31:33.000000000 +0100 +++ new/vokoscreenNG-3.0.2/src/player/QvkPlayer.cpp 2020-02-11 08:14:48.000000000 +0100 @@ -80,8 +80,8 @@ ui->pushButtonPlay->setIcon( QIcon::fromTheme( "media-playback-start" , style()->standardIcon( QStyle::SP_MediaPlay ) ) ); ui->pushButtonPause->setIcon( QIcon::fromTheme( "media-playback-pause", style()->standardIcon( QStyle::SP_MediaPause ) ) ); ui->pushButtonStop->setIcon( QIcon::fromTheme( "media-playback-stop" , style()->standardIcon( QStyle::SP_MediaStop ) ) ); - ui->toolButtonFrameBackward->setIcon( QIcon::fromTheme( "go-previous", style()->standardIcon( QStyle::SP_MediaSkipBackward ) ) ); - ui->toolButtonFrameForward->setIcon( QIcon::fromTheme( "go-next", style()->standardIcon( QStyle::SP_MediaSkipForward ) ) ); + ui->toolButtonFrameBackward->setIcon( QIcon::fromTheme( "go-previous", style()->standardIcon( QStyle::SP_MediaSeekBackward ) ) ); + ui->toolButtonFrameForward->setIcon( QIcon::fromTheme( "go-next", style()->standardIcon( QStyle::SP_MediaSeekForward ) ) ); ui->toolButtonOpenFile->setIcon( QIcon::fromTheme( "document-open", style()->standardIcon( QStyle::SP_FileIcon ) ) ); ui->toolButtonMute->setIcon( QIcon::fromTheme( "audio-volume-high" , style()->standardIcon( QStyle::SP_MediaVolume ) ) ); ui->toolButtonFullscreen->setIcon( QIcon::fromTheme( "view-fullscreen", QIcon( ":/pictures/player/fullscreen.png" ) ) ); @@ -537,7 +537,7 @@ QSize ratioSize = getPixelaspectRatio(); qreal ratio = (qreal)ratioSize.width() / (qreal)ratioSize.height(); QScreen *screen = QGuiApplication::primaryScreen(); - if ( ratio == 1 ) + if ( ratio == 1.0 ) { image.setDevicePixelRatio( screen->devicePixelRatio() ); image = image.scaled( static_cast<int>( ui->framePlayer->width()*screen->devicePixelRatio() ), @@ -551,7 +551,7 @@ // Testvideos find in source code under /vokoscreenNG/Videos-to-test-the-player/ // Example: // Area:450x800 scale:1280*720 - if ( ( ratio != 1 ) and ( ratioSize.width() < ratioSize.height() ) ) + if ( ( ratio != 1.0 ) and ( ratioSize.width() < ratioSize.height() ) ) { // Adapt to the frame if ( ui->framePlayer->width() < (int)( (qreal)ui->framePlayer->height() * ( (qreal)image.width() / (qreal)image.height() * ratio ) * screen->devicePixelRatio() ) ) @@ -578,7 +578,7 @@ // Example: // Area:800x320 scale:1280*720 - if ( ( ratio != 1 ) and ( ratioSize.width() > ratioSize.height() ) ) + if ( ( ratio != 1.0 ) and ( ratioSize.width() > ratioSize.height() ) ) { // Adapt to the frame if ( ui->framePlayer->height() < (int)( (qreal)ui->framePlayer->width() * ( (qreal)image.height() / (qreal)image.width() / ratio ) * screen->devicePixelRatio() ) ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vokoscreenNG-3.0.1/src/screenManager/QvkScreenManager.cpp new/vokoscreenNG-3.0.2/src/screenManager/QvkScreenManager.cpp --- old/vokoscreenNG-3.0.1/src/screenManager/QvkScreenManager.cpp 2020-01-31 21:31:33.000000000 +0100 +++ new/vokoscreenNG-3.0.2/src/screenManager/QvkScreenManager.cpp 2020-02-11 08:14:48.000000000 +0100 @@ -69,7 +69,7 @@ "with=" + Width + " " + "height=" + Height; - disconnect( screen.at(i), 0, 0, 0 ); + disconnect( screen.at(i), nullptr, nullptr, nullptr ); connect( screen.at(i), SIGNAL( geometryChanged( const QRect ) ), this, SLOT( slot_geometryChanged( const QRect ) ) ); emit signal_screen_count_changed( stringText, stringData ); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vokoscreenNG-3.0.1/src/winInfo/QvkWinInfo.cpp new/vokoscreenNG-3.0.2/src/winInfo/QvkWinInfo.cpp --- old/vokoscreenNG-3.0.1/src/winInfo/QvkWinInfo.cpp 2020-01-31 21:31:33.000000000 +0100 +++ new/vokoscreenNG-3.0.2/src/winInfo/QvkWinInfo.cpp 2020-02-11 08:14:48.000000000 +0100 @@ -128,6 +128,41 @@ return getWindow( net_active ).value(0); } + + +QRectF QvkWinInfo::windowGeometryWithoutFrame( WId child) +{ + int x, y; + Window root; + uint w, h, border, depth; + + XGetGeometry( QX11Info::display(), child, &root, &x, &y, &w, &h, &border, &depth ); + + Window parent; + Window* children; + unsigned int nchildren; + + if( XQueryTree( QX11Info::display(), child, &root, &parent, &children, &nchildren ) != 0 ) + { + if( children != nullptr ) + { + XFree( children ); + } + + int newx, newy; + Window dummy; + + if( XTranslateCoordinates( QX11Info::display(), parent, QX11Info::appRootWindow(), x, y, &newx, &newy, &dummy )) + { + x = newx; + y = newy; + } + } + + QRectF rect( x, y, w, h ); + + return rect; +} #endif @@ -162,3 +197,4 @@ return newWinID; } + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vokoscreenNG-3.0.1/src/winInfo/QvkWinInfo.h new/vokoscreenNG-3.0.2/src/winInfo/QvkWinInfo.h --- old/vokoscreenNG-3.0.1/src/winInfo/QvkWinInfo.h 2020-01-31 21:31:33.000000000 +0100 +++ new/vokoscreenNG-3.0.2/src/winInfo/QvkWinInfo.h 2020-02-11 08:14:48.000000000 +0100 @@ -39,6 +39,7 @@ virtual ~QvkWinInfo(); WId getWinID(); static WId activeWindow(); + QRectF windowGeometryWithoutFrame( WId child); public slots: