Don't leak from QPlatformPrinterSupportPlugin::get()
Cache the first QPlatformPrinterSupport returned from the first QPlatformPrinterSupportPlugin, and treat it as an persistent singelton. Change-Id: Ic1c83d7c1cdf4a09723a74e0b9fd485e0b0b3acb Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
This commit is contained in:
parent
e1ec8727ea
commit
b7ba685150
@ -58,15 +58,27 @@ QPlatformPrinterSupportPlugin::~QPlatformPrinterSupportPlugin()
|
||||
{
|
||||
}
|
||||
|
||||
/*!
|
||||
\internal
|
||||
|
||||
Returns a lazily-initialized singleton. Ownership is granted to the
|
||||
QPlatformPrinterSupportPlugin, which is never unloaded or destroyed until
|
||||
application exit, i.e. you can expect this pointer to always be valid and
|
||||
multiple calls to this function will always return the same pointer.
|
||||
*/
|
||||
QPlatformPrinterSupport *QPlatformPrinterSupportPlugin::get()
|
||||
{
|
||||
QStringList k = loader()->keys();
|
||||
if (k.isEmpty())
|
||||
return 0;
|
||||
QPlatformPrinterSupportPlugin *plugin = qobject_cast<QPlatformPrinterSupportPlugin *>(loader()->instance(k.first()));
|
||||
if (!plugin)
|
||||
return 0;
|
||||
return plugin->create(k.first());
|
||||
static QPlatformPrinterSupport *singleton = 0;
|
||||
if (!singleton) {
|
||||
QStringList k = loader()->keys();
|
||||
if (k.isEmpty())
|
||||
return 0;
|
||||
QPlatformPrinterSupportPlugin *plugin = qobject_cast<QPlatformPrinterSupportPlugin *>(loader()->instance(k.first()));
|
||||
if (!plugin)
|
||||
return 0;
|
||||
singleton = plugin->create(k.first());
|
||||
}
|
||||
return singleton;
|
||||
}
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
Loading…
Reference in New Issue
Block a user