diff options
author | Martin Stransky <stransky@anakreon.cz> | 2014-12-01 12:04:12 +0100 |
---|---|---|
committer | Martin Stransky <stransky@anakreon.cz> | 2014-12-01 12:04:12 +0100 |
commit | 90cf500b2ff19af27e5352d4f8b2d5f5a2003811 (patch) | |
tree | 22bff67a8ed34e0a3c3be02da89a358ef710f712 /mozilla-858919-3.patch | |
parent | Build fix i686 (diff) | |
download | librewolf-fedora-ff-90cf500b2ff19af27e5352d4f8b2d5f5a2003811.tar.gz librewolf-fedora-ff-90cf500b2ff19af27e5352d4f8b2d5f5a2003811.tar.bz2 librewolf-fedora-ff-90cf500b2ff19af27e5352d4f8b2d5f5a2003811.zip |
Fixed libnotify patch
Diffstat (limited to 'mozilla-858919-3.patch')
-rw-r--r-- | mozilla-858919-3.patch | 144 |
1 files changed, 0 insertions, 144 deletions
diff --git a/mozilla-858919-3.patch b/mozilla-858919-3.patch deleted file mode 100644 index 7d04cd9..0000000 --- a/mozilla-858919-3.patch +++ /dev/null @@ -1,144 +0,0 @@ -# HG changeset patch -# Parent 531e0bc755b2335dec5aae2a10f4ba454307981d -# User Martin Stransky <stransky@redhat.com> -Bug 858919 - Fixes image loading for libnotify notifications. r=?karlt - -diff --git a/toolkit/system/gnome/nsAlertsIconListener.cpp b/toolkit/system/gnome/nsAlertsIconListener.cpp ---- a/toolkit/system/gnome/nsAlertsIconListener.cpp -+++ b/toolkit/system/gnome/nsAlertsIconListener.cpp -@@ -46,16 +46,31 @@ static void notify_closed_marshal(GClosu - NS_ABORT_IF_FALSE(n_param_values >= 1, "No object in params"); - - nsAlertsIconListener* alert = - static_cast<nsAlertsIconListener*>(closure->data); - alert->SendClosed(); - NS_RELEASE(alert); - } - -+static GdkPixbuf* -+GetPixbufFromImgRequest(imgIRequest* aRequest) -+{ -+ nsCOMPtr<imgIContainer> image; -+ nsresult rv = aRequest->GetImage(getter_AddRefs(image)); -+ if (NS_FAILED(rv)) { -+ return nullptr; -+ } -+ -+ nsCOMPtr<nsIImageToPixbuf> imgToPixbuf = -+ do_GetService("@mozilla.org/widget/image-to-gdk-pixbuf;1"); -+ -+ return imgToPixbuf->ConvertImageToPixbuf(image); -+} -+ - NS_IMPL_ISUPPORTS(nsAlertsIconListener, imgINotificationObserver, - nsIObserver, nsISupportsWeakReference) - - nsAlertsIconListener::nsAlertsIconListener() - : mLoadedFrame(false), - mNotification(nullptr) - { - if (!libNotifyHandle && !libNotifyNotAvail) { -@@ -101,57 +116,55 @@ nsAlertsIconListener::Notify(imgIRequest - } - - return NS_OK; - } - - nsresult - nsAlertsIconListener::OnStopRequest(imgIRequest* aRequest) - { -+ NS_ASSERTION(mIconRequest == aRequest, "aRequest does not match!"); -+ - uint32_t imgStatus = imgIRequest::STATUS_ERROR; - nsresult rv = aRequest->GetImageStatus(&imgStatus); - NS_ENSURE_SUCCESS(rv, rv); - if (imgStatus == imgIRequest::STATUS_ERROR && !mLoadedFrame) { - // We have an error getting the image. Display the notification with no icon. - ShowAlert(nullptr); -- } - -- if (mIconRequest) { -+ // Cancel any pending request - mIconRequest->Cancel(NS_BINDING_ABORTED); - mIconRequest = nullptr; - } -+ - return NS_OK; - } - - nsresult - nsAlertsIconListener::OnStopFrame(imgIRequest* aRequest) - { -- if (aRequest != mIconRequest) -- return NS_ERROR_FAILURE; -+ NS_ASSERTION(mIconRequest == aRequest, "aRequest does not match!"); - - if (mLoadedFrame) - return NS_OK; // only use one frame - -- nsCOMPtr<imgIContainer> image; -- nsresult rv = aRequest->GetImage(getter_AddRefs(image)); -- if (NS_FAILED(rv)) -- return rv; -- -- nsCOMPtr<nsIImageToPixbuf> imgToPixbuf = -- do_GetService("@mozilla.org/widget/image-to-gdk-pixbuf;1"); -- -- GdkPixbuf* imagePixbuf = imgToPixbuf->ConvertImageToPixbuf(image); -- if (!imagePixbuf) -- return NS_ERROR_FAILURE; -- -- ShowAlert(imagePixbuf); -- -- g_object_unref(imagePixbuf); -+ GdkPixbuf* imagePixbuf = GetPixbufFromImgRequest(aRequest); -+ if (!imagePixbuf) { -+ ShowAlert(nullptr); -+ } else { -+ ShowAlert(imagePixbuf); -+ g_object_unref(imagePixbuf); -+ } - - mLoadedFrame = true; -+ -+ // Cancel any pending request (multipart image loading/decoding for instance) -+ mIconRequest->Cancel(NS_BINDING_ABORTED); -+ mIconRequest = nullptr; -+ - return NS_OK; - } - - nsresult - nsAlertsIconListener::ShowAlert(GdkPixbuf* aPixbuf) - { - mNotification = notify_notification_new(mAlertTitle.get(), mAlertText.get(), - nullptr, nullptr); -@@ -196,19 +209,25 @@ nsAlertsIconListener::StartRequest(const - NS_NewURI(getter_AddRefs(imageUri), aImageUrl); - if (!imageUri) - return ShowAlert(nullptr); - - nsCOMPtr<imgILoader> il(do_GetService("@mozilla.org/image/loader;1")); - if (!il) - return ShowAlert(nullptr); - -- return il->LoadImageXPCOM(imageUri, nullptr, nullptr, nullptr, nullptr, -- this, nullptr, nsIRequest::LOAD_NORMAL, nullptr, -- nullptr, getter_AddRefs(mIconRequest)); -+ nsresult rv = il->LoadImageXPCOM(imageUri, nullptr, nullptr, nullptr, nullptr, -+ this, nullptr, nsIRequest::LOAD_NORMAL, nullptr, -+ nullptr, getter_AddRefs(mIconRequest)); -+ if (NS_FAILED(rv)) -+ return rv; -+ -+ mIconRequest->StartDecoding(); -+ -+ return NS_OK; - } - - void - nsAlertsIconListener::SendCallback() - { - if (mAlertListener) - mAlertListener->Observe(nullptr, "alertclickcallback", mAlertCookie.get()); - } |