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:: void P3DPackage::
report_done(bool success) { report_done(bool success) {
cerr << "report_done(" << success << ")\n"; cerr << "report_done(" << success << "), "
<< _callbacks.size() << " callbacks\n";
if (success) { if (success) {
_ready = true; _ready = true;
_failed = false; _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 // Function: P3DPackage::Download::Constructor
// Access: Public // Access: Public

View File

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