callbacks working

This commit is contained in:
David Rose 2009-06-14 17:38:12 +00:00
parent aee00fc3de
commit 7b8edf65b4
2 changed files with 24 additions and 3 deletions

View File

@ -396,7 +396,8 @@ extract_archive() {
////////////////////////////////////////////////////////////////////
void P3DPackage::
report_done(bool success) {
cerr << "report_done(" << success << ")\n";
cerr << "report_done(" << success << "), "
<< _callbacks.size() << " callbacks\n";
if (success) {
_ready = true;
_failed = false;
@ -503,6 +504,15 @@ stream_hex(ostream &out, const unsigned char *source, size_t size) {
}
}
////////////////////////////////////////////////////////////////////
// Function: P3DPackage::Callback::package_ready
// Access: Public
// Description:
////////////////////////////////////////////////////////////////////
void P3DPackage::Callback::
package_ready(P3DPackage *package, bool success) {
}
////////////////////////////////////////////////////////////////////
// Function: P3DPackage::Download::Constructor
// Access: Public

View File

@ -141,7 +141,7 @@ start_instance(P3DInstance *inst) {
start_p3dpython();
} else {
// Otherwise, set a callback, so we'll know when it is ready.
if (_panda3d_callback != NULL) {
if (_panda3d_callback == NULL) {
_panda3d_callback = new PackageCallback(this);
_panda3d->set_callback(_panda3d_callback);
}
@ -635,7 +635,8 @@ posix_create_process(const string &program, const string &start_dir,
// Description:
////////////////////////////////////////////////////////////////////
P3DSession::PackageCallback::
PackageCallback(P3DSession *session) {
PackageCallback(P3DSession *session) : _session(session)
{
}
////////////////////////////////////////////////////////////////////
@ -645,5 +646,15 @@ PackageCallback(P3DSession *session) {
////////////////////////////////////////////////////////////////////
void P3DSession::PackageCallback::
package_ready(P3DPackage *package, bool success) {
if (this == _session->_panda3d_callback) {
_session->_panda3d_callback = NULL;
if (package == _session->_panda3d) {
_session->start_p3dpython();
} else {
cerr << "Unexpected panda3d package: " << package << "\n";
}
} else {
cerr << "Unexpected callback for P3DSession\n";
}
}