rhodes 1.5.0 → 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/CHANGELOG CHANGED
@@ -1,3 +1,8 @@
1
+ == 1.5.1
2
+ * Fix issue #2924952 - BB Sim doesn't launch on windows 7
3
+ * Fix issue #2931788 - iPhone: wrong refresh
4
+ * Fix AsyncHttp 'cancel request'
5
+
1
6
  == 1.5.0
2
7
  * native screen resolution for iPad
3
8
  * native tab bar for android
data/bin/rhogen CHANGED
@@ -21,10 +21,10 @@ class String
21
21
  return self
22
22
  end
23
23
  def encoding
24
- if Encoding.responds_to?('new')
25
- Encoding.new()
24
+ if RUBY_VERSION =~ /1\.8/ and Encoding.responds_to?('new')
25
+ Encoding.new
26
26
  else
27
- Encoding.default_external()
27
+ Encoding.default_external
28
28
  end
29
29
  end
30
30
  end
data/lib/build/jake.rb CHANGED
@@ -93,53 +93,62 @@ class Jake
93
93
 
94
94
  conf
95
95
  end
96
-
97
- def self.run(command, args, wd=nil,system = false, hideerrors = false)
98
- argv = []
99
- currentdir = ""
100
- retval = ""
101
- argv << command
102
- argv += args
103
- argv.map! { |x| x.to_s }.map! { |x| x =~ /^".*"$/ ? x[1..-2] : x }
104
96
 
105
- if not wd.nil?
97
+ def self.run2(command, args, options = {})
98
+ argv = []
99
+ currentdir = ""
100
+ retval = ""
101
+ argv << command
102
+ argv += args
103
+ argv.map! { |x| x.to_s }.map! { |x| x =~ /^".*"$/ ? x[1..-2] : x }
104
+
105
+ wd = options[:directory]
106
+ if not wd.nil?
106
107
  currentdir = pwd()
107
- chdir wd
108
+ chdir wd
108
109
  end
109
-
110
+
110
111
  cmdstr = argv.map { |x| x =~ / |\|/ ? '"' + x + '"' : x }.join(' ')
111
112
 
112
113
  puts "PWD: " + pwd
113
114
  puts "CMD: " + cmdstr
114
115
  $stdout.flush
115
-
116
+
117
+ hideerrors = options[:hideerrors]
116
118
  if hideerrors
117
119
  if RUBY_PLATFORM =~ /(win|w)32$/
118
120
  nul = "nul"
119
121
  else
120
122
  nul = "/dev/null"
121
123
  end
122
- argv << "2>" + nul
123
124
  end
124
- #retval = `#{command} #{argstr}`
125
- #retval = %x[#{command}]
126
- if system
125
+
126
+ if options[:system]
127
127
  system(cmdstr)
128
128
  retval = ""
129
129
  else
130
130
  argv = cmdstr if RUBY_VERSION =~ /^1\.8/
131
- IO.popen(argv) { |f|
132
- while line = f.gets
133
- puts line
131
+ if options[:nowait]
132
+ IO.popen(argv)
133
+ else
134
+ IO.popen(argv) do |f|
135
+ while line = f.gets
136
+ puts line
137
+ $stdout.flush
138
+ end
134
139
  end
135
- }
140
+ end
136
141
  end
142
+
137
143
  if not wd.nil?
138
144
  chdir currentdir
139
145
  end
140
-
141
- return retval
146
+
147
+ retval
148
+ end
142
149
 
150
+ def self.run(command, args, wd=nil,system = false, hideerrors = false)
151
+ self.run2(command, args, {:directory => wd, :system => system, :hiderrors => hideerrors})
143
152
  end
144
153
 
145
154
  def self.unjar(src,targetdir)
@@ -1,9 +1,9 @@
1
1
  module Rhodes
2
2
  unless defined? Rhodes::VERSION
3
- VERSION = '1.5.0'
3
+ VERSION = '1.5.1'
4
4
  end
5
5
  unless defined? Rhodes::DBVERSION
6
- DBVERSION = '1.5.0'
6
+ DBVERSION = '1.5.1'
7
7
  end
8
8
 
9
9
  end
@@ -1,8 +1,8 @@
1
1
  module RhodesFramework
2
2
  unless defined? RhodesFramework::VERSION
3
- VERSION = '1.5.0'
3
+ VERSION = '1.5.1'
4
4
  end
5
5
  unless defined? RhodesFramework::DBVERSION
6
- DBVERSION = '1.5.0'
6
+ DBVERSION = '1.5.1'
7
7
  end
8
8
  end
data/lib/rhodes.rb CHANGED
@@ -1,9 +1,9 @@
1
1
  module Rhodes
2
2
  unless defined? Rhodes::VERSION
3
- VERSION = '1.5.0'
3
+ VERSION = '1.5.1'
4
4
  end
5
5
  unless defined? Rhodes::DBVERSION
6
- DBVERSION = '1.5.0'
6
+ DBVERSION = '1.5.1'
7
7
  end
8
8
 
9
9
  end
@@ -1,8 +1,8 @@
1
1
  <?xml version="1.0" encoding="utf-8"?>
2
2
  <manifest xmlns:android="http://schemas.android.com/apk/res/android"
3
3
  package="com.rhomobile.rhodes"
4
- android:versionCode="19"
5
- android:versionName="1.5.0">
4
+ android:versionCode="20"
5
+ android:versionName="1.5.1">
6
6
  <uses-sdk android:minSdkVersion="3" />
7
7
  <application android:icon="@drawable/icon"
8
8
  android:multiprocess="true"
@@ -58,15 +58,7 @@ def startsim
58
58
 
59
59
  args << "/app-param=JvmDebugFile:"+Jake.get_absolute($app_config["applog"])
60
60
 
61
- # Wait until thread will start
62
- rd, wr = IO.pipe
63
- Thread.new {
64
- wr.putc 0
65
- Jake.run(command,args,jde + "/simulator",true)
66
- $stdout.flush
67
- }
68
- rd.getc
69
- sleep 1
61
+ Jake.run2 command, args, {:directory => jde + "/simulator", :nowait => true}
70
62
  end
71
63
 
72
64
  def stopsim
@@ -77,19 +69,8 @@ def stopsim
77
69
  args = []
78
70
  args << "/session="+sim
79
71
  args << "/execute=Exit(true)"
80
- #Jake.run(command,args, jde + "/simulator")
81
- #Thread.new { Jake.run(command,args, nil, true,true) }
82
-
83
- # Wait until thread will start
84
- rd, wr = IO.pipe
85
- Thread.new {
86
- wr.putc 0
87
- Jake.run(command,args, nil, true,true)
88
- $stdout.flush
89
- }
90
- rd.getc
91
- sleep 1
92
72
 
73
+ Jake.run2 command, args, {:directory => jde + "/simulator", :nowait => true}
93
74
  end
94
75
 
95
76
  def manualsign
@@ -1715,6 +1715,9 @@ final public class RhodesApplication extends UiApplication implements RenderingA
1715
1715
  }catch(IOException exc)
1716
1716
  {
1717
1717
  LOG.ERROR("Callback failed: " + _url, exc);
1718
+
1719
+ if ( m_netCallback != null )
1720
+ m_netCallback.setResponse( new NetResponse("", 500) );
1718
1721
  }
1719
1722
  }
1720
1723
  else
@@ -35,6 +35,8 @@ char* get_current_location() {
35
35
  //UNLOCK(current_location);
36
36
  }*/
37
37
 
38
+ extern int webview_active_tab();
39
+
38
40
  @interface UIBarButtonItemAction : NSObject
39
41
  {
40
42
  WebViewController *wc;
@@ -379,9 +381,9 @@ char* get_current_location() {
379
381
  }
380
382
 
381
383
  -(void)refresh {
382
- [webView reload];
383
- //const char* url = rho_rhodesapp_getcurrenturl();
384
- //[self navigateRedirect:[NSString stringWithCString:url encoding:[NSString defaultCStringEncoding]]];
384
+ //[webView reload];
385
+ const char *appUrl = rho_rhodesapp_getcurrenturl(webview_active_tab());
386
+ [self navigate:[NSString stringWithUTF8String:appUrl]];
385
387
  }
386
388
 
387
389
  -(void)onRefresh:(id)sender {
@@ -21,7 +21,7 @@
21
21
  <key>CFBundleSignature</key>
22
22
  <string>????</string>
23
23
  <key>CFBundleVersion</key>
24
- <string>1.5.0</string>
24
+ <string>1.5.1</string>
25
25
  <key>LSRequiresIPhoneOS</key>
26
26
  <true/>
27
27
  </dict>
@@ -114,6 +114,11 @@ public:
114
114
  }
115
115
  }
116
116
 
117
+ void removeElementAt(int nItem)
118
+ {
119
+ delete Vector<Type>::at(nItem);
120
+ Vector<Type>::erase( Vector<Type>::begin() + nItem );
121
+ }
117
122
  };
118
123
 
119
124
  template<class Type>
@@ -156,7 +156,7 @@ void CRhodesApp::stopApp()
156
156
  stop(2000);
157
157
  }
158
158
 
159
- rho_asynchttp_cancel("*");
159
+ rho_asynchttp_destroy();
160
160
  }
161
161
 
162
162
  class CRhoCallbackCall : public common::CRhoThread
@@ -559,8 +559,9 @@ menu_iter(const char* szLabel, const char* szLink, void* pThis)
559
559
 
560
560
  void CRhodesApp::setViewMenu(unsigned long valMenu)
561
561
  {
562
- synchronized(m_mxViewMenuItems)
563
562
  {
563
+ synchronized(m_mxViewMenuItems)
564
+
564
565
  m_hashViewMenuItems.clear();
565
566
  m_strAppBackUrl="";
566
567
  }
@@ -878,7 +879,7 @@ const char* rho_ruby_getMessageText(const char* szName)
878
879
 
879
880
  int rho_rhodesapp_isrubycompiler()
880
881
  {
881
- return 1;
882
+ return 0;
882
883
  }
883
884
 
884
885
  int rho_conf_send_log()
@@ -13,7 +13,7 @@ namespace net
13
13
  IMPLEMENT_LOGCLASS(CAsyncHttp, "AsyncHttp");
14
14
  boolean CAsyncHttp::m_bNoThreaded = false;
15
15
  common::CMutex CAsyncHttp::m_mxInstances;
16
- Vector<CAsyncHttp*> CAsyncHttp::m_arInstances;
16
+ VectorPtr<CAsyncHttp*> CAsyncHttp::m_arInstances;
17
17
 
18
18
  extern "C" void header_iter(const char* szName, const char* szValue, void* pHash)
19
19
  {
@@ -23,6 +23,7 @@ extern "C" void header_iter(const char* szName, const char* szValue, void* pHash
23
23
  CAsyncHttp::CAsyncHttp(common::IRhoClassFactory* factory, EHttpCommands eCmd,
24
24
  const char* url, unsigned long headers, const char* body, const char* callback, const char* callback_params) : CRhoThread(factory)
25
25
  {
26
+ m_bFinished = false;
26
27
  m_ptrFactory = factory;
27
28
  m_strUrl = url != null ? url : "";
28
29
  m_strBody = body != null ? body : "";
@@ -32,10 +33,7 @@ CAsyncHttp::CAsyncHttp(common::IRhoClassFactory* factory, EHttpCommands eCmd,
32
33
 
33
34
  rho_ruby_enum_strhash(headers, &header_iter, &m_mapHeaders);
34
35
 
35
- {
36
- synchronized(m_mxInstances);
37
- m_arInstances.addElement(this);
38
- }
36
+ addNewObject(this);
39
37
 
40
38
  if (m_bNoThreaded)
41
39
  run();
@@ -43,24 +41,46 @@ CAsyncHttp::CAsyncHttp(common::IRhoClassFactory* factory, EHttpCommands eCmd,
43
41
  start(epLow);
44
42
  }
45
43
 
46
- CAsyncHttp::~CAsyncHttp()
44
+ void CAsyncHttp::cancel(boolean bWait)
47
45
  {
48
- synchronized(m_mxInstances)
49
46
  {
50
- m_arInstances.removeElement(this);
47
+ synchronized(m_mxRequest)
48
+
49
+ if (m_pNetRequest!=null && !m_pNetRequest->isCancelled() )
50
+ m_pNetRequest->cancel();
51
51
  }
52
+
53
+ if ( bWait )
54
+ stop(-1);
52
55
  }
53
56
 
54
- void CAsyncHttp::cancel()
57
+ /*static*/ void CAsyncHttp::addNewObject(CAsyncHttp* pObj)
55
58
  {
56
- if (m_pNetRequest!=null)
57
- m_pNetRequest->cancel();
59
+ synchronized(m_mxInstances)
60
+ {
61
+ while(1)
62
+ {
63
+ int nToDelete = -1;
64
+ for (int i = 0; i < (int)m_arInstances.size(); i++ )
65
+ {
66
+ if ( m_arInstances.elementAt(i)->m_bFinished )
67
+ {
68
+ nToDelete = i;
69
+ break;
70
+ }
71
+ }
72
+
73
+ if (nToDelete==-1)
74
+ break;
58
75
 
59
- stop(1000);
60
- delete this;
76
+ m_arInstances.removeElementAt(nToDelete);
77
+ }
78
+
79
+ m_arInstances.addElement(pObj);
80
+ }
61
81
  }
62
82
 
63
- /*static*/ void CAsyncHttp::cancelRequest(const char* szCallback)
83
+ /*static*/ void CAsyncHttp::cancelRequest(const char* szCallback, boolean bWait)
64
84
  {
65
85
  if (!szCallback || !*szCallback )
66
86
  {
@@ -73,13 +93,13 @@ void CAsyncHttp::cancel()
73
93
  if ( *szCallback == '*')
74
94
  {
75
95
  for (int i = 0; i < (int)m_arInstances.size(); i++ )
76
- m_arInstances.elementAt(i)->cancel();
96
+ m_arInstances.elementAt(i)->cancel(bWait);
77
97
  }else
78
98
  {
79
99
  for (int i = 0; i < (int)m_arInstances.size(); i++ )
80
100
  {
81
101
  if ( m_arInstances.elementAt(i)->m_strCallback.compare(szCallback) == 0 )
82
- m_arInstances.elementAt(i)->cancel();
102
+ m_arInstances.elementAt(i)->cancel(bWait);
83
103
  }
84
104
  }
85
105
  }
@@ -89,7 +109,10 @@ void CAsyncHttp::run()
89
109
  {
90
110
  LOG(INFO) + "RhoHttp thread start.";
91
111
 
92
- m_pNetRequest = m_ptrFactory->createNetRequest();
112
+ {
113
+ synchronized(m_mxRequest)
114
+ m_pNetRequest = m_ptrFactory->createNetRequest();
115
+ }
93
116
 
94
117
  switch( m_eCmd )
95
118
  {
@@ -117,8 +140,7 @@ void CAsyncHttp::run()
117
140
 
118
141
  LOG(INFO) + "RhoHttp thread end.";
119
142
 
120
- if ( !m_pNetRequest->isCancelled() )
121
- delete this;
143
+ m_bFinished = true;
122
144
  }
123
145
 
124
146
  String CAsyncHttp::makeHeadersString()
@@ -211,10 +233,13 @@ void CAsyncHttp::callNotify(rho::net::INetResponse& resp, int nError )
211
233
  rho_ruby_set_const( strName.c_str(), strBody.c_str());
212
234
  }else
213
235
  {
214
- m_pNetRequest = m_ptrFactory->createNetRequest();
215
-
216
- String strFullUrl = m_pNetRequest->resolveUrl(m_strCallback);
217
- NetResponse(resp1,m_pNetRequest->pushData( strFullUrl, strBody, null ));
236
+ // {
237
+ // synchronized(m_mxRequest)
238
+ // m_pNetRequest = m_ptrFactory->createNetRequest();
239
+ // }
240
+ common::CAutoPtr<INetRequest> pNetRequest = m_ptrFactory->createNetRequest();
241
+ String strFullUrl = pNetRequest->resolveUrl(m_strCallback);
242
+ NetResponse(resp1,pNetRequest->pushData( strFullUrl, strBody, null ));
218
243
  if ( !resp1.isOK() )
219
244
  LOG(ERROR) + "AsyncHttp notification failed. Code: " + resp1.getRespCode() + "; Error body: " + resp1.getCharData();
220
245
  }
@@ -251,7 +276,12 @@ void rho_asynchttp_uploadfile(const char* url, unsigned long headers, const char
251
276
 
252
277
  void rho_asynchttp_cancel(const char* cancel_callback)
253
278
  {
254
- CAsyncHttp::cancelRequest(cancel_callback);
279
+ CAsyncHttp::cancelRequest(cancel_callback, false);
280
+ }
281
+
282
+ void rho_asynchttp_destroy()
283
+ {
284
+ CAsyncHttp::cancelRequest("*", true);
255
285
  }
256
286
 
257
287
  void rho_asynchttp_set_threaded_mode(int b)
@@ -17,14 +17,16 @@ class CAsyncHttp : public common::CRhoThread, rho::ICallbackObject
17
17
  DEFINE_LOGCLASS;
18
18
 
19
19
  static common::CMutex m_mxInstances;
20
- static Vector<CAsyncHttp*> m_arInstances;
20
+ static VectorPtr<CAsyncHttp*> m_arInstances;
21
21
  common::CAutoPtr<common::IRhoClassFactory> m_ptrFactory;
22
+ common::CMutex m_mxRequest;
22
23
 
23
24
  common::CAutoPtr<INetRequest> m_pNetRequest;
24
25
  common::CAutoPtr<INetResponse> m_pNetResponse;
25
26
  Hashtable<String,String> m_mapHeaders;
26
27
 
27
28
  String m_strUrl, m_strBody, m_strCallback, m_strCallbackParams;
29
+ boolean m_bFinished;
28
30
  public:
29
31
  enum EHttpCommands{ hcGet = 0, hcPost, hcDownload, hcUpload };
30
32
  private:
@@ -35,11 +37,10 @@ public:
35
37
 
36
38
  CAsyncHttp(common::IRhoClassFactory* factory, EHttpCommands eCmd,
37
39
  const char* url, unsigned long headers, const char* body, const char* callback, const char* callback_params);
38
- ~CAsyncHttp();
39
40
 
40
- void cancel();
41
+ void cancel(boolean bWait);
41
42
 
42
- static void cancelRequest(const char* szCallback);
43
+ static void cancelRequest(const char* szCallback, boolean bWait);
43
44
 
44
45
  //rho::ICallbackObject
45
46
  virtual unsigned long getObjectValue();
@@ -50,7 +51,7 @@ private:
50
51
  void callNotify(INetResponse& resp, int nError );
51
52
 
52
53
  String makeHeadersString();
53
-
54
+ static void addNewObject(CAsyncHttp* pObj);
54
55
  };
55
56
 
56
57
  } // namespace net
@@ -67,6 +68,7 @@ void rho_asynchttp_post(const char* url, unsigned long headers, const char* body
67
68
  void rho_asynchttp_downloadfile(const char* url, unsigned long headers, const char* filename, const char* callback, const char* callback_params);
68
69
  void rho_asynchttp_uploadfile(const char* url, unsigned long headers, const char* filename, const char* callback, const char* callback_params);
69
70
  void rho_asynchttp_cancel(const char* cancel_callback);
71
+ void rho_asynchttp_destroy();
70
72
  void rho_asynchttp_set_threaded_mode(int b);
71
73
 
72
74
  #ifdef __cplusplus
@@ -202,7 +202,7 @@ int _open(const char *path, int oflag, va_list arg)
202
202
 
203
203
  fNumber = get_NewFileNumber();
204
204
  if ( fNumber == 0 )
205
- return -6;
205
+ return -1;
206
206
 
207
207
  wfile = wce_mbtowc(path);
208
208
  if ( (osfh = CreateFileW( wfile,
@@ -235,7 +235,7 @@ int _open(const char *path, int oflag, va_list arg)
235
235
  return fNumber;
236
236
  }
237
237
 
238
- return -6;
238
+ return -1;
239
239
  }
240
240
  /*
241
241
  wchar_t *wfile;
@@ -20,12 +20,15 @@ public class AsyncHttp extends RhoThread
20
20
  private static Object m_mxInstances = new Object();
21
21
  private static Vector/*<CAsyncHttp*>*/ m_arInstances = new Vector();
22
22
  private RhoClassFactory m_ptrFactory;
23
-
23
+ private Object m_mxRequest = new Object();
24
+
24
25
  private NetRequest m_pNetRequest;
25
26
  private NetResponse m_pNetResponse;
26
27
  private Hashtable/*<String,String>*/ m_mapHeaders = new Hashtable();
27
28
 
28
29
  private String m_strUrl, m_strBody, m_strCallback, m_strCallbackParams;
30
+ boolean m_bFinished = false;
31
+
29
32
  private RubyValue m_valBody;
30
33
  public final static int hcGet = 0, hcPost=1, hcDownload=2, hcUpload =3;
31
34
  private int m_eCmd;
@@ -47,10 +50,7 @@ public class AsyncHttp extends RhoThread
47
50
 
48
51
  m_mapHeaders = RhoRuby.enum_strhash(headers);
49
52
 
50
- synchronized(m_mxInstances)
51
- {
52
- m_arInstances.addElement(this);
53
- }
53
+ addNewObject(this);
54
54
 
55
55
  if (m_bNoThreaded)
56
56
  run();
@@ -58,16 +58,46 @@ public class AsyncHttp extends RhoThread
58
58
  start(epLow);
59
59
  }
60
60
 
61
- void cancel()
61
+ void cancel(boolean bWait)
62
62
  {
63
- if (m_pNetRequest!=null)
64
- m_pNetRequest.cancel();
65
-
66
- stop(1000);
63
+ synchronized(m_mxRequest)
64
+ {
65
+ if (m_pNetRequest!=null && !m_pNetRequest.isCancelled())
66
+ m_pNetRequest.cancel();
67
+ }
68
+
69
+ if ( bWait )
70
+ stop(10000);
67
71
  //delete this;
68
72
  }
69
73
 
70
- static void cancelRequest(String szCallback)
74
+ static void addNewObject(AsyncHttp pObj)
75
+ {
76
+ synchronized(m_mxInstances)
77
+ {
78
+ while(true)
79
+ {
80
+ int nToDelete = -1;
81
+ for (int i = 0; i < (int)m_arInstances.size(); i++ )
82
+ {
83
+ if ( ((AsyncHttp)m_arInstances.elementAt(i)).m_bFinished )
84
+ {
85
+ nToDelete = i;
86
+ break;
87
+ }
88
+ }
89
+
90
+ if (nToDelete==-1)
91
+ break;
92
+
93
+ m_arInstances.removeElementAt(nToDelete);
94
+ }
95
+
96
+ m_arInstances.addElement(pObj);
97
+ }
98
+ }
99
+
100
+ static void cancelRequest(String szCallback, boolean bWait)
71
101
  {
72
102
  if (szCallback == null|| szCallback.length() ==0 )
73
103
  {
@@ -80,13 +110,13 @@ public class AsyncHttp extends RhoThread
80
110
  if ( szCallback.compareTo("*") ==0 )
81
111
  {
82
112
  for (int i = 0; i < (int)m_arInstances.size(); i++ )
83
- ((AsyncHttp)m_arInstances.elementAt(i)).cancel();
113
+ ((AsyncHttp)m_arInstances.elementAt(i)).cancel(bWait);
84
114
  }else
85
115
  {
86
116
  for (int i = 0; i < (int)m_arInstances.size(); i++ )
87
117
  {
88
118
  if ( ((AsyncHttp)m_arInstances.elementAt(i)).m_strCallback.compareTo(szCallback) == 0 )
89
- ((AsyncHttp)m_arInstances.elementAt(i)).cancel();
119
+ ((AsyncHttp)m_arInstances.elementAt(i)).cancel(bWait);
90
120
  }
91
121
  }
92
122
  }
@@ -96,8 +126,11 @@ public class AsyncHttp extends RhoThread
96
126
  {
97
127
  LOG.INFO("RhoHttp thread start.");
98
128
 
99
- m_pNetRequest = m_ptrFactory.createNetRequest();
100
-
129
+ synchronized(m_mxRequest)
130
+ {
131
+ m_pNetRequest = m_ptrFactory.createNetRequest();
132
+ }
133
+
101
134
  try{
102
135
  switch( m_eCmd )
103
136
  {
@@ -135,10 +168,8 @@ public class AsyncHttp extends RhoThread
135
168
  }finally
136
169
  {
137
170
  LOG.INFO("RhoHttp thread end.");
171
+ m_bFinished = true;
138
172
  }
139
-
140
- //if ( !m_pNetRequest.isCancelled() )
141
- // delete this;
142
173
  }
143
174
 
144
175
  String makeHeadersString()
@@ -338,7 +369,7 @@ public class AsyncHttp extends RhoThread
338
369
  {
339
370
  try {
340
371
  String cancel_callback = arg.toStr();
341
- AsyncHttp.cancelRequest(cancel_callback);
372
+ AsyncHttp.cancelRequest(cancel_callback, false);
342
373
  } catch(Exception e) {
343
374
  LOG.ERROR("cancel failed", e);
344
375
  throw (e instanceof RubyException ? (RubyException)e : new RubyException(e.getMessage()));
@@ -319,8 +319,9 @@ void CSyncNotify::fireInitialSyncNotification( boolean bFinish, int nErrCode )
319
319
 
320
320
  boolean bRemoveAfterFire = bFinish;
321
321
  String strBody = "", strUrl;
322
- synchronized(m_mxSyncNotifications)
323
322
  {
323
+ synchronized(m_mxSyncNotifications)
324
+
324
325
  if ( m_initialSyncNotify.m_strUrl.length() == 0 )
325
326
  return;
326
327
 
@@ -392,6 +392,17 @@ CNetResponseImpl* CNetRequestImpl::sendStream(common::InputStream* bodyStream)
392
392
  void CNetRequestImpl::cancel()
393
393
  {
394
394
  m_bCancel = true;
395
+
396
+ if ( hRequest )
397
+ InternetCloseHandle(hRequest);
398
+ /* if ( hConnection )
399
+ InternetCloseHandle(hConnection);
400
+ if ( hInet )
401
+ InternetCloseHandle(hInet); */
402
+ /*
403
+ hRequest = 0;
404
+ hConnection = 0;
405
+ hInet = 0;*/
395
406
  }
396
407
 
397
408
  void CNetRequestImpl::close()
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rhodes
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
4
+ prerelease: false
5
+ segments:
6
+ - 1
7
+ - 5
8
+ - 1
9
+ version: 1.5.1
5
10
  platform: ruby
6
11
  authors:
7
12
  - Rhomobile
@@ -14,54 +19,74 @@ default_executable:
14
19
  dependencies:
15
20
  - !ruby/object:Gem::Dependency
16
21
  name: templater
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
20
24
  requirements:
21
25
  - - ">="
22
26
  - !ruby/object:Gem::Version
27
+ segments:
28
+ - 0
29
+ - 5
30
+ - 0
23
31
  version: 0.5.0
24
- version:
32
+ type: :runtime
33
+ version_requirements: *id001
25
34
  - !ruby/object:Gem::Dependency
26
35
  name: rake
27
- type: :runtime
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
36
+ prerelease: false
37
+ requirement: &id002 !ruby/object:Gem::Requirement
30
38
  requirements:
31
39
  - - ">="
32
40
  - !ruby/object:Gem::Version
41
+ segments:
42
+ - 0
43
+ - 8
44
+ - 7
33
45
  version: 0.8.7
34
- version:
46
+ type: :runtime
47
+ version_requirements: *id002
35
48
  - !ruby/object:Gem::Dependency
36
49
  name: activesupport
37
- type: :runtime
38
- version_requirement:
39
- version_requirements: !ruby/object:Gem::Requirement
50
+ prerelease: false
51
+ requirement: &id003 !ruby/object:Gem::Requirement
40
52
  requirements:
41
53
  - - ">="
42
54
  - !ruby/object:Gem::Version
55
+ segments:
56
+ - 2
57
+ - 3
58
+ - 5
43
59
  version: 2.3.5
44
- version:
60
+ type: :runtime
61
+ version_requirements: *id003
45
62
  - !ruby/object:Gem::Dependency
46
63
  name: rdoc
47
- type: :development
48
- version_requirement:
49
- version_requirements: !ruby/object:Gem::Requirement
64
+ prerelease: false
65
+ requirement: &id004 !ruby/object:Gem::Requirement
50
66
  requirements:
51
67
  - - ">="
52
68
  - !ruby/object:Gem::Version
69
+ segments:
70
+ - 2
71
+ - 4
72
+ - 3
53
73
  version: 2.4.3
54
- version:
74
+ type: :development
75
+ version_requirements: *id004
55
76
  - !ruby/object:Gem::Dependency
56
77
  name: diff-lcs
57
- type: :runtime
58
- version_requirement:
59
- version_requirements: !ruby/object:Gem::Requirement
78
+ prerelease: false
79
+ requirement: &id005 !ruby/object:Gem::Requirement
60
80
  requirements:
61
81
  - - ">="
62
82
  - !ruby/object:Gem::Version
83
+ segments:
84
+ - 1
85
+ - 1
86
+ - 2
63
87
  version: 1.1.2
64
- version:
88
+ type: :runtime
89
+ version_requirements: *id005
65
90
  description: Rhodes mobile framework
66
91
  email: dev@rhomobile.com
67
92
  executables:
@@ -5285,18 +5310,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
5285
5310
  requirements:
5286
5311
  - - ">="
5287
5312
  - !ruby/object:Gem::Version
5313
+ segments:
5314
+ - 0
5288
5315
  version: "0"
5289
- version:
5290
5316
  required_rubygems_version: !ruby/object:Gem::Requirement
5291
5317
  requirements:
5292
5318
  - - ">="
5293
5319
  - !ruby/object:Gem::Version
5320
+ segments:
5321
+ - 0
5294
5322
  version: "0"
5295
- version:
5296
5323
  requirements: []
5297
5324
 
5298
5325
  rubyforge_project: rhodes
5299
- rubygems_version: 1.3.5
5326
+ rubygems_version: 1.3.6
5300
5327
  signing_key:
5301
5328
  specification_version: 2
5302
5329
  summary: The Rhodes framework is the easiest way to develop NATIVE apps with full device capabilities (GPS, PIM, camera, etc.) for any smartphone.