Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • videolan/vlc
  • chouquette/vlc
  • bakiewicz.marek122/vlc
  • devnexen/vlc
  • rohanrajpal/vlc
  • blurrrb/vlc
  • gsoc/gsoc2019/darkapex/vlc
  • b1ue/vlc
  • fkuehne/vlc
  • magsoft/vlc
  • chub/vlc
  • cramiro9/vlc
  • robUx4/vlc
  • rom1v/vlc
  • akshayaky/vlc
  • tmk907/vlc
  • akymaster/vlc
  • govind.sharma/vlc
  • psilokos/vlc
  • xjbeta/vlc
  • jahan/vlc
  • 1480c1/vlc
  • amanchande/vlc
  • aaqib/vlc
  • rist/vlc
  • apol/vlc
  • mindfreeze/vlc
  • alexandre-janniaux/vlc
  • sandsmark/vlc
  • jagannatharjun/vlc
  • gsoc/gsoc2020/matiaslgonzalez/vlc
  • gsoc/gsoc2020/jagannatharjun/vlc
  • mstorsjo/vlc
  • gsoc/gsoc2020/vedenta/vlc
  • gsoc/gsoc2020/arnav-ishaan/vlc
  • gsoc/gsoc2020/andreduong/vlc
  • fuzun/vlc
  • gsoc/gsoc2020/vatsin/vlc
  • gsoc/gsoc2020/sagid/vlc
  • yaron/vlc
  • Phoenix/vlc
  • Garf/vlc
  • ePiratWorkarounds/vlc
  • tguillem/vlc
  • jnqnfe/vlc
  • mdc/vlc
  • Vedaa/vlc
  • rasa/vlc
  • quink/vlc
  • yealo/vlc
  • aleksey_ak/vlc
  • ePirat/vlc
  • ilya.yanok/vlc
  • asenat/vlc
  • m/vlc
  • bunjee/vlc
  • BLumia/vlc
  • sagudev/vlc
  • hamedmonji30/vlc
  • nullgemm/vlc
  • DivyamAhuja/vlc
  • thesamesam/vlc
  • dag7/vlc
  • snehil101/vlc
  • haasn/vlc
  • jbk/vlc
  • ValZapod/vlc
  • mfkl/vlc
  • WangChuan/vlc
  • core1024/vlc
  • GhostVaibhav/vlc
  • dfuhrmann/vlc
  • davide.prade/vlc
  • tmatth/vlc
  • Courmisch/vlc
  • zouya/vlc
  • hpi/vlc
  • EwoutH/vlc
  • aleung27/vlc
  • hengwu0/vlc
  • saladin/vlc
  • ashuio/vlc
  • richselwood/vlc
  • verma16Ayush/vlc
  • chemicalflash/vlc
  • PoignardAzur/vlc
  • huangjieNT/vlc
  • Blake-Haydon/vlc
  • AnuthaDev/vlc
  • gsoc/gsoc2021/mpd/vlc
  • nicolas_lequec/vlc
  • sambassaly/vlc
  • thresh/vlc
  • bonniegong/vlc
  • myaashish/vlc
  • stavros.vagionitis/vlc
  • ileoo/vlc
  • louis-santucci/vlc
  • cchristiansen/vlc
  • sabyasachi07/vlc
  • AbduAmeen/vlc
  • ashishb0410/vlc
  • urbanhusky/vlc
  • davidepietrasanta/vlc
  • riksleutelstad/vlc
  • jeremyVignelles/vlc
  • komh/vlc
  • iamjithinjohn/vlc
  • JohannesKauffmann/vlc2
  • kunglao/vlc
  • natzberg/vlc
  • jill/vlc
  • cwendling/vlc
  • adufou/vlc
  • ErwanAirone/vlc
  • HasinduDilshan10/vlc
  • vagrantc/vlc
  • rafiv/macos-bigsur-icon
  • Aymeriic/vlc
  • saranshg20/vlc
  • metzlove24/vlc
  • linkfanel/vlc
  • Ds886/vlc
  • metehan-arslan/vlc
  • Skantes/vlc
  • kgsandundananjaya96/vlc
  • mitchcapper/vlc
  • advaitgupta/vlc
  • StefanBruens/vlc
  • ratajs/vlc
  • T.M.F.B.3761/vlc
  • m222059/vlc
  • casemerrick/vlc
  • joshuaword2alt/vlc
  • sjwaddy/vlc
  • dima/vlc
  • Ybalrid/vlc
  • umxprime/vlc
  • eschmidt/vlc
  • vannieuwenhuysenmichelle/vlc
  • badcf00d/vlc
  • wesinator/vlc
  • louis/vlc
  • xqq/vlc
  • EmperorYP7/vlc
  • NicoLiam/vlc
  • loveleen/vlc
  • rofferom/vlc
  • rbultje/vlc
  • TheUnamed/vlc
  • pratiksharma341/vlc
  • Saurab17/vlc
  • purist.coder/vlc
  • Shuicheng/vlc
  • mdrrubel292/vlc
  • silverbleu00/vlc
  • metif12/vlc
  • asher-m/vlc
  • jeffk/vlc
  • Brandonbr1/vlc
  • beautyyuyanli/vlc
  • rego21/vlc
  • muyangren907/vlc
  • collectionbylawrencejason/vlc
  • evelez/vlc
  • GSMgeeth/vlc
  • Oneric/vlc
  • TJ5/vlc
  • XuanTung95/vlc
  • darrenjenny21/vlc
  • Trenly/vlc
  • RockyTDR/vlc
  • mjakubowski/vlc
  • caprica/vlc
  • ForteFrankie/vlc
  • seannamiller19/vlc
  • junlon2006/vlc
  • kiwiren6666/vlc
  • iuseiphonexs/vlc
  • fenngtun/vlc
  • Rajdutt999/vlc
  • typx/vlc
  • leon.vitanos/vlc
  • robertogarci0938/vlc
  • gsoc/gsoc2022/luc65r/vlc-mpd
  • skeller/vlc
  • MCJack123/vlc
  • luc65r/vlc-mpd
  • popov895/vlc
  • claucambra/vlc
  • brad/vlc
  • matthewmurua88/vlc
  • Tomas8874/vlc
  • philenotfound/vlc
  • makita-do3/vlc
  • LZXCorp/vlc
  • mar0x/vlc
  • senojetkennedy0102/vlc
  • shaneb243/vlc
  • ahmadbader/vlc
  • rajduttcse26/vlc-audio-filters
  • Juniorzito8415/vlc
  • achernyakov/vlc
  • lucasjetgroup/vlc
  • pupdoggy666/vlc
  • gmde9363/vlc
  • alexnwayne/vlc
  • bahareebrahimi781/vlc
  • hamad633666/vlc
  • umghof3112/vlc
  • joe0199771874/vlc
  • Octocats66666666/vlc
  • jjm_223/vlc
  • btech10110.19/vlc
  • sunnykfc028/vlc-audio-filters
  • loic/vlc
  • nguyenminhducmx1/vlc
  • JanekKrueger/vlc
  • bstubbington2/vlc
  • rcombs/vlc
  • Ordissimo/vlc
  • king7532/vlc
  • noobsauce101/vlc
  • schong0525/vlc
  • myQwil/vlc
  • apisbg91/vlc
  • geeboy0101017/vlc
  • kim.faughey/vlc
  • nurupo/vlc
  • yyusea/vlc
  • 0711235879.khco/vlc
  • ialo/vlc
  • iloveyeye2/vlc
  • gdtdftdqtd/vlc
  • leandroconsiglio/vlc
  • AndyHTML2012/vlc
  • ncz/vlc
  • lucenticus/vlc
  • knr1931/vlc
  • kjoonlee/vlc
  • chandrakant100/vlc-qt
  • johge42/vlc
  • polter/vlc
  • hexchain/vlc
  • Tushwrld/vlc
  • mztea928/vlc
  • jbelloncastro/vlc
  • alvinhochun/vlc
  • ghostpiratecrow/vlc
  • ujjwaltwitx/vlc
  • alexsonarin06/vlc
  • adrianbon76/vlc
  • altsod/vlc
  • damien.lucas44/vlc
  • dmytrivtaisa/vlc
  • utk202/vlc
  • aaxhrj/vlc
  • thomas.hermes/vlc
  • structurenewworldorder/vlc
  • slomo/vlc
  • wantlamy/vlc
  • musc.o3cminc/vlc
  • thebarshablog/vlc
  • kerrick/vlc
  • kratos142518/vlc
  • leogps/vlc
  • vacantron/vlc
  • luna_koly/vlc
  • Ratio2/vlc
  • anuoshemohammad/vlc
  • apsun/vlc
  • aaa1115910/vlc
  • alimotmoyo/vlc
  • Ambossmann/vlc
  • Sam-LearnsToCode/vlc
  • Chilledheart/vlc
  • Labnann/vlc
  • ktcoooot1/vlc
  • mohit-marathe/vlc
  • johnddx/vlc
  • manstabuk/vlc
  • Omar-ahmed314/vlc
  • vineethkm/vlc
  • 9Enemi86/vlc
  • radoslav.m.panteleev/vlc
  • ashishami2002/vlc
  • Corbax/vlc
  • firnasahmed/vlc
  • pelayarmalam4/vlc
  • c0ff330k/vlc
  • shikhindahikar/vlc
  • l342723951/vlc
  • christianschwandner/vlc
  • douniwan5788/vlc
  • 7damian7/vlc
  • ferdnyc/vlc
  • f.ales1/vlc
  • pandagby/vlc
  • BaaBaa/vlc
  • jewe37/vlc
  • w00drow/vlc
  • russelltg/vlc
  • ironicallygod/vlc
  • soumyaDghosh/vlc
  • linzihao1999/vlc
  • deyayush6/vlc
  • mibi88/vlc
  • newabdallah10/vlc
  • jhorbincolombia/vlc
  • rimvihaqueshupto/vlc
  • andrewkhon98/vlc
  • fab78/vlc
  • lapaz17/vlc
  • amanna13/vlc
  • mdakram28/vlc
  • 07jw1980/vlc
  • sohamgupta/vlc
  • Eson-Jia1/vlc
  • Sumou/vlc
  • vikram-kangotra/vlc
  • chalice191/vlc
  • olivercalder/vlc
  • aaasg4001/vlc
  • zipdox/vlc
  • kwizart/vlc
  • Dragon-S/vlc
  • jdemeule/vlc
  • gabriel_lt/vlc
  • locutusofborg/vlc
  • sammirata/vlc-librist
  • another/vlc
  • Benjamin_Loison/vlc
  • ahmedmoselhi/vlc
  • petergaal/vlc
  • huynhsontung/vlc
  • dariusmihut/vlc
  • tvermaashutosh/vlc
  • buti/vlc
  • Niram7777/vlc
  • rohan-here/vlc
  • balaji-sivasakthi/vlc
  • rlindner81/vlc
  • Kakadus/vlc
  • djain/vlc
  • ABBurmeister/vlc
  • craighuggins/vlc
  • orbea/vlc
  • maxos/vlc
  • aakarshmj/vlc
  • kblaschke/vlc
  • ankitm/vlc
  • advait-0/vlc
  • mohak2003/vlc
  • yselkowitz/vlc
  • AZM999/vlc-azm
  • andrey.turkin/vlc
  • Disha-Baghel/vlc
  • nowrep/vlc
  • Apeng/vlc
  • Choucroute_melba/vlc
  • autra/vlc
  • eclipseo/vlc
  • fhuber/vlc
  • olafhering/vlc
  • sdasda7777/vlc
  • 1div0/vlc
  • skosnits/vlc-extended-playlist-support
  • dnicolson/vlc
  • Timshel/vlc
  • octopols/vlc
  • MangalK/vlc
  • nima64/vlc
  • misawai/vlc
  • Alexander-Wilms/vlc
  • Maxime2/vlc-fork-for-visualizer
  • ww/vlc
  • jeske/vlc
  • sgross-emlix/vlc
  • morenonatural/vlc
  • freakingLovesVLC/vlc
  • borisgolovnev/vlc
  • mpromonet/vlc
  • diogo.simao-marques/vlc
  • masstock/vlc
  • pratikpatel8982/vlc
  • hugok79/vlc
  • longervision/vlc
  • abhiudaysurya/vlc
  • rishabhgarg/vlc
  • tumic/vlc
  • cart/vlc
  • shubham442/vlc
  • Aditya692005/vlc
  • sammirata/vlc4
  • syrykh/vlc
  • Vvorcun/macos-new-icon
  • AyaanshC/vlc
  • nasso/vlc
  • Quark/vlc
  • sebastinas/vlc
  • rhstone/vlc
  • talregev/vlc
  • Managor/vlc
  • abdsaber000/vlc
  • falbrechtskirchinger/vlc
  • b.sullender/vlc
  • hulxv/vlc
  • zyad-ayad/vlc
  • shocknovaa/vlc
  • gremlinflat/vlc
  • Pratham24D/vlc
  • hmaarrfk/vlc
412 results
Show changes
Commits on Source (12)
Showing with 141 additions and 58 deletions
...@@ -144,6 +144,12 @@ static void addShadow(NSImageView *__unsafe_unretained imageView) ...@@ -144,6 +144,12 @@ static void addShadow(NSImageView *__unsafe_unretained imageView)
imageView.shadow = buttonShadow; imageView.shadow = buttonShadow;
} }
@interface VLCLibraryWindow ()
@property BOOL presentLoadingOverlayOnVideoPlaybackHide;
@end
@implementation VLCLibraryWindow @implementation VLCLibraryWindow
- (void)awakeFromNib - (void)awakeFromNib
...@@ -806,12 +812,19 @@ static void addShadow(NSImageView *__unsafe_unretained imageView) ...@@ -806,12 +812,19 @@ static void addShadow(NSImageView *__unsafe_unretained imageView)
[self showControlsBarImmediately]; [self showControlsBarImmediately];
[self updateArtworkButtonEnabledState]; [self updateArtworkButtonEnabledState];
self.splitViewController.multifunctionSidebarViewController.mainVideoModeEnabled = NO; self.splitViewController.multifunctionSidebarViewController.mainVideoModeEnabled = NO;
if (self.presentLoadingOverlayOnVideoPlaybackHide) {
[self showLoadingOverlay];
}
} }
- (void)showLoadingOverlay - (void)showLoadingOverlay
{ {
if ([self.libraryTargetView.subviews containsObject:self.loadingOverlayView]) { if ([self.libraryTargetView.subviews containsObject:self.loadingOverlayView]) {
return; return;
} else if ([self.libraryTargetView.subviews containsObject:self.videoViewController.view]) {
self.presentLoadingOverlayOnVideoPlaybackHide = YES;
return;
} }
self.loadingOverlayView.wantsLayer = YES; self.loadingOverlayView.wantsLayer = YES;
...@@ -831,6 +844,8 @@ static void addShadow(NSImageView *__unsafe_unretained imageView) ...@@ -831,6 +844,8 @@ static void addShadow(NSImageView *__unsafe_unretained imageView)
- (void)hideLoadingOverlay - (void)hideLoadingOverlay
{ {
self.presentLoadingOverlayOnVideoPlaybackHide = NO;
if (![self.libraryTargetView.subviews containsObject:self.loadingOverlayView]) { if (![self.libraryTargetView.subviews containsObject:self.loadingOverlayView]) {
return; return;
} }
......
...@@ -61,6 +61,8 @@ ...@@ -61,6 +61,8 @@
#include <QUrl> #include <QUrl>
#include <QDate> #include <QDate>
#include <QMimeData> #include <QMimeData>
#include <QClipboard>
#include <QInputDialog>
#include <QQmlProperty> #include <QQmlProperty>
#include <QQmlContext> #include <QQmlContext>
...@@ -829,6 +831,66 @@ VLCVarChoiceModel* MainCtx::getExtraInterfaces() ...@@ -829,6 +831,66 @@ VLCVarChoiceModel* MainCtx::getExtraInterfaces()
return m_extraInterfaces; return m_extraInterfaces;
} }
bool MainCtx::pasteFromClipboard()
{
assert(qApp);
const QClipboard *const clipboard = qApp->clipboard();
if (Q_UNLIKELY(!clipboard))
return false;
const QMimeData *mimeData = clipboard->mimeData(QClipboard::Selection);
if (!mimeData || !mimeData->hasUrls())
mimeData = clipboard->mimeData(QClipboard::Clipboard);
if (Q_UNLIKELY(!mimeData))
return false;
QList<QUrl> urlList = mimeData->urls();
QString text = mimeData->text();
if (urlList.count() > 1 || text.contains('\n'))
{
// NOTE: The reason that mime data for `text/uri-list` is not used
// directly as the placeholder of the input dialog instead of
// re-constructing is to decode the urls in the list.
QString placeholder;
if (urlList.isEmpty())
{
placeholder = std::move(text);
}
else
{
for (const auto& i : urlList)
placeholder += i.toString(QUrl::PrettyDecoded) + '\n';
placeholder.chop(1);
}
bool ok = false;
const QString ret = QInputDialog::getMultiLineText(nullptr,
qtr("Paste from clipboard"),
qtr("Do you want to enqueue the following URLs into the playlist?"),
placeholder,
&ok);
if (!ok)
return false;
for (const auto& i : QStringView(ret).split('\n'))
{
if (i.length() > 0)
THEMPL->append(i.trimmed().toString(), false);
}
return true;
}
else if ((urlList.count() == 1) || mimeData->hasText())
{
THEDP->openUrlDialog();
return true;
}
return false;
}
/***************************************************************************** /*****************************************************************************
* PopupMenuCB: callback triggered by the intf-popupmenu playlist variable. * PopupMenuCB: callback triggered by the intf-popupmenu playlist variable.
* We don't show the menu directly here because we don't want the * We don't show the menu directly here because we don't want the
......
...@@ -439,6 +439,8 @@ public slots: ...@@ -439,6 +439,8 @@ public slots:
virtual void reloadPrefs(); virtual void reloadPrefs();
VLCVarChoiceModel* getExtraInterfaces(); VLCVarChoiceModel* getExtraInterfaces();
bool pasteFromClipboard();
protected slots: protected slots:
void onInputChanged( bool ); void onInputChanged( bool );
......
...@@ -103,8 +103,8 @@ FocusScope { ...@@ -103,8 +103,8 @@ FocusScope {
Widgets.RoundImage { Widgets.RoundImage {
source: artist.cover || VLCStyle.noArtArtist source: artist.cover || VLCStyle.noArtArtist
sourceSize.width: width sourceSize.width: width * Screen.devicePixelRatio
sourceSize.height: height sourceSize.height: height * Screen.devicePixelRatio
anchors.fill: parent anchors.fill: parent
radius: VLCStyle.cover_normal radius: VLCStyle.cover_normal
} }
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/ *****************************************************************************/
import QtQuick import QtQuick
import QtQuick.Window
import QtQuick.Controls import QtQuick.Controls
import QtQuick.Layouts import QtQuick.Layouts
import QtQml.Models import QtQml.Models
...@@ -125,8 +126,8 @@ FocusScope { ...@@ -125,8 +126,8 @@ FocusScope {
source: (root.model && root.model.cover && root.model.cover !== "") source: (root.model && root.model.cover && root.model.cover !== "")
? root.model.cover ? root.model.cover
: VLCStyle.noArtAlbumCover : VLCStyle.noArtAlbumCover
sourceSize.width: width sourceSize.width: width * Screen.devicePixelRatio
sourceSize.height: height sourceSize.height: height * Screen.devicePixelRatio
Widgets.DefaultShadow { Widgets.DefaultShadow {
anchors.centerIn: parent anchors.centerIn: parent
......
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
*****************************************************************************/ *****************************************************************************/
import QtQuick import QtQuick
import QtQuick.Window
import QtQuick.Templates as T import QtQuick.Templates as T
import QtQuick.Layouts import QtQuick.Layouts
import QtQml.Models import QtQml.Models
...@@ -166,8 +167,8 @@ T.ItemDelegate { ...@@ -166,8 +167,8 @@ T.ItemDelegate {
source: (model.cover) ? model.cover source: (model.cover) ? model.cover
: VLCStyle.noArtArtistSmall : VLCStyle.noArtArtistSmall
sourceSize.width: width sourceSize.width: width * Screen.devicePixelRatio
sourceSize.height: height sourceSize.height: height * Screen.devicePixelRatio
Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/ *****************************************************************************/
import QtQuick import QtQuick
import QtQuick.Window
import QtQuick.Controls import QtQuick.Controls
import QtQml.Models import QtQml.Models
import QtQuick.Layouts import QtQuick.Layouts
...@@ -113,8 +114,8 @@ FocusScope { ...@@ -113,8 +114,8 @@ FocusScope {
anchors.fill: parent anchors.fill: parent
source: model.thumbnail || VLCStyle.noArtVideoCover source: model.thumbnail || VLCStyle.noArtVideoCover
sourceSize.width: width sourceSize.width: width * Screen.devicePixelRatio
sourceSize.height: height sourceSize.height: height * Screen.devicePixelRatio
radius: VLCStyle.gridCover_radius radius: VLCStyle.gridCover_radius
Widgets.DefaultShadow { Widgets.DefaultShadow {
......
...@@ -28,7 +28,7 @@ Item { ...@@ -28,7 +28,7 @@ Item {
ShortcutExt{ sequence:"Ctrl+D"; onActivated: DialogsProvider.openDiscDialog(); } ShortcutExt{ sequence:"Ctrl+D"; onActivated: DialogsProvider.openDiscDialog(); }
ShortcutExt{ sequence:"Ctrl+N"; onActivated: DialogsProvider.openNetDialog(); } ShortcutExt{ sequence:"Ctrl+N"; onActivated: DialogsProvider.openNetDialog(); }
ShortcutExt{ sequence:"Ctrl+C"; onActivated: DialogsProvider.openCaptureDialog(); } ShortcutExt{ sequence:"Ctrl+C"; onActivated: DialogsProvider.openCaptureDialog(); }
ShortcutExt{ sequence:"Ctrl+V"; onActivated: DialogsProvider.openUrlDialog(); } ShortcutExt{ sequence: StandardKey.Paste; onActivated: MainCtx.pasteFromClipboard(); }
ShortcutExt{ context: Qt.WindowShortcut; sequence:"Ctrl+Y"; onActivated: DialogsProvider.savePlayingToPlaylist(); } ShortcutExt{ context: Qt.WindowShortcut; sequence:"Ctrl+Y"; onActivated: DialogsProvider.savePlayingToPlaylist(); }
ShortcutExt{ sequence:"Ctrl+R"; onActivated: DialogsProvider.openAndTranscodingDialogs(); } ShortcutExt{ sequence:"Ctrl+R"; onActivated: DialogsProvider.openAndTranscodingDialogs(); }
ShortcutExt{ sequence:"Ctrl+S"; onActivated: DialogsProvider.openAndStreamingDialogs(); } ShortcutExt{ sequence:"Ctrl+S"; onActivated: DialogsProvider.openAndStreamingDialogs(); }
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/ *****************************************************************************/
import QtQuick import QtQuick
import QtQuick.Window
import QtQuick.Templates as T import QtQuick.Templates as T
import QtQml.Models import QtQml.Models
...@@ -471,7 +472,7 @@ Item { ...@@ -471,7 +472,7 @@ Item {
height: coverSize height: coverSize
radius: bg.radius radius: bg.radius
source: modelData.artwork ?? "" source: modelData.artwork ?? ""
sourceSize: dragItem.imageSourceSize ?? Qt.size(width, height) sourceSize: dragItem.imageSourceSize ?? Qt.size(width * Screen.devicePixelRatio, height * Screen.devicePixelRatio)
onStatusChanged: { onStatusChanged: {
if (status === Image.Ready) if (status === Image.Ready)
......
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/ *****************************************************************************/
import QtQuick import QtQuick
import QtQuick.Window
import QtQuick.Controls import QtQuick.Controls
...@@ -82,8 +83,8 @@ Rectangle { ...@@ -82,8 +83,8 @@ Rectangle {
radius: root.radius radius: root.radius
sourceSize.width: root.pictureWidth sourceSize.width: root.pictureWidth * Screen.devicePixelRatio
sourceSize.height: root.pictureHeight sourceSize.height: root.pictureHeight * Screen.devicePixelRatio
onStatusChanged: { onStatusChanged: {
if (status === Image.Loading) { if (status === Image.Loading) {
...@@ -112,8 +113,8 @@ Rectangle { ...@@ -112,8 +113,8 @@ Rectangle {
// try to release the resources otherwise // try to release the resources otherwise
source: visible ? root.fallbackImageSource : "" source: visible ? root.fallbackImageSource : ""
sourceSize.width: root.pictureWidth sourceSize.width: root.pictureWidth * Screen.devicePixelRatio
sourceSize.height: root.pictureHeight sourceSize.height: root.pictureHeight * Screen.devicePixelRatio
cache: true cache: true
} }
......
...@@ -196,6 +196,21 @@ tc_vaegl_update(const struct vlc_gl_interop *interop, uint32_t textures[], ...@@ -196,6 +196,21 @@ tc_vaegl_update(const struct vlc_gl_interop *interop, uint32_t textures[],
(void) plane_offset; (void) plane_offset;
struct priv *priv = interop->priv; struct priv *priv = interop->priv;
vlc_object_t *o = VLC_OBJECT(interop->gl); vlc_object_t *o = VLC_OBJECT(interop->gl);
if (pic == priv->last.pic)
{
#if VA_CHECK_VERSION(1, 1, 0)
for (unsigned i = 0; i < priv->last.va_surface_descriptor.num_layers; ++i)
#else
for (unsigned i = 0; i < priv->last.va_image.num_planes; ++i)
#endif
{
priv->gl.BindTexture(interop->tex_target, textures[i]);
priv->glEGLImageTargetTexture2DOES(interop->tex_target, priv->last.egl_images[i]);
}
return VLC_SUCCESS;
}
#if VA_CHECK_VERSION(1, 1, 0) #if VA_CHECK_VERSION(1, 1, 0)
VADRMPRIMESurfaceDescriptor va_surface_descriptor; VADRMPRIMESurfaceDescriptor va_surface_descriptor;
#else #else
...@@ -206,43 +221,30 @@ tc_vaegl_update(const struct vlc_gl_interop *interop, uint32_t textures[], ...@@ -206,43 +221,30 @@ tc_vaegl_update(const struct vlc_gl_interop *interop, uint32_t textures[],
bool release_image = false, release_buffer_info = false; bool release_image = false, release_buffer_info = false;
unsigned num_planes = 0; unsigned num_planes = 0;
if (pic == priv->last.pic)
{
#if VA_CHECK_VERSION(1, 1, 0) #if VA_CHECK_VERSION(1, 1, 0)
va_surface_descriptor = priv->last.va_surface_descriptor; VA_CALL(o, vaSyncSurface, priv->vadpy, vlc_vaapi_PicGetSurface(pic));
#else if (vlc_vaapi_ExportSurfaceHandle(o, priv->vadpy, vlc_vaapi_PicGetSurface(pic),
va_image = priv->last.va_image; VA_SURFACE_ATTRIB_MEM_TYPE_DRM_PRIME_2,
#endif VA_EXPORT_SURFACE_READ_ONLY | VA_EXPORT_SURFACE_SEPARATE_LAYERS,
for (unsigned i = 0; i < priv->last.num_planes; ++i) &va_surface_descriptor))
egl_images[i] = priv->last.egl_images[i]; goto error;
} release_image = true;
else
{
#if VA_CHECK_VERSION(1, 1, 0)
VA_CALL(o, vaSyncSurface, priv->vadpy, vlc_vaapi_PicGetSurface(pic));
if (vlc_vaapi_ExportSurfaceHandle(o, priv->vadpy, vlc_vaapi_PicGetSurface(pic),
VA_SURFACE_ATTRIB_MEM_TYPE_DRM_PRIME_2,
VA_EXPORT_SURFACE_READ_ONLY | VA_EXPORT_SURFACE_SEPARATE_LAYERS,
&va_surface_descriptor))
goto error;
release_image = true;
#else #else
if (vlc_vaapi_DeriveImage(o, priv->vadpy, vlc_vaapi_PicGetSurface(pic), if (vlc_vaapi_DeriveImage(o, priv->vadpy, vlc_vaapi_PicGetSurface(pic),
&va_image)) &va_image))
goto error; goto error;
release_image = true; release_image = true;
assert(va_image.format.fourcc == priv->fourcc); assert(va_image.format.fourcc == priv->fourcc);
va_buffer_info = (VABufferInfo) { va_buffer_info = (VABufferInfo) {
.mem_type = VA_SURFACE_ATTRIB_MEM_TYPE_DRM_PRIME .mem_type = VA_SURFACE_ATTRIB_MEM_TYPE_DRM_PRIME
}; };
if (vlc_vaapi_AcquireBufferHandle(o, priv->vadpy, va_image.buf, if (vlc_vaapi_AcquireBufferHandle(o, priv->vadpy, va_image.buf,
&va_buffer_info)) &va_buffer_info))
goto error; goto error;
#endif #endif
release_buffer_info = true; release_buffer_info = true;
}
#if VA_CHECK_VERSION(1, 1, 0) #if VA_CHECK_VERSION(1, 1, 0)
num_planes = va_surface_descriptor.num_layers; num_planes = va_surface_descriptor.num_layers;
...@@ -282,22 +284,19 @@ tc_vaegl_update(const struct vlc_gl_interop *interop, uint32_t textures[], ...@@ -282,22 +284,19 @@ tc_vaegl_update(const struct vlc_gl_interop *interop, uint32_t textures[],
} }
#endif #endif
if (pic != priv->last.pic) if (priv->last.pic != NULL)
{ vaegl_release_last_pic(interop, priv);
if (priv->last.pic != NULL) priv->last.pic = picture_Hold(pic);
vaegl_release_last_pic(interop, priv);
priv->last.pic = picture_Hold(pic);
#if VA_CHECK_VERSION(1, 1, 0) #if VA_CHECK_VERSION(1, 1, 0)
priv->last.va_surface_descriptor = va_surface_descriptor; priv->last.va_surface_descriptor = va_surface_descriptor;
#else #else
priv->last.va_image = va_image; priv->last.va_image = va_image;
priv->last.va_buffer_info = va_buffer_info; priv->last.va_buffer_info = va_buffer_info;
#endif #endif
priv->last.num_planes = num_planes; priv->last.num_planes = num_planes;
for (unsigned i = 0; i < num_planes; ++i) for (unsigned i = 0; i < num_planes; ++i)
priv->last.egl_images[i] = egl_images[i]; priv->last.egl_images[i] = egl_images[i];
}
return VLC_SUCCESS; return VLC_SUCCESS;
......