Bug 35019

Summary: Can't cross-compile Qt/ARM anymore since r54616 (PluginViewNone.cpp vs. PluginView.cpp)
Product: WebKit Reporter: Mirko Scavazzin <mscavazzin>
Component: New BugsAssignee: Nobody <webkit-unassigned>
Status: RESOLVED DUPLICATE    
Severity: Blocker CC: jhoneycutt, jturcotte
Priority: P2 Keywords: Qt
Version: 528+ (Nightly build)   
Hardware: Other   
OS: Linux   

Description Mirko Scavazzin 2010-02-16 23:39:40 PST
Hi,
I can't cross-compile anymore for Qt/ARM target since the "void PluginView::keepAlive(NPP)" stuff was added in r54614 (http://svnsearch.org/svnsearch/repos/WEBKIT/search?filename=PluginView.cpp#546141117471) 

I get this error at link :

obj/release/PluginViewNone.o: In function `WebCore::PluginView::keepAlive(_NPP*)':
PluginViewNone.cpp:(.text._ZN7WebCore10PluginView9keepAliveEP4_NPP+0x0): multiple definition of `WebCore::PluginView::keepAlive(_NPP*)'
obj/release/PluginView.o:PluginView.cpp:(.text._ZN7WebCore10PluginView9keepAliveEP4_NPP+0x0): first defined here
collect2: ld returned 1 exit status
make[1]: *** [../lib/libQtWebKit.so.4.5.2] Error 1
make[1]: Leaving directory `/localdisk/working/WebKit/WebKitBuild/Release/WebCore'
make: *** [sub-WebCore-make_default-ordered] Error 2


Looks like it happens when ENABLE_NETSCAPE_PLUGIN_API=0
Comment 1 Mirko Scavazzin 2010-02-22 06:38:02 PST
I suggest to change PluginView::keepAlive definition in PluginView.cpp within ENABLE(NETSCAPE_PLUGIN_API) like this below (it works for me) :

#if ENABLE(NETSCAPE_PLUGIN_API)
void PluginView::keepAlive(NPP instance)
{
    PluginView* view = instanceMap().get(instance);
    if (!view)
        return;

    view->keepAlive();
}
#endif
Comment 2 Tor Arne Vestbø 2010-03-10 06:41:26 PST
Please follow the QtWebKit bug reporting guidelines when reporting bugs.

See http://trac.webkit.org/wiki/QtWebKitBugs

Specifically:

  - The 'QtWebKit' component should only be used for bugs/features in the
    public QtWebKit API layer, not to signify that the bug is specific to
    the Qt port of WebKit

      http://trac.webkit.org/wiki/QtWebKitBugs#Component

  - Add the keyword 'Qt' to signal that it's a Qt-related bug

      http://trac.webkit.org/wiki/QtWebKitBugs#Keywords
Comment 3 Tor Arne Vestbø 2010-03-10 07:34:10 PST
(In reply to comment #1)
> I suggest to change PluginView::keepAlive definition in PluginView.cpp within
> ENABLE(NETSCAPE_PLUGIN_API) like this below (it works for me) :
> 
> #if ENABLE(NETSCAPE_PLUGIN_API)
> void PluginView::keepAlive(NPP instance)
> {
>     PluginView* view = instanceMap().get(instance);
>     if (!view)
>         return;
> 
>     view->keepAlive();
> }
> #endif

This change seems to be in trunk already. Please reopen if still valid.
Comment 4 Mirko Scavazzin 2010-04-14 23:53:20 PDT
I get still the same problems.

into PluginView.cpp
please change from this :
-----------------------------------------------------------------------------------------------
#if ENABLE(NETSCAPE_PLUGIN_API)
void PluginView::keepAlive(NPP instance)
{
    PluginView* view = instanceMap().get(instance);
    if (!view)
        return;

    view->keepAlive();
}
#endif

NPError PluginView::getValueStatic(NPNVariable variable, void* value)
{
    LOG(Plugins, "PluginView::getValueStatic(%s)", prettyNameForNPNVariable(variable).data());

    NPError result;
    if (platformGetValueStatic(variable, value, &result))
        return result;

    return NPERR_GENERIC_ERROR;
}
-----------------------------------------------------------------------------------------------




to this:
-----------------------------------------------------------------------------------------------
#if ENABLE(NETSCAPE_PLUGIN_API)
void PluginView::keepAlive(NPP instance)
{
    PluginView* view = instanceMap().get(instance);
    if (!view)
        return;

    view->keepAlive();
}

NPError PluginView::getValueStatic(NPNVariable variable, void* value)
{
    LOG(Plugins, "PluginView::getValueStatic(%s)", prettyNameForNPNVariable(variable).data());

    NPError result;
    if (platformGetValueStatic(variable, value, &result))
        return result;

    return NPERR_GENERIC_ERROR;
}
#endif
-----------------------------------------------------------------------------------------------












and into PluginViewNone.cpp
please change from this :
-----------------------------------------------------------------------------------------------
#if ENABLE(NETSCAPE_PLUGIN_API)
void PluginView::keepAlive(NPP)
{
}
#endif

void PluginView::privateBrowsingStateChanged(bool)
{
}

void PluginView::setJavaScriptPaused(bool)
{
}
-----------------------------------------------------------------------------------------------




to this:
-----------------------------------------------------------------------------------------------
#if ENABLE(NETSCAPE_PLUGIN_API)
void PluginView::keepAlive(NPP)
{
}

void PluginView::privateBrowsingStateChanged(bool)
{
}

void PluginView::setJavaScriptPaused(bool)
{
}
#endif
-----------------------------------------------------------------------------------------------
Comment 5 Mirko Scavazzin 2010-04-14 23:59:10 PDT
I get still the same problems.

into PluginView.cpp
please change from this :
-----------------------------------------------------------------------------------------------
#if ENABLE(NETSCAPE_PLUGIN_API)
void PluginView::keepAlive(NPP instance)
{
    PluginView* view = instanceMap().get(instance);
    if (!view)
        return;

    view->keepAlive();
}
#endif

NPError PluginView::getValueStatic(NPNVariable variable, void* value)
{
    LOG(Plugins, "PluginView::getValueStatic(%s)", prettyNameForNPNVariable(variable).data());

    NPError result;
    if (platformGetValueStatic(variable, value, &result))
        return result;

    return NPERR_GENERIC_ERROR;
}
-----------------------------------------------------------------------------------------------




to this:
-----------------------------------------------------------------------------------------------
#if ENABLE(NETSCAPE_PLUGIN_API)
void PluginView::keepAlive(NPP instance)
{
    PluginView* view = instanceMap().get(instance);
    if (!view)
        return;

    view->keepAlive();
}

NPError PluginView::getValueStatic(NPNVariable variable, void* value)
{
    LOG(Plugins, "PluginView::getValueStatic(%s)", prettyNameForNPNVariable(variable).data());

    NPError result;
    if (platformGetValueStatic(variable, value, &result))
        return result;

    return NPERR_GENERIC_ERROR;
}
#endif
-----------------------------------------------------------------------------------------------












and into PluginViewNone.cpp
please change from this :
-----------------------------------------------------------------------------------------------
#if ENABLE(NETSCAPE_PLUGIN_API)
void PluginView::keepAlive(NPP)
{
}
#endif

void PluginView::privateBrowsingStateChanged(bool)
{
}

void PluginView::setJavaScriptPaused(bool)
{
}
-----------------------------------------------------------------------------------------------




to this:
-----------------------------------------------------------------------------------------------
#if ENABLE(NETSCAPE_PLUGIN_API)
void PluginView::keepAlive(NPP)
{
}

void PluginView::privateBrowsingStateChanged(bool)
{
}

void PluginView::setJavaScriptPaused(bool)
{
}
#endif
-----------------------------------------------------------------------------------------------
Comment 6 Jocelyn Turcotte 2010-04-26 03:54:13 PDT
A patch related to this got landed lately.
Please tell if you still have problems compiling.

*** This bug has been marked as a duplicate of bug 36621 ***