xref: /OK3568_Linux_fs/buildroot/package/mtp/0001-Fix-compile-error.patch (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593SmuzhiyunFrom 2bf12a6c7c52f88fd9ef4cd5652d1391a7b3f25c Mon Sep 17 00:00:00 2001
2*4882a593SmuzhiyunFrom: "zain.wang" <wzz@rock-chips.com>
3*4882a593SmuzhiyunDate: Thu, 9 Aug 2018 10:22:20 +0800
4*4882a593SmuzhiyunSubject: [PATCH 1/3] Fix compile error
5*4882a593Smuzhiyun
6*4882a593SmuzhiyunRemove some code about dbus and properties.
7*4882a593Smuzhiyun
8*4882a593SmuzhiyunSigned-off-by: zain.wang <wzz@rock-chips.com>
9*4882a593Smuzhiyun---
10*4882a593Smuzhiyun CMakeLists.txt        |   3 +-
11*4882a593Smuzhiyun server/CMakeLists.txt |   1 -
12*4882a593Smuzhiyun server/server.cpp     | 120 +-----------------------------------------
13*4882a593Smuzhiyun src/MtpServer.cpp     |  10 ++--
14*4882a593Smuzhiyun 4 files changed, 7 insertions(+), 127 deletions(-)
15*4882a593Smuzhiyun
16*4882a593Smuzhiyundiff --git a/CMakeLists.txt b/CMakeLists.txt
17*4882a593Smuzhiyunindex 46bff47..707b7f8 100644
18*4882a593Smuzhiyun--- a/CMakeLists.txt
19*4882a593Smuzhiyun+++ b/CMakeLists.txt
20*4882a593Smuzhiyun@@ -14,7 +14,7 @@ set(MTP_VERSION_MINOR 0)
21*4882a593Smuzhiyun set(MTP_VERSION_PATCH 0)
22*4882a593Smuzhiyun
23*4882a593Smuzhiyun find_package(Boost REQUIRED COMPONENTS thread system filesystem unit_test_framework)
24*4882a593Smuzhiyun-pkg_check_modules(DBUSCPP REQUIRED dbus-cpp)
25*4882a593Smuzhiyun+pkg_check_modules(DBUSCPP REQUIRED dbus-c++-1)
26*4882a593Smuzhiyun pkg_check_modules(GLOG REQUIRED libglog)
27*4882a593Smuzhiyun
28*4882a593Smuzhiyun set(
29*4882a593Smuzhiyun@@ -71,7 +71,6 @@ add_library(
30*4882a593Smuzhiyun
31*4882a593Smuzhiyun target_link_libraries(
32*4882a593Smuzhiyun   mtpserver
33*4882a593Smuzhiyun-  android-properties
34*4882a593Smuzhiyun   ${GLOG_LIBRARIES}
35*4882a593Smuzhiyun   ${DBUSCPP_LIBRARIES}
36*4882a593Smuzhiyun )
37*4882a593Smuzhiyundiff --git a/server/CMakeLists.txt b/server/CMakeLists.txt
38*4882a593Smuzhiyunindex 411ff46..9acb974 100644
39*4882a593Smuzhiyun--- a/server/CMakeLists.txt
40*4882a593Smuzhiyun+++ b/server/CMakeLists.txt
41*4882a593Smuzhiyun@@ -11,7 +11,6 @@ target_link_libraries(
42*4882a593Smuzhiyun     mtp-server
43*4882a593Smuzhiyun     mtpserver
44*4882a593Smuzhiyun     usbhost
45*4882a593Smuzhiyun-    android-properties
46*4882a593Smuzhiyun     ${Boost_LIBRARIES}
47*4882a593Smuzhiyun     ${Boost_thread_LIBRARIES}
48*4882a593Smuzhiyun     ${Boost_system_LIBRARIES}
49*4882a593Smuzhiyundiff --git a/server/server.cpp b/server/server.cpp
50*4882a593Smuzhiyunindex 0a9a846..d08c13c 100644
51*4882a593Smuzhiyun--- a/server/server.cpp
52*4882a593Smuzhiyun+++ b/server/server.cpp
53*4882a593Smuzhiyun@@ -32,73 +32,10 @@
54*4882a593Smuzhiyun #include <libintl.h>
55*4882a593Smuzhiyun #include <locale.h>
56*4882a593Smuzhiyun
57*4882a593Smuzhiyun-#include <hybris/properties/properties.h>
58*4882a593Smuzhiyun #include <glog/logging.h>
59*4882a593Smuzhiyun
60*4882a593Smuzhiyun-#include <core/dbus/bus.h>
61*4882a593Smuzhiyun-#include <core/dbus/object.h>
62*4882a593Smuzhiyun-#include <core/dbus/property.h>
63*4882a593Smuzhiyun-#include <core/dbus/service.h>
64*4882a593Smuzhiyun-#include <core/dbus/signal.h>
65*4882a593Smuzhiyun-
66*4882a593Smuzhiyun-#include <core/dbus/asio/executor.h>
67*4882a593Smuzhiyun-#include <core/dbus/types/stl/tuple.h>
68*4882a593Smuzhiyun-#include <core/dbus/types/stl/vector.h>
69*4882a593Smuzhiyun-#include <core/dbus/types/struct.h>
70*4882a593Smuzhiyun-
71*4882a593Smuzhiyun-
72*4882a593Smuzhiyun-namespace dbus = core::dbus;
73*4882a593Smuzhiyun using namespace android;
74*4882a593Smuzhiyun
75*4882a593Smuzhiyun-namespace core
76*4882a593Smuzhiyun-{
77*4882a593Smuzhiyun-dbus::Bus::Ptr the_session_bus()
78*4882a593Smuzhiyun-{
79*4882a593Smuzhiyun-    static dbus::Bus::Ptr session_bus = std::make_shared<dbus::Bus>(dbus::WellKnownBus::session);
80*4882a593Smuzhiyun-    return session_bus;
81*4882a593Smuzhiyun-}
82*4882a593Smuzhiyun-
83*4882a593Smuzhiyun-struct UnityGreeter
84*4882a593Smuzhiyun-{
85*4882a593Smuzhiyun-    struct Properties
86*4882a593Smuzhiyun-    {
87*4882a593Smuzhiyun-        struct IsActive
88*4882a593Smuzhiyun-        {
89*4882a593Smuzhiyun-            inline static std::string name()
90*4882a593Smuzhiyun-            {
91*4882a593Smuzhiyun-                return "IsActive";
92*4882a593Smuzhiyun-            };
93*4882a593Smuzhiyun-            typedef UnityGreeter Interface;
94*4882a593Smuzhiyun-            typedef bool ValueType;
95*4882a593Smuzhiyun-            static const bool readable = true;
96*4882a593Smuzhiyun-            static const bool writable = false;
97*4882a593Smuzhiyun-        };
98*4882a593Smuzhiyun-    };
99*4882a593Smuzhiyun-};
100*4882a593Smuzhiyun-}
101*4882a593Smuzhiyun-
102*4882a593Smuzhiyun-namespace core
103*4882a593Smuzhiyun-{
104*4882a593Smuzhiyun-namespace dbus
105*4882a593Smuzhiyun-{
106*4882a593Smuzhiyun-namespace traits
107*4882a593Smuzhiyun-{
108*4882a593Smuzhiyun-template<>
109*4882a593Smuzhiyun-struct Service<core::UnityGreeter>
110*4882a593Smuzhiyun-{
111*4882a593Smuzhiyun-    inline static const std::string& interface_name()
112*4882a593Smuzhiyun-    {
113*4882a593Smuzhiyun-        static const std::string s
114*4882a593Smuzhiyun-        {
115*4882a593Smuzhiyun-            "com.canonical.UnityGreeter"
116*4882a593Smuzhiyun-        };
117*4882a593Smuzhiyun-        return s;
118*4882a593Smuzhiyun-    }
119*4882a593Smuzhiyun-};
120*4882a593Smuzhiyun-}
121*4882a593Smuzhiyun-}
122*4882a593Smuzhiyun-}
123*4882a593Smuzhiyun-
124*4882a593Smuzhiyun namespace
125*4882a593Smuzhiyun {
126*4882a593Smuzhiyun struct FileSystemConfig
127*4882a593Smuzhiyun@@ -114,7 +51,6 @@ class MtpDaemon
128*4882a593Smuzhiyun
129*4882a593Smuzhiyun private:
130*4882a593Smuzhiyun     struct passwd *userdata;
131*4882a593Smuzhiyun-    dbus::Bus::Ptr bus;
132*4882a593Smuzhiyun     boost::thread dbus_thread;
133*4882a593Smuzhiyun
134*4882a593Smuzhiyun     // Mtp stuff
135*4882a593Smuzhiyun@@ -124,8 +60,7 @@ private:
136*4882a593Smuzhiyun     MtpDatabase* mtp_database;
137*4882a593Smuzhiyun
138*4882a593Smuzhiyun     // Security
139*4882a593Smuzhiyun-    std::shared_ptr<core::dbus::Property<core::UnityGreeter::Properties::IsActive> > is_active;
140*4882a593Smuzhiyun-    bool screen_locked = true;
141*4882a593Smuzhiyun+    bool screen_locked = false;
142*4882a593Smuzhiyun
143*4882a593Smuzhiyun     // inotify stuff
144*4882a593Smuzhiyun     boost::thread notifier_thread;
145*4882a593Smuzhiyun@@ -242,17 +177,6 @@ private:
146*4882a593Smuzhiyun         read_more_notify();
147*4882a593Smuzhiyun     }
148*4882a593Smuzhiyun
149*4882a593Smuzhiyun-    void drive_bus()
150*4882a593Smuzhiyun-    {
151*4882a593Smuzhiyun-        try {
152*4882a593Smuzhiyun-            bus->run();
153*4882a593Smuzhiyun-        }
154*4882a593Smuzhiyun-        catch (...) {
155*4882a593Smuzhiyun-            PLOG(ERROR) << "There was an unexpected error in DBus; terminating.";
156*4882a593Smuzhiyun-            server->stop();
157*4882a593Smuzhiyun-        }
158*4882a593Smuzhiyun-    }
159*4882a593Smuzhiyun-
160*4882a593Smuzhiyun public:
161*4882a593Smuzhiyun
162*4882a593Smuzhiyun     MtpDaemon(int fd):
163*4882a593Smuzhiyun@@ -285,28 +209,14 @@ public:
164*4882a593Smuzhiyun                 userdata->pw_gid,
165*4882a593Smuzhiyun                 FileSystemConfig::file_perm,
166*4882a593Smuzhiyun                 FileSystemConfig::directory_perm);
167*4882a593Smuzhiyun-
168*4882a593Smuzhiyun-        // security / screen locking
169*4882a593Smuzhiyun-        bus = core::the_session_bus();
170*4882a593Smuzhiyun-        bus->install_executor(core::dbus::asio::make_executor(bus));
171*4882a593Smuzhiyun-        dbus_thread = boost::thread(&MtpDaemon::drive_bus, this);
172*4882a593Smuzhiyun-        auto greeter_service = dbus::Service::use_service(bus, "com.canonical.UnityGreeter");
173*4882a593Smuzhiyun-        dbus::Object::Ptr greeter = greeter_service->object_for_path(dbus::types::ObjectPath("/"));
174*4882a593Smuzhiyun-
175*4882a593Smuzhiyun-        is_active = greeter->get_property<core::UnityGreeter::Properties::IsActive>();
176*4882a593Smuzhiyun     }
177*4882a593Smuzhiyun
178*4882a593Smuzhiyun     void initStorage()
179*4882a593Smuzhiyun     {
180*4882a593Smuzhiyun-        char product_name[PROP_VALUE_MAX];
181*4882a593Smuzhiyun-
182*4882a593Smuzhiyun-        // Local storage
183*4882a593Smuzhiyun-        property_get ("ro.product.model", product_name, "Ubuntu Touch device");
184*4882a593Smuzhiyun-
185*4882a593Smuzhiyun         home_storage = new MtpStorage(
186*4882a593Smuzhiyun             MTP_STORAGE_FIXED_RAM,
187*4882a593Smuzhiyun             userdata->pw_dir,
188*4882a593Smuzhiyun-	    product_name,
189*4882a593Smuzhiyun+            "MTP",
190*4882a593Smuzhiyun             1024 * 1024 * 100,  /* 100 MB reserved space, to avoid filling the disk */
191*4882a593Smuzhiyun             false,
192*4882a593Smuzhiyun             0  /* Do not check sizes for internal storage */);
193*4882a593Smuzhiyun@@ -360,31 +270,6 @@ public:
194*4882a593Smuzhiyun
195*4882a593Smuzhiyun     void run()
196*4882a593Smuzhiyun     {
197*4882a593Smuzhiyun-        if (is_active->get()) {
198*4882a593Smuzhiyun-            is_active->changed().connect([this](bool active)
199*4882a593Smuzhiyun-            {
200*4882a593Smuzhiyun-                if (!active) {
201*4882a593Smuzhiyun-                    screen_locked = active;
202*4882a593Smuzhiyun-                    VLOG(2) << "device was unlocked, adding storage";
203*4882a593Smuzhiyun-                    if (home_storage && !home_storage_added) {
204*4882a593Smuzhiyun-                        server->addStorage(home_storage);
205*4882a593Smuzhiyun-                        home_storage_added = true;
206*4882a593Smuzhiyun-                    }
207*4882a593Smuzhiyun-                    BOOST_FOREACH(std::string name, removables | boost::adaptors::map_keys) {
208*4882a593Smuzhiyun-                        auto t = removables.at(name);
209*4882a593Smuzhiyun-                        MtpStorage *storage = std::get<0>(t);
210*4882a593Smuzhiyun-                        bool added = std::get<1>(t);
211*4882a593Smuzhiyun-                        if (!added) {
212*4882a593Smuzhiyun-                            mtp_database->addStoragePath(storage->getPath(),
213*4882a593Smuzhiyun-                                                         std::string(),
214*4882a593Smuzhiyun-                                                         storage->getStorageID(),
215*4882a593Smuzhiyun-                                                         true);
216*4882a593Smuzhiyun-                            server->addStorage(storage);
217*4882a593Smuzhiyun-                        }
218*4882a593Smuzhiyun-                    }
219*4882a593Smuzhiyun-                }
220*4882a593Smuzhiyun-            });
221*4882a593Smuzhiyun-        } else {
222*4882a593Smuzhiyun             screen_locked = false;
223*4882a593Smuzhiyun             VLOG(2) << "device is not locked, adding storage";
224*4882a593Smuzhiyun             if (home_storage) {
225*4882a593Smuzhiyun@@ -403,7 +288,6 @@ public:
226*4882a593Smuzhiyun                     server->addStorage(storage);
227*4882a593Smuzhiyun                 }
228*4882a593Smuzhiyun             }
229*4882a593Smuzhiyun-        }
230*4882a593Smuzhiyun
231*4882a593Smuzhiyun         // start the MtpServer main loop
232*4882a593Smuzhiyun         server->run();
233*4882a593Smuzhiyundiff --git a/src/MtpServer.cpp b/src/MtpServer.cpp
234*4882a593Smuzhiyunindex b2d9e9c..ba95c5a 100644
235*4882a593Smuzhiyun--- a/src/MtpServer.cpp
236*4882a593Smuzhiyun+++ b/src/MtpServer.cpp
237*4882a593Smuzhiyun@@ -41,8 +41,6 @@
238*4882a593Smuzhiyun
239*4882a593Smuzhiyun #include <linux/usb/f_mtp.h>
240*4882a593Smuzhiyun
241*4882a593Smuzhiyun-#include <hybris/properties/properties.h>
242*4882a593Smuzhiyun-
243*4882a593Smuzhiyun #include <glog/logging.h>
244*4882a593Smuzhiyun
245*4882a593Smuzhiyun namespace android {
246*4882a593Smuzhiyun@@ -468,7 +466,7 @@ bool MtpServer::handleRequest() {
247*4882a593Smuzhiyun MtpResponseCode MtpServer::doGetDeviceInfo() {
248*4882a593Smuzhiyun     VLOG(1) <<  __PRETTY_FUNCTION__;
249*4882a593Smuzhiyun     MtpStringBuffer   string;
250*4882a593Smuzhiyun-    char prop_value[PROP_VALUE_MAX];
251*4882a593Smuzhiyun+    char prop_value[64];
252*4882a593Smuzhiyun
253*4882a593Smuzhiyun     MtpObjectFormatList* playbackFormats = mDatabase->getSupportedPlaybackFormats();
254*4882a593Smuzhiyun     MtpObjectFormatList* captureFormats = mDatabase->getSupportedCaptureFormats();
255*4882a593Smuzhiyun@@ -500,17 +498,17 @@ MtpResponseCode MtpServer::doGetDeviceInfo() {
256*4882a593Smuzhiyun     mData.putAUInt16(captureFormats); // Capture Formats
257*4882a593Smuzhiyun     mData.putAUInt16(playbackFormats);  // Playback Formats
258*4882a593Smuzhiyun
259*4882a593Smuzhiyun-    property_get("ro.product.manufacturer", prop_value, "unknown manufacturer");
260*4882a593Smuzhiyun+    strcpy(prop_value, "---MANUFACTURER---");
261*4882a593Smuzhiyun     string.set(prop_value);
262*4882a593Smuzhiyun     mData.putString(string);   // Manufacturer
263*4882a593Smuzhiyun
264*4882a593Smuzhiyun-    property_get("ro.product.model", prop_value, "MTP Device");
265*4882a593Smuzhiyun+    strcpy(prop_value, "---MODEL---");
266*4882a593Smuzhiyun     string.set(prop_value);
267*4882a593Smuzhiyun     mData.putString(string);   // Model
268*4882a593Smuzhiyun     string.set("1.0");
269*4882a593Smuzhiyun     mData.putString(string);   // Device Version
270*4882a593Smuzhiyun
271*4882a593Smuzhiyun-    property_get("ro.serialno", prop_value, "????????");
272*4882a593Smuzhiyun+    strcpy(prop_value, "---SERIAL---");
273*4882a593Smuzhiyun     string.set(prop_value);
274*4882a593Smuzhiyun     mData.putString(string);   // Serial Number
275*4882a593Smuzhiyun
276*4882a593Smuzhiyun--
277*4882a593Smuzhiyun2.17.1
278*4882a593Smuzhiyun
279