sbDeviceEventBeforeAddedData.cpp
Go to the documentation of this file.
1 /* vim: set sw=2 :miv */
2 /*
3 //
4 // BEGIN SONGBIRD GPL
5 //
6 // This file is part of the Songbird web player.
7 //
8 // Copyright(c) 2005-2008 POTI, Inc.
9 // http://songbirdnest.com
10 //
11 // This file may be licensed under the terms of of the
12 // GNU General Public License Version 2 (the "GPL").
13 //
14 // Software distributed under the License is distributed
15 // on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either
16 // express or implied. See the GPL for the specific language
17 // governing rights and limitations.
18 //
19 // You should have received a copy of the GPL along with this
20 // program. If not, go to http://www.gnu.org/licenses/gpl.html
21 // or write to the Free Software Foundation, Inc.,
22 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
23 //
24 // END SONGBIRD GPL
25 //
26 */
27 
29 
30 #include <nsAutoLock.h>
31 #include <nsAutoPtr.h>
32 
35 
37 : mLock(nsnull)
38 , mContinueAddingDevice(PR_TRUE)
39 {
40 }
41 
43 {
44  if(mLock) {
45  nsAutoLock::DestroyLock(mLock);
46  }
47 }
48 
49 nsresult
51 {
52  NS_ENSURE_ARG_POINTER(aDevice);
53 
54  mLock = nsAutoLock::NewLock("sbDeviceEventBeforeAddedData::mLock");
55  NS_ENSURE_TRUE(mLock, NS_ERROR_OUT_OF_MEMORY);
56 
57  mDevice = aDevice;
58 
59  return NS_OK;
60 }
61 
62 /*static*/ nsresult
64  sbIDevice *aDevice,
65  sbIDeviceEventBeforeAddedData **aBeforeAddedData)
66 {
67  NS_ENSURE_ARG_POINTER(aDevice);
68  NS_ENSURE_ARG_POINTER(aBeforeAddedData);
69 
70  nsRefPtr<sbDeviceEventBeforeAddedData> beforeAddedData;
71  NS_NEWXPCOM(beforeAddedData, sbDeviceEventBeforeAddedData);
72 
73  nsresult rv = beforeAddedData->Init(aDevice);
74  NS_ENSURE_SUCCESS(rv, rv);
75 
76  nsCOMPtr<sbIDeviceEventBeforeAddedData> retval =
77  do_QueryInterface(beforeAddedData, &rv);
78  NS_ENSURE_SUCCESS(rv, rv);
79 
80  retval.forget(aBeforeAddedData);
81 
82  return NS_OK;
83 }
84 
85 NS_IMETHODIMP
86 sbDeviceEventBeforeAddedData::GetContinueAddingDevice(PRBool *aContinueAddingDevice)
87 {
88  NS_ENSURE_TRUE(mLock, NS_ERROR_NOT_INITIALIZED);
89  NS_ENSURE_ARG_POINTER(aContinueAddingDevice);
90 
91  nsAutoLock lock(mLock);
92  *aContinueAddingDevice = mContinueAddingDevice;
93 
94  return NS_OK;
95 }
96 
97 NS_IMETHODIMP
98 sbDeviceEventBeforeAddedData::SetContinueAddingDevice(PRBool aContinueAddingDevice)
99 {
100  NS_ENSURE_TRUE(mLock, NS_ERROR_NOT_INITIALIZED);
101 
102  nsAutoLock lock(mLock);
103  mContinueAddingDevice = aContinueAddingDevice;
104 
105  return NS_OK;
106 }
107 
108 NS_IMETHODIMP
109 sbDeviceEventBeforeAddedData::GetDevice(sbIDevice **aDevice)
110 {
111  NS_ENSURE_TRUE(mLock, NS_ERROR_NOT_INITIALIZED);
112  NS_ENSURE_ARG_POINTER(aDevice);
113 
114  nsAutoLock lock(mLock);
115 
116  NS_ENSURE_TRUE(mDevice, NS_ERROR_UNEXPECTED);
117  NS_ADDREF(*aDevice = mDevice);
118 
119  return NS_OK;
120 }
return NS_OK
NS_DECL_ISUPPORTS NS_DECL_SBIDEVICEEVENTBEFOREADDEDDATA nsresult Init(sbIDevice *aDevice)
static nsresult CreateEventBeforeAddedData(sbIDevice *aDevice, sbIDeviceEventBeforeAddedData **aBeforeAddedData)
NS_IMPL_THREADSAFE_ISUPPORTS1(sbDeviceEventBeforeAddedData, sbIDeviceEventBeforeAddedData) sbDeviceEventBeforeAddedData