~ubuntu-branches/ubuntu/wily/unity/wily

« back to all changes in this revision

Viewing changes to UnityCore/GLibSource.cpp

Merge trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
70
70
  return static_cast<Priority>(prio);
71
71
}
72
72
 
73
 
bool Source::Run(SourceCallback callback)
 
73
bool Source::Run(Callback callback)
74
74
{
75
75
  if (!source_ || source_id_ || IsRunning())
76
76
    return false;
78
78
  callback_ = callback;
79
79
  callback_data_ = new CallBackData(this);
80
80
 
81
 
  g_source_set_callback(source_, Callback, callback_data_, DestroyCallback);
 
81
  g_source_set_callback(source_, SourceCallback, callback_data_, DestroyCallback);
82
82
  source_id_ = g_source_attach(source_, nullptr);
83
83
 
84
84
  return true;
97
97
  return source_id_;
98
98
}
99
99
 
100
 
gboolean Source::Callback(gpointer data)
 
100
gboolean Source::SourceCallback(gpointer data)
101
101
{
102
102
  if (!data)
103
103
    return G_SOURCE_REMOVE;
104
104
 
105
105
  auto self = static_cast<CallBackData*>(data)->self;
106
106
 
107
 
  if (self && !self->callback_.empty() && self->callback_())
 
107
  if (self && self->callback_ && self->callback_())
108
108
  {
109
109
    return G_SOURCE_CONTINUE;
110
110
  }
134
134
}
135
135
 
136
136
 
137
 
Timeout::Timeout(unsigned int milliseconds, SourceCallback cb, Priority prio)
 
137
Timeout::Timeout(unsigned int milliseconds, Callback cb, Priority prio)
138
138
{
139
139
  Init(milliseconds, prio);
140
140
  Run(cb);
152
152
}
153
153
 
154
154
 
155
 
TimeoutSeconds::TimeoutSeconds(unsigned int seconds, SourceCallback cb, Priority prio)
 
155
TimeoutSeconds::TimeoutSeconds(unsigned int seconds, Callback cb, Priority prio)
156
156
{
157
157
  Init(seconds, prio);
158
158
  Run(cb);
170
170
}
171
171
 
172
172
 
173
 
Idle::Idle(SourceCallback cb, Priority prio)
 
173
Idle::Idle(Callback cb, Priority prio)
174
174
{
175
175
  Init(prio);
176
176
  Run(cb);
244
244
  return true;
245
245
}
246
246
 
 
247
Source::Ptr SourceManager::AddTimeout(unsigned int milliseconds, std::string const& nick)
 
248
{
 
249
  auto timeout = std::make_shared<Timeout>(milliseconds);
 
250
 
 
251
  if (Add(timeout, nick))
 
252
  {
 
253
    return timeout;
 
254
  }
 
255
 
 
256
  return nullptr;
 
257
}
 
258
 
 
259
Source::Ptr SourceManager::AddTimeout(unsigned int milliseconds, Source::Callback cb, std::string const& nick)
 
260
{
 
261
  auto timeout = std::make_shared<Timeout>(milliseconds);
 
262
 
 
263
  if (Add(timeout, nick))
 
264
  {
 
265
    timeout->Run(cb);
 
266
    return timeout;
 
267
  }
 
268
 
 
269
  return nullptr;
 
270
}
 
271
 
 
272
Source::Ptr SourceManager::AddTimeoutSeconds(unsigned int seconds, std::string const& nick)
 
273
{
 
274
  auto timeout = std::make_shared<Timeout>(seconds);
 
275
 
 
276
  if (Add(timeout, nick))
 
277
  {
 
278
    return timeout;
 
279
  }
 
280
 
 
281
  return nullptr;
 
282
}
 
283
 
 
284
Source::Ptr SourceManager::AddTimeoutSeconds(unsigned int seconds, Source::Callback cb, std::string const& nick)
 
285
{
 
286
  auto timeout = std::make_shared<TimeoutSeconds>(seconds);
 
287
 
 
288
  if (Add(timeout, nick))
 
289
  {
 
290
    timeout->Run(cb);
 
291
    return timeout;
 
292
  }
 
293
 
 
294
  return nullptr;
 
295
}
 
296
 
 
297
Source::Ptr SourceManager::AddIdle(std::string const& nick)
 
298
{
 
299
  auto idle = std::make_shared<Idle>();
 
300
 
 
301
  if (Add(idle, nick))
 
302
  {
 
303
    return idle;
 
304
  }
 
305
 
 
306
  return nullptr;
 
307
}
 
308
 
 
309
Source::Ptr SourceManager::AddIdle(Source::Callback cb, std::string const& nick)
 
310
{
 
311
  auto idle = std::make_shared<Idle>();
 
312
 
 
313
  if (Add(idle, nick))
 
314
  {
 
315
    idle->Run(cb);
 
316
    return idle;
 
317
  }
 
318
 
 
319
  return nullptr;
 
320
}
 
321
 
247
322
void SourceManager::OnSourceRemoved(unsigned int id)
248
323
{
249
324
  for (auto it = sources_.begin(); it != sources_.end(); ++it)
318
393
    return it->second;
319
394
  }
320
395
 
321
 
  return Source::Ptr();
 
396
  return nullptr;
322
397
}
323
398
 
324
399
}